03638986697e46738c924ce860299e2080ba40ed
Ajoute le mode d'authentification PRONOTE_AUTH_MODE=qr_token comme alternative au mode password pour les instances Pronote utilisant HubEduConnect/EduConnect où l'authentification par mot de passe échoue (CAPTCHA, MFA, flux SAML). Nouveaux éléments : - PronoteSettings : auth_mode, qr_code_file, qr_pin (SecretStr) - PronoteAuthState : persistance du token rotatif dans .pronote_auth_state.json (écriture atomique, permissions 0600, symlink-safe via O_EXCL|O_NOFOLLOW) - PronoteClient._connect_qr_token() : token_login avec creds persistés, qrcode_login pour l'enrôlement initial, export_credentials persisté après chaque login réussi - PronoteAuthRotationError : levée en cas d'échec de rotation du token, propagée sans wrapping à travers PronoteFetcher et fetch_step jusqu'à PipelineRunner.run() qui notifie via XMPP (si canal disponible et dry_run inactif) - _is_pronotepy_configured() mode-aware : qr_token ne requiert que PRONOTE_URL - _collect_auth_secrets() : redaction des secrets explicites (token, PIN, jeton QR) dans tous les logs du chemin d'authentification Documentation : - .env.example : PRONOTE_AUTH_MODE, PRONOTE_QR_CODE_FILE, PRONOTE_QR_PIN - AGENTS.md : contrat d'authentification QR code / token - Wiki GuidePronote : section enrôlement, exécutions suivantes, ré-enrôlement Tests (686 passés, couverture 94.87%) : - 5 tests config QR, 9 tests auth_state, 10 tests client QR, 3 tests propagation, 4 tests intégration rotation end-to-end, 4 tests fallback mode-aware - Tests de non-fuite : sentinelles distinctes pour token, PIN, jeton QR Co-authored-by: coder/litellm/coder <coder@agents.invalid>
pronote-sync
Synchronisation Pronote → CalDAV + XMPP.
Synchronise l'agenda et les devoirs de Pronote vers un calendrier CalDAV et envoie un résumé quotidien par XMPP. Supporte les sources iCal et pronotepy avec repli automatique. Synthèse IA optionnelle.
🚀 Démarrage rapide
# Cloner le dépôt
git clone <repo-url>
cd pronote-sync
# Créer l'environnement virtuel
python3.13 -m venv .venv
source .venv/bin/activate
# Installer
pip install -e ".[dev]"
# Configurer
cp .env.example .env
# Éditer .env avec vos paramètres (voir .env.example pour le détail)
# Tester
pronote-sync --dry-run --log-level DEBUG
📖 Utilisation
pronote-sync # Exécute la synchronisation
pronote-sync --dry-run # Simulation sans écriture
pronote-sync --log-level DEBUG # Verbosité des journaux
🛠️ Déploiement
Les artefacts pour systemd/timer et logrotate sont fournis dans deploy/. Voir docs/exploitation.md pour plus de détails.
🙏 Remerciements
Ce projet repose sur les bibliothèques open-source suivantes :
- pronotepy — client Pronote
- icalendar — parsing iCal
- caldav — client CalDAV
- slixmpp — client XMPP
- pydantic — validation et configuration
- openai — synthèse IA
- feedparser — parsing RSS
- beautifulsoup4 — parsing HTML
Inspiré de pronote-digest par Yoan Bernabeu.
Licence
MIT — voir LICENSE.
Releases
2
Languages
Python
100%