vingerha / pronote2mqtt

Extracts pronote into sqlite-db and makes available in MQTT, adds sensors to HA
MIT License
7 stars 4 forks source link

url pronote #3

Closed jimsaye closed 2 years ago

jimsaye commented 2 years ago

Bonjour, l'url du pronote de mon fils n'est pas sous la forme 'https://'+prefix_url+'.index-education.net/pronote/eleve.html mais 'http://IP_du_pronote/parent.html' comment faire pour me connecter car si je modifie l'adresse dans pronote.py client = pronotepy.Client('https://'+prefix_url+'.index-education.net/pronote/eleve.html' par 'http://'+prefix_url+/'parent.html' elle revient a pronotepy.Client('https://'+prefix_url+'.index-education.net/pronote/eleve.html' après redémarrage du docker

vingerha commented 2 years ago

si vous voulez partager un peu plus de détails je peux voir, quelle école/cas/ent? Naturellement... je ne demande pas (!) son nom ni son mot de passe. Avoi que l'ip pour l'acces est totalement neuf. Si vous ne voulez pas partager sur github, je suis joignable aussi sur discord (même nom)

jimsaye commented 2 years ago

pas de soucis voici l'adresse http://195.221.154.167/parent.html?

vingerha commented 2 years ago

Alors, c'est l'ENT ... Normalement on a l'url de lécole d'ou chercher les détails pronote de l'enfant. L'ent fonctionnne comme gardien de sécu, et pronotepy (base de connection) fait au premier le login à l'ENT, saufgarde un access-token par des cookies et ensuite rentre dans le index-education avec ça. Pour moi, c'est la première fois que j'ai vu qu'on se connecte directement avec l'ent car...comment savoir dans quelle établisement de votre enfant? L'establ est défini par le 'prefix_url' Je peux chercher plus loin mais je doit savoir le nom de l'école...et je ne peux pas garantir une solution rapide.

vingerha commented 2 years ago

autre question, après vous avez rentré nom/mdp...l'ent ouvre pronote directement?

jimsaye commented 2 years ago

effectivement c'est bien l'ent je rentre a l'adresse que je vous ai donné mes identifiants et je suis directement sur pronote le college est celui d'Auneuil le college du point du jour

vingerha commented 2 years ago

et après le login, le page pronote ne contient pas le prefix dans l'url? Je viens de l'essayer avec ma fille aussi directement par son ENT et ça me donne son établ dans le url. Le soucis... avec pronotepy il y a que ce logique et ça evite de pre-configurer des milliers des type d'accès. Je vais voir si je pourrais donner une alternative en utilisant l'ENT de ma fille...

jimsaye commented 2 years ago

non malheureusement une fois connecté je suis sur l'adresse http://195.221.154.167/parent.html?

vingerha commented 2 years ago

Donc...c'est pas facile a changer sans changer le concept de pronotepy. Pronotepy assume l'index-edu pour continuer son logique. Car je n'ai pas d'' options de utilise une compte 'demo' je pourrais vous envoyer une adaptation de ent.py qui pourrait (!) marcher. L'idée c'est que vous change pronote.py dans mon folder app vers votre adresse si-dessus et changer ent.py (même folder). Je ne peut pas garantir si ça marche

jimsaye commented 2 years ago

merci je veux bien essayer

vingerha commented 2 years ago

pronote.txt ent.txt les renommer vers pronote.py et ent.py et copier vers mon folder 'app' Dans param.py utiliser:

self.pronoteCas_1 = "hauts_de_france"
vingerha commented 2 years ago

on croise les doigts

jimsaye commented 2 years ago

quand je relance le docker les fichiers pronote.py et ent.py sont remplacé par ceux d'origine les modifications ne sont pas persistante

jimsaye commented 2 years ago

et pour self.pronotePrefixUrl_1 = '' " dans param.py je met quoi ?

vingerha commented 2 years ago

normalement non ... tu relance comment? Moi j'utilise portainer et dedans 'restart'

vingerha commented 2 years ago

ah zut... t'as raison

vingerha commented 2 years ago

attend, je doit créer un nouvelle image docker

jimsaye commented 2 years ago

merci beaucoup

vingerha commented 2 years ago

docker image updated avec quelsques autres maj. car on ne fait pas un truc normal

vingerha commented 2 years ago

Mon idée:

jimsaye commented 2 years ago

ok

vingerha commented 2 years ago
jimsaye commented 2 years ago

pas de soucis

vingerha commented 2 years ago

Je te donne encore max 30 min. de mon temps...sinon tu doit trouver quelq'un sur discord qui a peut-être d;ejà fait ça. Tu comprens que je ne peux pas faire des trucs individuels sans limite :)

jimsaye commented 2 years ago

c'est déja énorme ce que tu as fais. merci encore.

jimsaye commented 2 years ago

2022-03-31 14:24:06,022 INFO # Collection from Pronote # 2022-03-31 14:24:06,022 INFO ----------------------------------------------------------- 2022-03-31 14:24:06,022 INFO Student 1----------------------------------------------------- 2022-03-31 14:24:06,022 INFO INIT 2022-03-31 14:24:06,023 DEBUG Requesing html: https://.index-education.net/pronote/eleve.html Traceback (most recent call last): File "/app/pronote2mqtt.py", line 548, in run(myParams) File "/app/pronote2mqtt.py", line 124, in run myPronote.getData(myParams.pronotePrefixUrl_1,myParams.pronoteUsername_1,myParams.pronotePassword_1,myParams.pronoteCas_1,myParams.pronoteGradesAverages_1) File "/app/pronote.py", line 45, in getData client = pronotepy.Client('https://'+prefix_url+'.index-education.net/pronote/eleve.html', username, password, _ent) File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 321, in init super().init(pronote_url, username, password, ent) File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 72, in init self.attributes, self.func_options = self.communication.initialise() File "/usr/local/lib/python3.9/site-packages/pronotepy/pronoteAPI.py", line 68, in initialise get_response = self.session.request( File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 515, in request prep = self.prepare_request(req) File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 443, in prepare_request p.prepare( File "/usr/local/lib/python3.9/site-packages/requests/models.py", line 318, in prepare self.prepare_url(url, params) File "/usr/local/lib/python3.9/site-packages/requests/models.py", line 407, in prepare_url raise InvalidURL('URL has an invalid label.') requests.exceptions.InvalidURL: URL has an invalid label.

jimsaye commented 2 years ago

l'url de pronote.py ne semble pas sauvegardé

jimsaye commented 2 years ago

2022-03-31 14:49:42,408 INFO # Collection from Pronote # 2022-03-31 14:49:42,408 INFO ----------------------------------------------------------- 2022-03-31 14:49:42,408 INFO Student 1----------------------------------------------------- 2022-03-31 14:49:42,408 INFO INIT 2022-03-31 14:49:42,409 DEBUG Requesing html: http://195.221.154.167/parent.html? 2022-03-31 14:49:42,411 DEBUG Starting new HTTP connection (1): 195.221.154.167:80 2022-03-31 14:49:42,469 DEBUG http://195.221.154.167:80 "GET /parent.html HTTP/1.1" 302 165 2022-03-31 14:49:42,471 DEBUG Starting new HTTPS connection (1): enthdf.fr:443 2022-03-31 14:49:42,541 DEBUG https://enthdf.fr:443 "GET /cas/login?service=http:%2F%2F195.221.154.167:80%2Fparent.html HTTP/1.1" 302 0 2022-03-31 14:49:42,552 DEBUG https://enthdf.fr:443 "GET /auth/login?callback=%2Fcas%2Flogin%3Fservice%3Dhttp%253A%252F%252F195.221.154.167%253A80%252Fparent.html HTTP/1.1" 200 None Traceback (most recent call last): File "/app/pronote2mqtt.py", line 548, in run(myParams) File "/app/pronote2mqtt.py", line 124, in run myPronote.getData(myParams.pronotePrefixUrl_1,myParams.pronoteUsername_1,myParams.pronotePassword_1,myParams.pronoteCas_1,myParams.pronoteGradesAverages_1) File "/app/pronote.py", line 46, in getData client = pronotepy.Client('http://195.221.154.167/parent.html?', username, password, _ent) File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 381, in init super().init(pronote_url, username, password, ent, qr_code) File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 80, in init self.attributes, self.func_options = self.communication.initialise() File "/usr/local/lib/python3.9/site-packages/pronotepy/pronoteAPI.py", line 74, in initialise self.attributes = self._parse_html(get_response.content) File "/usr/local/lib/python3.9/site-packages/pronotepy/pronoteAPI.py", line 255, in _parse_html raise PronoteAPIError( pronotepy.exceptions.PronoteAPIError: Page html is different than expected. Be sure that pronote_url is the direct url to your pronote page.

jimsaye commented 2 years ago

j'ai créer un docker en local mais l'url ne semble pas bonne. j'ai un identifiant différent pour l'ENT et pour pronote peux etre que ça n'aide pas non plus

vingerha commented 2 years ago

oui, pronotepy attend quelque chose different … je ne peix pas continuer car ca devient vraiment specifique et je t‘invite pour aller au discord en cherchant un autre person qui connait ce spucis… avec une slutun generique je peux l integrer

jimsaye commented 2 years ago

quel est l'adresse du discord ? stp

jimsaye commented 2 years ago

https://github.com/dathosim/Pronote2Homeassistant ils ont intégré la connexion avec l'ENT mais je n'arrive pas à installé le script avec mon installation qui est sur ha os. mais on avance. merci pour le temps que tu m'as accordé

vingerha commented 2 years ago

aussi lui utilise pronotepy...alors même soucis. Differences: Dathosim n'utilise pas mqtt mais REST et avec mon based de données je trouve d'être plus flexible Essayer ici: https://discord.com/invite/DfVJZme Ou sur HACF: https://forum.hacf.fr/ nous sommes tous là bas

vingerha commented 2 years ago

Pour finaliser, j'ai écrit le développeur du pronotepy (Bain de Czechie) et lui aussi ne voit pas une solution simple/vite sans (!) devenir trops individuels....c'est probablement pas très compliqué non plus si on a les coordonnées pour tester. J'en suis sûre qu'on peut faire une solution mais tu doit le développer et maintenir....peut-être tu trouve quelq'un sur HAC ou Discord qui a fait pareil. Je finisse cet chaine si t'es d'accord