NotifyNotes est un script Python simple à auto-héberger (notamment via Docker) qui vérifie régulièrement si de nouvelles notes sont disponibles sur votre espace étudiant, puis vous envoie une notification via ntfy.
- Surveillance automatique de vos notes en ligne du groupe OMNES
- Notifications instantanées sur votre téléphone ou navigateur via ntfy
- Configuration simple via variables d'environnement ou fichier
.env
- Compatible Docker pour un déploiement facile partout
NotifyNotes
├── src/
│ ├── main.py # Script principal
│ ├── parse.py # Parsing HTML → JSON
│ ├── compare_json.py # Détection des changements
│ └── env.py # Gestion des variables d'environnement
├── requirements.txt # Dépendances Python
├── Dockerfile # Image Docker
├── entrypoint.sh # Script d'entrée Docker
├── .env # (optionnel) Variables d'environnement
└── README.md # Ce fichier !
- Docker installé sur votre machine (ou Python 3.9+ si usage sans Docker)
- Un accès à votre page de notes via une URL spécifique (
ex : campusonline.inseec.net/note/note_ajax.php?AccountName=[ID]
)- Comment l'obtenir :
- Aller sur
https://VOTREECOLE.campusonline.me/fr-fr/scolarité/
, naviguez dans le relevé de notes, puis allez dans l'ongletNetwork
de Devtools (Chrome), la dernière requête est celle qui fetch le fichier de notes avec un id qui vous appartient. - L'URL à obtenir est dans l'onglet
Headers
, à la lignerequest_url
de la requete qui charge vos notes
- Aller sur
- Comment l'obtenir :
- L'application ntfy installée sur votre smartphone (Android/iOS) ou accès à une instance ntfy
services:
notifynotes:
image: ghcr.io/pingoleon/notifynotes:latest
container_name: notifynotes
environment:
- URL=https://campusonline.inseec.net/note/note_ajax.php?AccountName=VOTRE_ID #REQUIS
- NTFY_URL=https://ntfy.votre-instance.org/notifs # Facultatif
- NTFY_URL_LOCAL_FALLBACK=http://iplocalentfy:portntfy/notifs #Facultatif
- NTFY_AUTH=true # Facultatif
- NTFY_USER=monuser # Facultatif
- NTFY_PASS=monmotdepasse # Facultatif
volumes:
- /config/notifynotes:/config
restart: unless-stopped
network_mode: host
Lancez avec :
docker compose up -d
docker run -d \
--name notifynotes \
--env URL="https://campusonline.inseec.net/note/note_ajax.php?AccountName=VOTRE_ID" \
--env NTFY_URL=https://ntfy.votre-instance.org/notifs \
--env NTFY_URL_LOCAL_FALLBACK=http://iplocalentfy:portntfy/notifs \
--env NTFY_AUTH=true \
--env NTFY_USER=monuser \
--env NTFY_PASS=monmotdepasse \
--volume /config/notifynotes:/config \
--restart unless-stopped \
--network host \
ghcr.io/pingoleon/notifynotes:latest
-
Installez l'application ntfy sur votre smartphone :
-
Ajoutez le topic (ex:
notes-xxxxxxx
) affiché dans les logs Docker ou celui que vous avez défini dansNTFY_URL
. -
Recevez vos notifications dès qu'une nouvelle note est détectée ! 🎉
Variable | Description | Exemple / Valeur par défaut | Obligatoire |
---|---|---|---|
URL |
URL de la page de notes à surveiller | https://campusonline.inseec.net/note/note_ajax.php?AccountName=... | ✅ Oui |
NTFY_URL |
URL de votre serveur ntfy (notifications) | https://ntfy.sh/mon-topic | Non |
NTFY_AUTH |
Active l'authentification ntfy (true /false ) |
false | Non |
NTFY_USER |
Identifiant ntfy (si auth activée) | monuser | Non |
NTFY_PASS |
Mot de passe ntfy (si auth activée) | monmotdepasse | Non |
CHECK_INTERVAL |
Intervalle de vérification entre Minuit et 7H (en secondes) | 1800 (30 minutes) | Non |
STORAGE_NOTES_JSON |
Chemin du fichier de stockage des notes précédentes | /config/old_notes.json | Non |
STORAGE_NOTES_JSON_2 |
Chemin du fichier temporaire pour les nouvelles notes | /config/new_notes.json | Non |
STORAGE_FILE_URL |
Chemin du fichier où stocker l'URL ntfy générée si besoin | /config/ntfy_url.txt | Non |
LOG_LEVEL |
Niveau de log (INFO ou DEBUG ) |
INFO | Non |
TZ |
Fuseau horaire | Europe/Paris | Non |
NTFY_URL_LOCAL_FALLBACK |
Url de fallback (utile si la première est en https et peut fail par moment), si l'instance ntfy custom est sur le même réseau | http://192.168.0.1:3456/notifs | Non |
Astuce : Si vous ne renseignez pas
NTFY_URL
, une URL ntfy aléatoire sera générée et affichée dans les logs. elle sera en plus enregistrée dans un fichier txt persistant pour ne pas changer d'adresse dans votre app à chaque fois.
- Méthode recommandée : cloner et créer un fichier
.env
à la racine du projet (voir exemple plus bas)
docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/pingoleon/notifynotes:latest .
URL=https://campusonline.inseec.net/note/note_ajax.php?AccountName=[VOTRE_ID]
NTFY_URL=https://ntfy.xxxx.com/notifs
NTFY_URL_LOCAL_FALLBACK=http://[ip_fallback_sur_réseau_local]/notifs
NTFY_AUTH=true # BESOIN SEULEMENT SI INSTANCE NTFY PRIVEE
NTFY_USER=[USERNAME]
NTFY_PASS=[CHOUETTE_MDP]
STORAGE_NOTES_JSON=old_notes.json
STORAGE_NOTES_JSON_2=new_notes.json
STORAGE_FILE_URL=ntfy_url.txt
-
Q : Est-ce que je peux utiliser ce script sans ntfy ?
- Non, ntfy, via l'app officielle disponible sur IOS et Android est nécessaire pour recevoir les notifications.
-
Q : Est-ce que mes identifiants sont stockés ?
- Non, seules les notes sont stockées localement pour comparaison.
Les contributions sont bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request pour toute suggestion, bug ou amélioration.
Ce projet est sous licence Unlicense, parce que le partage c'est cool