Partage
  • Partager sur Facebook
  • Partager sur Twitter

API de Pronote

Relever ses notes et les exploiter.

6 février 2019 à 23:06:30

Bonjour,

J'ai récemment découvert que Pronote (logiciel pour l'enseignement permettant de rentrer les notes, les cours etc...) possédait un API.

Le voici : https://www.index-education.com/fr/hyperplanning-info196-service-web.php

Il m'a également semblé comprendre que je pourrai récupérer mes notes selon la page : https://www.index-education.com/fr/ServiceWeb-Hyperplanning-Notation.php

L'information qui m’intéresse semble se trouve dans la ligne "NoteDuDevoirDeLEtudiant". (utiliser une recherche de texte car la page est grande)

Mon objectif serait donc de récupérer mes notes, leurs coefficients etc... Et d'exploiter tout cela dans un fichier google sheets ou excel et pouvoir ainsi en faire ce que je veux (graphique et estimations).

Pensez-vous cela possible, si oui, comment ? Je n'ai qu'une faible connaissance des API, avez-vous des recommandations sur des formations ?

Merci d'avance, cordialement

  • Partager sur Facebook
  • Partager sur Twitter
7 février 2019 à 10:21:16

Salut,

Il nous faudrait plus d'info sur toi:

Est-ce que tu sais programmer? Si oui dans quel langage?

Apparemment, en entrée tu as une API web (je ne sais pas sous quel format de fichier, mais ça c'est pas très important), il faudrait savoir ce que tu veux en faire en sortie.

Si tu veux effectivement récupérer ces données dans excel, personnellement je te conseillerai de faire un Add-in VSTO (en C# donc).

  • Partager sur Facebook
  • Partager sur Twitter
Fatalement vôtre
8 février 2019 à 21:23:55

Bonsoir,

Effectivement j'ai oublié quelques infos, j'ai quelque bases de python et de C (principalement pour Arduino). Mais je suis toujours ouvert à de nouveaux langages.

J'ai effectivement une api en entrée. Mon programme devrait se résumer à cela dans le meilleur des cas :

-Récupérer chaque moyenne

-Mettre mes moyennes en colonnes dans Excel/Sheets

Après pour le traitement et les graphiques je pourrai le faire aisément avec Excel ou Sheets. L'objectif est simplement de mettre à jour en temps réel mes notes dans un tableur et ne pas avoir à les recopier à chaque fois.

  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 9:17:33

Salut,

Si tu veux rester dans ta zone de confort, et pas perdre de temps avec les API Office, ce que tu peux faire, c'est un script en python (en C, c'est possible, mais ça va demander beaucoup plus de boulot..) qui fait les requêtes et qui écrit le résultat en CSV ou XML, facilement importable sous Excel.

  • Partager sur Facebook
  • Partager sur Twitter
Fatalement vôtre
7 octobre 2019 à 14:28:47

Bonjout,

Est-ce que tu as réussit à faire ce que tu voulais ?? cela m'interesse ?

  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2019 à 19:04:40

Bonjour,

Je suis également très intéressé par ce sujet. Avez-vous réussi à y aboutir ? Cela fonctionne-t-il toujours depuis la mise en place d'Educonnect ?

Merci

-
Edité par Killian Bourhis 11 octobre 2019 à 20:08:49

  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2019 à 18:28:13

Bonjour,

Désolé de l'absence. 

Malheureusement avec la reprise des cours je n'ai plus le temps de reprendre ce projet. Si l'un d'entre vous avance, je serai preneur de toute information !

  • Partager sur Facebook
  • Partager sur Twitter
17 novembre 2019 à 17:31:24

Bonjour,

J'ai développé un petit script qui utilise puppeteer et qui se connecte à mon ENT pour récupérer la page d'accueil de pronote (donc les dernières notes, prochains cours, etc...) et qui l'écrit dans un fichier `pronote.html`. Je n'ai pas pu le tester sur d'autres ENT que le mien, faute d'identifiants valides :(

const puppeteer = require("puppeteer");
const fs = require("fs");
const { username, password } = require("./config");

(async () => {

    let browser = await puppeteer.launch();
    let page = await browser.newPage();

    // Login
    await page.goto("https://cas.ecollege.haute-garonne.fr/login?selection=ATS_parent_eleve&service=https%3A%2F%2Fadrienne-bolland.ecollege.haute-garonne.fr%2Fsg.do%3FPROC%3DIDENTIFICATION_FRONT&submit=Valider");
    await page.type("#username", username);
    await page.type("#password", password);
    let navPromise = page.waitForNavigation({ waitUntil: "networkidle0" });
    await page.$eval("#button-submit", form => form.click());
    await navPromise;
    
    // Go to pronote
    navPromise = page.waitForNavigation({ waitUntil: "networkidle0" });
    await page.goto("https://0312799z.index-education.net/pronote/");
    await navPromise;
    fs.writeFileSync("pronote.html", await page.content());

})();



-
Edité par SmnLefort 17 novembre 2019 à 17:32:13

  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2020 à 14:19:22

Des nouvelles?

-
Edité par SmnLefort 19 janvier 2020 à 14:21:02

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2020 à 14:14:04

Bonjour,

d'après ce que je lis ici, pronote ne dispose pas d'API en tant que telle.

C'est à dire qu'il ne fournit pas des méthodes prédéfinies pour qu'une application tierce puisse se connecter à sa base de données. La seule solution me semble donc d'utiliser l'interface web "interactive" et un "navigateur programmable" pour automatiser les interaction souhaitées (comme proposé par SmnLefort avec puppeteer, moi j'utilise plutôt python et selenium pour ce genre d'utilisation) 

Cela comporte l'inconvénient que si pronote décide de changer un élément de son interface, ça peut tout mettre par terre. On a intérêt dans ce cas à isoler au maximum les fonctionnalités élémentaires et à tester que rien n'est cassé à chaque mise-à-jour ? ou annuellement ?
Index-éducation dispose d'un quasi monopole sur les applications de vie scolaire, il n'est pas dans leur intérêt, s'ils veulent continuer à percevoir leurs rentes de situation, de laisser les utilisateurs expérimenter d'autres façon de gérer leurs classes ou établissement, même en se basant pour l'instant sur leur solution.
  • Partager sur Facebook
  • Partager sur Twitter
24 janvier 2021 à 2:26:04

Bonjour,

Je suis entrain de mettre en place une API (non-officielle) pour le site Pronote.

Cette dernière utilise donc puppeteer(ou plus exactement puppeteer-extra-plugin-stealth), afin d'aller extraire un maximum de données sur un compte Pronote Elève. Pour utiliser testez l'API, rendez-vous sur votre navigateur et entrez tout simplement ce lien en remplaçant les paramètres <votre_nom_d_utlisateur_pronote><votre_mot_de_passe_pronote> et <lien_du_formulaire_de_connection_eleve_de_votre_etablissement>par vos informations:

https://pronote-api-server.herokuapp.com/?username=<votre_nom_d_utlisateur_pronote>&password=<votre_mot_de_passe_pronote>&link=<lien_du_formulaire_de_connection_eleve_de_votre_etablissement>

 Exemple (données sensitives cachées par des rectangles rouges):


Je viens de déployer le MVC (Minimum Viable Product) de cette API. Toutefois, les informations retournés encore très incomplet: à l'heure où j'ai écrit l'API renvoie un fichier JSON avec la moyenne générale de la classe et de l'élève ainsi que les moyennes de l'élève pour chaque matière. Voici un exemple:

Je viens de commencer à développer cette API (4 heures de travail en tout) donc il se peut qu'il y ait encore des erreurs.

Les mots de passe et identifiant ne sont PAS sauvegarder sur nos serveurs. Ils ne servent qu'à une seule reprise: lors de la connection sur votre espace élève (vous pouvez d'ailleur vérifier tout mes dires sur mon repository: https://github.com/science-math-guy/PRONOTE-API).

Merci de me dire ce que vous en pensez. Cela m'aiderai énormément.

  • Partager sur Facebook
  • Partager sur Twitter