Download

tab2pronote.py

Nicolas Mesnier

Mis à jour le 30/04/2022.

tab2pronote.py est une interface graphique écrite en python 3 qui permet de coller les notes et appréciations sur le site « PRONOTE » d’après une colonne de tableur. C’est un logiciel libre, distribué sous licence GPL v3.

Introduction

tab2pronote.py est un script écrit en python 3 qui génère une interface graphique permettant de coller les notes et appréciations sur le site « PRONOTE » d’après une colonne de tableur (libreOffice, MS excel ou autre).

tab2pronote.py permet de :

tab2pronote.py s’appuie sur :

C’est un logiciel libre, distribué sous licence GPL v3.

Téléchargement

La dernière version est la 0.1.3 (30/04/2022).

Type Fichier
code python tab2pronote.py
documentation tab2pronote.pdf

Installation

Introduction

Pour utiliser tab2pronote.py, il est nécessaire d’avoir sur son ordinateur personnel :

Navigateur URL où trouver le pilote
Chrome https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox https://github.com/mozilla/geckodriver/releases
Safari https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Je vous recommande l’utilisation de firefox et de son pilote geckodriver qui sont des logiciels libres performants et dont l’utilisation par tab2pronote.py est la seule qui soit documentée. En fonction de la version de selenium disponible dans vos dépots, prenez les versions du pilote geckodriver et de firefox adaptées.

geckodriver firefox selenium
v0.31.0 >= 91 >= 3.14
v0.30.0 78<=90 3.14<=4.0
v0.29.0 60<=90 3.14<=4.0
v0.25.0 57<=90 3.14<=4.0
v0.20.1 55<=62 >= 3.5

Voir ici pour la liste complète.

MS Windows 7/8/10/11

Distribution pyzo/Miniconda + Mozilla firefox

Pour utiliser tab2pronote.py avec pyzo et Miniconda avec MS Windows, il faut :

  1. télécharger et installer firefox ;

  2. en faire le navigateur par défaut ;

  3. télécharger et installer pyzo :

    https://github.com/pyzo/pyzo/releases
    https://github.com/pyzo/pyzo/releases/download/v4.11.2/pyzo-4.11.2-win64.exe

    pour windows 7, préférez la version 4.9.0 :

    https://github.com/pyzo/pyzo/releases/download/v4.9.0/pyzo-4.9.0-win64-windows7.exe

  4. télécharger et installer Miniconda 3 :

    https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe

  5. ouvrir pyzo en mode administrateur (clic-droit> exécuter en tant qu’administrateur) ;

  6. choisir miniconda comme distribution python (cliquer sur use this env...) ;

  7. installer la bibliothèque selenium en tapant dans le shell python :

    conda install selenium

    répondre oui (y) pour confirmer l’installation des dépendances ;

  8. installer la bibliothèque tkinter en tapant dans le shell python :

    conda install tkinter

    ou, pour les versions les plus récentes :

    conda install -c anaconda tk

    répondre oui (y) pour confirmer l’installation des dépendances ;

  9. fermer pyzo et le relancer en mode « normal » ;

  10. télécharger le driver gecko sur github :

    https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-win64.zip

  11. décompresser l’archive et mettre le fichier geckodriver.exe dans un répertoire, par exemple pronote ;

  12. ouvrir le fichier tab2pronote.py et éditer la ligne :

    plugin="C:\\le\\long\\chemin\\de\\pronote\\geckodriver.exe"

    qui permet de renseigner la localisation du driver gecko ;

  13. toujours dans le fichier tab2pronote.py, vérifier et si besoin éditer la ligne :

    exe_navigateur="C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"

    qui permet de renseigner la localisation de l’éxécutable du navigateur (ici firefox, avec une installation par défaut) ;

  14. renseigner enfin (si voulu, fonctionne sans) vos identifiants de connexion à l’ENT :

    login="Identifiant"
    password="MotDePasse"

Mac OS X

Distribution pyzo/Anaconda + Mozilla firefox

Pour utiliser tab2pronote.py avec pyzo et Anaconda avec Mac OS X, il faut :

  1. télécharger et installer pyzo :

    https://github.com/pyzo/pyzo/releases
    https://github.com/pyzo/pyzo/releases/download/v4.11.2/pyzo-4.11.2-macos.dmg

  2. télécharger et installer Anaconda :

    https://repo.continuum.io/archive/Anaconda3-4.1.1-MacOSX-x86_64.pkg

  3. ouvrir pyzo et choisir anaconda comme distribution python (cliquer sur use this env...) ;

  4. installer la bibliothèque selenium en tapant dans le shell python :

    conda install selenium

    répondre oui (y) pour confirmer l’installation des dépendances ;

  5. fermer pyzo ;

  6. télécharger le driver gecko sur github:

    https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-macos.tar.gz

  7. décompresser l’archive et mettre le fichier geckodriver dans un répertoire, par exemple pronote ;

  8. ouvrir le fichier tab2pronote.py et éditer la ligne :

    plugin="/usr/$(whoami)/chemin/de/pronote/geckodriver"

    qui permet de renseigner la localisation du driver gecko ;

  9. toujours dans le fichier tab2pronote.py, vérifier et si besoin éditer la ligne :

    exe_navigateur="/Applications/Firefox.app/Contents/MacOS/firefox"

    qui permet de renseigner la localisation de l’éxécutable du navigateur (ici firefox, avec une installation par défaut) ;

  10. renseigner enfin (si voulu, fonctionne sans) vos identifiants de connexion à l’ENT :

    login="Identifiant"
    password="MotDePasse"

Attention Un bug graphique empêche l’exécution des objets tkinter avec pyzo alors qu’ils fonctionnent très bien depuis un terminal. Pour contourner ce problème sans avoir à lancer de terminal, il est possible de créer un lanceur. Pour ce faire :

  1. lancer une recherche de l’éditeur AppleScript en cliquant sur la loupe en haut à droite ;

  2. éditer le code suivant :

    tell application "Terminal"
        activate
        do script "python3 /usr/$(whoami)/chemin/de/pronote/tab2pronote.py"
    end tell

    en modifiant l’emplacement de votre dossier pronote dans lequel figure le script tab2pronote.py ;

  3. vérifier le bon fonctionnement en cliquant sur Éxécuter puis sauvegarder votre script comme une application à partir de l’AppleScript :

    1. cliquer sur Fichier--Exporter ;
    2. dans Format de fichier, sélectionner Application et laisser tout le reste décoché ;
    3. cliquer sur Enregistrer.

Le lanceur (raccourci) est alors créé est permet de lancer le script tab2pronote.py en double-cliquant dessus.

GNU/Linux (Debian et filles rebelles)

Mozilla firefox

Pour utiliser tab2pronote.py avec une distribution GNU/Linux de base Debian (Ubuntu, Mint, etc), incluant python3, il faut :

  1. installer les bibliothèques tkinter et selenium en tapant dans un terminal :

    sudo apt-get install python3-tk python3-selenium

    avec votre gestionnaire de paquets préféré ;

  2. télécharger le driver gecko sur github :

    https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-linux64.tar.gz

  3. décompresser l’archive et mettre le fichier geckodriver dans un répertoire, par exemple pronote ;

  4. ouvrir le fichier tab2pronote.py et éditer la ligne :

    plugin="/usr/$(whoami)/chemin/de/pronote/geckodriver"

    qui permet de renseigner la localisation du driver gecko ;

  5. toujours dans le fichier tab2pronote.py, vérifier et si besoin éditer la ligne :

    exe_navigateur="/usr/bin/firefox"

    qui permet de renseigner la localisation de l’éxécutable du navigateur (ici firefox, avec une installation par défaut) ;

  6. renseigner enfin (si voulu, fonctionne sans) vos identifiants de connexion à l’ENT :

    login="Identifiant"
    password="MotDePasse"
  7. jouer du chmod +x pour le rendre exécutable et se faire un lien symbolique vers /home/$(whoami)/bin avec ln -s.

Configuration

Selon votre lycée, il peut être nécessaire de passer par un ENT pour se connecter au site de PRONOTE ou non.

Dans le cas où vous devez passer par un ENT, il faut renseigner dans le fichier tab2pronote.py les variables URL["ENT"], URL["ENT_login"] et URL["pronote"], par exemple :

Dans les cas où vous devez vous connecter directement au site de PRONOTE, il suffit de renseigner dans le fichier tab2pronote.py la variable URL["pronote"], par exemples :

en veillant à bien laisser vide la chaine de caractères de la variable URL["ENT"] utilisée en paramètre dans le script pour moduler l’affichage.

Gestion de identifiants

Il est évidemment possible de lire les identifiants de connexion à PRONOTE ou à l’ENT dans un fichier chiffré, par exemple avec GnuPG :

from subprocess import check_output
password=check_output("gpg -dq identifiants.gpg", shell=True).decode('UTF-8').splitlines()[0]

ou alors avec pass :

from subprocess import check_output
password=check_output("pass identifiants", shell=True).decode('UTF-8').splitlines()[0]

Utilisation

Avant-propos

L’idée du script tab2pronote.py est d’accéder aux cellules d’un tableau dans lequel sont affichées les notes ou appréciations. La colonne correspondant au nouveau devoir créé est identifiée par la position du curseur avant de rentrer les notes. L’ordre des actions correspond à celui des boutons et indications données dans l’interface graphique.

Procédure

  1. Exécuter le script tab2pronote.py.
    Le navigateur doit s’ouvrir sur la page de connexion de PRONOTE ou de l’ENT ;

  2. se connecter si vous n’avez pas saisi vos identifiant et mot de passe dans le script ;

  3. dans le cas où vous êtes connécté via un ENT, cliquer sur PRONOTE pour aller sur le site PRONOTE du lycée ;

  4. une fois connecté à « PRONOTE » :

    • pour coller les notes :

      1. sur « pronote », sélectionner « Notes > Saisie des notes »
      2. sélectionner « Créer un devoir » ;
      3. une fois la colonne du tableau affichée, placer le curseur sur la première note à coller ;
      4. vous pouvez coller les notes du presse-papier
        (cliquer sur le bouton Coller les notes) ;
      5. penser à enregistrer votre saisie sans quoi elle sera perdue.
    • pour coller les appréciations :

      1. sur « pronote », sélectionner « Bulletins > Saisie des appréciations » ;
      2. une fois le tableau affiché, placer le curseur sur la première appréciation à coller ;
      3. vous pouvez coller les appréciations du presse-papier
        (cliquer sur le bouton Coller les appréciations) ;
      4. penser à enregistrer votre saisie sans quoi elle sera perdue.
    • se déconnecter de « PRONOTE » ;

    • si besoin, cliquer sur le bouton ENT pour revenir sur l’ENT pour se déconnecter et se déconnecter du site ;

    • cliquer sur le bouton Quitter pour fermer le navigateur et quitter l’application.

Problèmes connus

Ressources

  1. Selenium
    https://github.com/SeleniumHQ/selenium/
  2. Mozilla firefox
    https://www.mozilla.org/fr/firefox/
  3. Pilote Mozilla gecko
    https://github.com/mozilla/geckodriver/releases
  4. pyzo
    http://www.pyzo.org/
  5. GPL v3
    https://www.gnu.org/licenses/gpl-3.0.html

Remerciements

Je remercie Stéphanie Cassan (MS Windows 8/pyzo/firefox), Pascal Cartron (MS Windows 10/pyzo/firefox), Virgile Lacharnay (Mac OS X/pyzo/firefox) et Laurent Pater (GNU/Linux/firefox) pour leur aide précieuse au développement du script tab2pronote.py et à sa documentation.