- Python 95.4%
- Shell 2.9%
- Dockerfile 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Feinschliff. - Standard-INTERVAL_SECONDS in der docker-compose.yml von 60 auf 30 Sekunden gesenkt. |
||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| download.py | ||
| entrypoint.sh | ||
| parser.py | ||
| README.md | ||
vplan-parser
Laedt den Schul-Vertretungsplan herunter und wandelt ihn in eine vertretungen.json
um -- automatisch in einem einstellbaren Intervall.
Setup / Installation
1. Docker vorhanden?
docker version
2. Bei der Registry anmelden (einmalig)
docker login git.pablo1732.de
Zugangsdaten: eigener Forgejo-Benutzername + Zugriffstoken (Scope "package: Lesen").
3. Einstellungen anpassen
In der docker-compose.yml mindestens die Serveradresse setzen:
DOWNLOAD_URL: "http://192.168.2.11" # <- IP/Adresse deines Vertretungsplan-Servers
4. Starten
docker compose pull
docker compose up -d
Ergebnis:
./data/html/-- heruntergeladene HTML-Dateien./data/json/vertretungen.json-- die fertige JSON
Kontrolle: docker compose logs -f (mit Strg+C wieder raus).
Bedienung / Anpassung
docker compose up -d # startet im Hintergrund
docker compose logs -f # Live-Logs ansehen
docker compose down # stoppt und entfernt den Container
docker compose restart # neu starten (z.B. nach Aenderung der Einstellungen)
Einstellungen
| Einstellung | Standard | Bedeutung |
|---|---|---|
INTERVAL_SECONDS |
30 |
Sekunden zwischen zwei Durchlaeufen. 0 = nur einmal laufen. |
DOWNLOAD_URL |
http://192.168.2.11 |
IP oder Webadresse des Vertretungsplan-Servers. |
DOWNLOAD_ENABLED |
true |
false = kein Download (nur umwandeln). |
PARSER_ENABLED |
true |
false = keine JSON (nur herunterladen). |
CLEAN_HTML_BEFORE_DOWNLOAD |
true |
HTML-Ordner vor jedem Download leeren. |
TZ |
Europe/Berlin |
Zeitzone. Wichtig, weil nach "heute + Zukunft" gefiltert wird. |
PARSER_ARGS |
(leer) | Zusatzoptionen fuers Umwandeln, z.B. --debug. |
DOWNLOAD_ARGS |
(leer) | Zusatzoptionen fuers Herunterladen. |
Die drei Betriebsarten
Alles (Standard): herunterladen -> umwandeln, immer wieder im Intervall.
Nur umwandeln (HTML selbst hinlegen, kein Download):
DOWNLOAD_ENABLED: "false"
Nur herunterladen (keine JSON):
PARSER_ENABLED: "false"
Eigene Skripte statt der eingebauten (ohne Neubau)
- Eigenes Skript unter
volumes:einhaengen:- ./mein_parser.py:/custom/parser.py:ro - Pfad unter
environment:setzen:PARSER_SCRIPT: "/custom/parser.py" docker compose up -d-- kein Neubau noetig.
Vertrag:
- Download-Skript: Aufruf
python3 <skript> <ADRESSE> <ZIELORDNER> [DOWNLOAD_ARGS...]. Ausgabe: HTML-Datei(en) im Zielordner. Nicht-interaktiv (ein Zeilenumbruch aufstdin), muss von selbst enden. - Parser-Skript: Aufruf
python3 <skript> <EINGABEORDNER> <AUSGABEORDNER> [PARSER_ARGS...]. Ausgabe:vertretungen.jsonim Ausgabeordner. Exitcode egal.
Beide eingebauten Skripte brauchen nur die Python-Standardbibliothek.
Problem?
- "image not found":
docker compose pullausgefuehrt? (docker imagespruefen) - Keine/leere JSON: Logs ansehen. Stimmt
DOWNLOAD_URL? Ist der Server erreichbar? - Falsches Datum gefiltert:
TZpruefen (StandardEurope/Berlin).
Image selbst bauen
IMAGE_TAG=0.1.1 sh scripts/build-images.sh
Baut Multi-Arch (amd64+arm64) und pusht nach git.pablo1732.de/schule/vplan-parser. Voraussetzung: einmalig
docker login git.pablo1732.de (Token-Scope "package: Lesen und Schreiben").