Synchronise ton emploi du temps EPSI (Wigor) avec Apple Calendar, Google Calendar, ou n'importe quelle app compatible iCal.
L'outil scrape ton EDT depuis le portail Wigor, le convertit en fichier .ics, et le sert via un petit serveur HTTP. Tu t'abonnes a l'URL depuis ton app calendrier et c'est a jour automatiquement.
- Authentification CAS automatique (session sauvegardee)
- Scraping de 4 semaines (semaine courante + 3 suivantes)
- Generation d'un fichier
.icsstandard - Serveur HTTP leger pour servir le calendrier
- Endpoint
/refreshpour forcer une mise a jour - Compatible avec toutes les apps calendrier (Apple Calendar, Google Calendar, Outlook, Thunderbird...)
- Node.js 20+
- npm
git clone https://github.com/maxime-mnsiet/epsIcal.git
cd epsIcal
npm install
npx playwright install chromiumCopie le fichier d'exemple et remplis tes identifiants CAS (les memes que MonCampus) :
cp .env.example .envEdite .env :
CAS_USERNAME=prenom.nom
CAS_PASSWORD=ton_mot_de_passe
PORT=3333npm run scrapeGenere data/calendar.ics avec ton emploi du temps des 4 prochaines semaines.
npm run serveLe serveur demarre sur http://localhost:3333. Endpoints :
| Route | Description |
|---|---|
/ |
Page d'accueil avec instructions |
/calendar.ics |
Le fichier iCal (pour abonnement calendrier) |
/health |
Health check |
/refresh |
Force un re-scrape |
npm run devLance le serveur avec hot-reload.
- Ouvre Calendar
Fichier>Nouvel abonnement...- Entre l'URL :
http://localhost:3333/calendar.ics - Configure le rafraichissement automatique sur "Chaque jour"
Reglages>Calendrier>Comptes>Ajouter un compteAutre>Ajouter un calendrier avec abonnement- Entre l'URL du serveur
- Valide
- Va sur calendar.google.com
Autres calendriers>A partir de l'URL- Colle l'URL :
http://<ton-serveur>:3333/calendar.ics
Google Calendar rafraichit les abonnements toutes les 12-24h environ.
Pour que le calendrier soit accessible en permanence (depuis iPhone, etc.), deploie sur un serveur.
# Sur le serveur
git clone https://github.com/maxime-mnsiet/epsIcal.git
cd epsIcal
npm install
npx playwright install chromium
# Si deps systeme manquantes pour Chromium :
npx playwright install-deps chromium
cp .env.example .env
# Edite .env avec tes identifiantsCree /etc/systemd/system/epsical.service :
[Unit]
Description=epsIcal - EDT EPSI Calendar Server
After=network.target
[Service]
Type=simple
User=YOUR_USER
WorkingDirectory=/path/to/epsIcal
ExecStart=/usr/bin/npx tsx src/index.ts serve
Restart=always
RestartSec=10
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.targetsudo systemctl enable epsical
sudo systemctl start epsicalcrontab -eAjoute :
0 6 * * * cd /path/to/epsIcal && /usr/bin/npx tsx src/index.ts scrape >> /tmp/epsical-cron.log 2>&1
Le scrape tourne tous les jours a 6h du matin.
- TypeScript — Tout le code
- Playwright — Authentification CAS + scraping
- Cheerio — Parsing HTML
- ical-generator — Generation du fichier .ics
- Hono — Serveur HTTP minimal
Assure-toi d'avoir cree le fichier .env avec tes identifiants. Voir Configuration.
- Verifie tes identifiants CAS (les memes que MonCampus)
- Supprime
data/auth.jsonpour forcer une re-authentification - Le CAS peut etre temporairement indisponible
- Certaines semaines n'ont pas de cours (vacances, stages)
- Essaie de forcer un refresh :
curl http://localhost:3333/refresh
Sur un serveur Linux, il faut parfois installer les dependances systeme :
npx playwright install-deps chromiumMIT