ISIS-AutoSync
ISIS-AutoSync
Schluss mit dem manuellen Runterladen jeder einzeln hochgeladenen Vorlesungsfolie: ISIS-AutoSync holt neue Dateien aus den TU-Berlin-ISIS-Kursen (Moodle), die man auswählt, und legt sie in der tubCloud ab. Von dort synchronisiert der Nextcloud-Client sie automatisch auf Handy, Tablet und PC. Der Clou: Es läuft komplett kostenlos in der Cloud - der eigene Rechner muss nie an sein.
→ Quellcode auf GitHub: github.com/Rej1sky/isis-autosync · MIT-Lizenz
Das Problem
Viele Profs laden Vorlesungen und Hausaufgaben nur tröpfchenweise hoch, und jede Datei will einzeln angeklickt und heruntergeladen werden. Dann buggt es noch manchmal und schon ist man in meinem Fall mieß annoyed. Wer mehrere Kurse belegt, verbringt jede Woche Zeit mit stumpfem Klicken - und hat die Unterlagen trotzdem nur auf einem Gerät. Nicht zu vergessen man muss sich ja jedes Mal neu bei Isis anmelden!
Wie es funktioniert
sync.ymlläuft per Cron alle 4 Stunden (oder auf Knopfdruck) in GitHub Actions, meldet sich über das Shibboleth-SSO der TU an, filtert die aktivierten Kurse und Dateitypen und lädt Neues per WebDAV in die tubCloud.refresh-courses.ymlaktualisiert einmal täglich die Liste aller eingeschriebenen Kurse.- Der State (was schon geladen wurde) liegt in der tubCloud selbst, nicht im Repo — die Skripte sind dadurch stateless.
- Eine PWA-Web-UI (statisches Vanilla-HTML/JS auf Cloudflare Pages) editiert die
courses.jsonund stößt die Workflows über die GitHub-API an. Lässt sich aufs Handy als App-Icon legen.
Warum es interessant ist
Das Projekt kommt ohne eigenen Server aus: GitHub Actions übernimmt die geplante Ausführung, Cloudflare Pages hostet die UI, und die tubCloud dient gleichzeitig als Speicher und Zustandsspeicher. Ein kleines Beispiel dafür, wie man mit vorhandenen Gratis-Bausteinen eine echte Automatisierung baut, ganz ohne laufende Kosten.
Stack: Python · GitHub Actions · WebDAV/Nextcloud · Cloudflare Pages · Vanilla-JS-PWA
Wenn ihr mein kleines Projekt hilfreich findet gebt ihm doch gerne einen Stern. Und wenn ihr fragen habt, schreibt mir gerne :)