Package: pronotepy
pronotepyAn API wrapper for PRONOTEExplore the docs »IntroductionPronotepy is a Python API wrapper for the PRONOTE student administration service. It mainly focuses on student accounts but has limited support for teacher accounts as well.
This project doesnotuse the official HYPERPLANNING API provided by PRONOTE, which is inaccessible to students.AboutDependenciespycryptodomebeautifulsoup4requestsautoslotInstallationStableInstall directly from pypi using pip:pip install -U pronotepy[!NOTE]
If you are on Windows and have trouble with this command, usepy -3 -m pip install pronotepy. You must have Python 3 installed on your machine.LatestYou can install the latest version by installing directly from the repository:pip install -U git+https://github.com/bain3/pronotepyWe cannot assure that the latest version will be working, but it might have features or bugfixes that are not yet released on pypi.Testing the packageTo self test pronotepy run this command:python -m pronotepy.test_pronotepyPlease keep in mind that this uses the demo version of pronote and so it can't test every function.Usage[!WARNING]
The usage part of this readme is for the latest version. If you are installing from pypi, please see the documentation linked at the beginning.Here is an example script (homework shown in example.py):importpronotepy# initialise the client# Note: the address should be a direct one (like the one below) usually the address shown by your school just redirects# you to the real one.# Ex.: https://your-school.com/pronote/students <-- BAD#      https://0000000a.index-education.net/pronote/eleve.html <-- GOOD#      https://0000000a.index-education.net/pronote/eleve.html?login=true <-- ONLY IF YOU HAVE AN ENT AND YOU KNOW YOUR IDS, ELSE REFER TO ENT PART OF READMEclient=pronotepy.Client('https://demo.index-education.net/pronote/eleve.html',username='demonstration',password='pronotevs')ifclient.logged_in:# check if client successfully logged in# get the all the periods (may return multiple types like trimesters and semesters but it doesn't really matter# the api will get it anyway)periods=client.periodsforperiodinperiods:forgradeinperiod.grades:# iterate over all the gradesprint(f'{grade.grade}/{grade.out_of}')# print out the grade in this style: 20/20For any extra details, please see the documentation linked above.QR CodePronotepy allows you to connect with the Pronote QR code. Pass in the function the contents of the QR code and the confirmation codeimportpronotepy# creating the client from qrcode_loginclient=pronotepy.Client.qrcode_login({"jeton":"<LONG_TOKEN>","login":"<SHORT_TOKEN>","url":"https://0000000a.index-education.net/pronote/mobile.eleve.html"},"1234")ENTPronotepy has builtin functions for getting cookies from some ENTs (if you want your ENT to be added make a new issue).
You can pass those functions to the client like this:importpronotepyfrompronotepy.entimportoccitanie_montpellier# creating the client and passing the occitanie_montpellier function to automatically get cookies from ENTclient=pronotepy.Client('https://0000000a.index-education.net/pronote/eleve.html',username='demonstration',password='pronotevs',ent=occitanie_montpellier)# check if sucessfully logged inifclient.logged_in:print(len(client.discussions()))# printing number of messages that the user haselse:print('no login')All the functions return cookies needed to connect to pronote (use docs to see if your ENT is supported).ContributingFeel free to contribute anything. Any help is appreciated. To contribute, please create a pull request with your changes.Setting up the development environment is just cloning the repository and making sure you have all the dependencies by
running pip with therequirements.txtfile. Please also installmypyandblackfor type checking and formatting respectively.
You can find out how mypy is ran in github actions by looking at its configuration file.If you have any questions about ENTs and their authentification function, please contactBapt5Please run these tools before you submit your PR. Thanks!Adding contentPronotepy has most of the essential features covered, but if you need anything that is not yet implemented, you
cancreate an issuewith your request. (or you can contribute by adding it yourself)FundingThis repository is onissuehunt. You can put bounties on your issues if you'd like
to thank the person who completes it. There is no project account for recieving tips, but you're welcome to tip contributors directly.LicenseThis project uses the MIT license. (see LICENSE file)