mirror of
https://github.com/skoelle/mvg-departures.git
synced 2026-09-17 18:40:23 +00:00
5b89dd047bc5a70b47d3f798f014dc344f2b50fc
mvg-departures
Kompakter Abfahrtsmonitor fuer MVG U-Bahn und S-Bahn (Muenchen), primaer fuer mobile Nutzung optimiert.
Features
- Konfigurierbare Stationsliste (
config.yaml) mit Typ (UBAHN/SBAHN/TRAM/BUS) - Ausschluss-Filter pro Station: nur unerwuenschte Zielrichtungen werden ausgeblendet, neue/unbekannte Ziele werden automatisch weiter angezeigt
- Zwei Endpunkte:
/— mobile-optimierte HTML-Ansicht mit Auto-Refresh (alle 60s per Meta-Refresh)/api/departures— JSON-Ausgabe derselben Daten
- Anzeige von Linie, Ziel, Abfahrtszeit, Verspaetung und Stoerungsmeldungen
- Visuelle Unterscheidung von U-Bahn (blau) und S-Bahn (gruen) per Icon
Konfiguration
Siehe config.yaml:
refresh_seconds: 60
cache_seconds: 20
departures_limit: 10
stations:
- name: "Josephsburg, München"
type: "UBAHN"
exclude_destinations:
- "Messestadt Ost"
- "Messestadt West"
- name: "Berg am Laim, München"
type: "SBAHN"
exclude_destinations:
- "Erding"
- "Markt Schwaben"
exclude_destinations filtert per exaktem destination-Stringvergleich. Alles was
NICHT in der Liste steht, wird angezeigt — so fallen Linienaenderungen/Umleitungen
sofort auf, statt lautlos verschwunden zu sein.
Lokal starten
pip install -r requirements.txt
uvicorn app.main:app --reload
Docker
docker build -t mvg-departures .
docker run -p 8000:8000 -v $(pwd)/config.yaml:/app/config.yaml mvg-departures
Deployment (Beispiel docker-compose, nicht im Repo)
services:
mvg-departures:
image: ghcr.io/<github-user>/mvg-departures:latest
container_name: mvg-departures
ports:
- "8090:8000"
volumes:
- ./config.yaml:/app/config.yaml:ro
environment:
- TZ=Europe/Berlin
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
CI/CD
.github/workflows/build.yml:
- Baut bei jedem Push auf
maindas Docker-Image und pusht es nachghcr.io/<owner>/<repo>:latestsowie mit Short-SHA-Tag - Anschliessender Cleanup-Job loescht alte Image-Versionen in der GHCR-Package-Registry
und behaelt nur die letzten 4 Versionen (
min-versions-to-keep: 4)
Voraussetzung
Repo-Settings → Actions → General → Workflow permissions auf "Read and write permissions" stellen, sonst schlaegt der Push nach GHCR fehl.
Endpunkte
| Route | Beschreibung |
|---|---|
/ |
HTML-Ansicht, mobile-optimiert, Auto-Refresh alle 60s |
/api/departures |
JSON-Liste aller gefilterten Abfahrten |
/healthz |
Healthcheck fuer Docker/Watchtower |
Languages
Python
56.8%
HTML
37.9%
Dockerfile
5.3%