Wenn ich mit dem Zug reise, habe ich gerne einen gedruckten Fahrplan zur Hand. Für mich ist der Bildschirm von einem Smartphone zu klein (liegt wohl an meinem Alter und meinen Augen). Hilfreich ist so ein Fahrplan auch in speziellen Situationen. Meine Frau hat mit unserer Tochter eine Wanderung ab Airolo geplant. Die Tochter wohnt in der Umgebung von Bern und wir in der Nähe von Langenthal. Es ging nun darum, wo sich die Beiden treffen können, um die Reise gemeinsam fortzusetzen. Von Bern gibt es einen direkten Zug mit Bahn2000 ohne Halt bis Zürich. Von Langenthal geht die Reise via Olten/Luzern.
Von Opendata gibt es einen interessanten Bereich Transport. Mittels API sind die Fahrpläne aus der Schweiz abrufbar. Der Befehl mit curl lautet ( Sonderzeichen müssen als HTML Entities geschrieben werden. Eine Liste gibt es z.B bei https://www.freeformatter.com/html-entities.html):
curl -G -d "from=Langenthal" -d "to=Airolo" -d "datetime=2025-07-28T07%3A00" -d "limit=4" http://transport.opendata.ch/v1/connections >fahrplan.json
Für das Auslesen der Daten verwende ich jq. Dieses Programm lässt sich in Debian installieren mit apt install jq. Zuerst möchte ich eine Übersicht der Züge mit Angabe der Reisedauer. Der Befehl lautet:
jq -r '.connections[] | [.from.station.name, .to.station.name, .from.departure, .duration ] | @tsv' fahrplan.json
Ausgabe:
Nun möchte ich die Details zur ersten Verbindung (connections[0]). Der Befehl lautet:
jq -r '
.connections[0].sections[].journey.passList[]
| {Location: .station.name,arrival,departure, platform}
' fahrplan.json | mlr --ijson --opprint --barred cat
Falls das Programm mlr fehlt, lässt es sich installieren mit Befehl apt install miller. Der Befehl mlr gibt Daten aus verschiedenen Quellen in einer schönen Tabelle aus.
Ausgabe:
Nach einer weiteren Abfrage bei opendata.ch ab Bern und Ausgabe der Zwischenstationen ergibt sich der Treffpunkt in Arth-Goldau.
Mit folgendem Befehl werden auch die Zugnummern ausgegeben:
jq -r '.connections[0].sections[][]
| {Location: .station.name,arrival,departure, platform,category,number}
' fahrplan.json | mlr --ijson --opprint --barred cat | sed 's/null/ /g' | aha >fahrplan.html
Mit dem sed Befehl entferne ich die "null"-Werte und erstelle mit dem Befehl aha eine HTML-Datei. Am Bildschirm sieht es so aus:
Und dies ist die Ausgabe der Verbindung via Zürich:
Titelbild: https://pixabay.com/de/photos/zug-bahnhof-plattform-eisenbahn-5961146/
Cooler Tipp, danke! Mal gucken, ob das auch bei anderen Verkehrsverbünden wir de Hamburger HVV geht.
Da das eine Schweizer Seite ist, denke ich eher nicht.
Kennt jemand zufällig jemanden bei opendata.ch? Deren RSS-Feed funktioniert nicht und ich hatte mich diesbezüglich bereits mal dort gemeldet.
Ein Portal dass sich FOSS auf die Kape schreibt, deren Blog aber keinen RSS Feed hat, ist meiner Meinung nach nicht sehr autenthisch..
Das ist soo cool. Das probiere ich auch mal, am besten mit Shell alias:
alias bus=skript_das_Bus_Abfahrtszeiten_anzeigt.bash
Vielleicht findet hier jemand was für die Deutsche Bahn: https://developer-docs.deutschebahn.com/doku/apis
Für Zuge von und nach Frankreich (ab Basel oder Freiburg, Düsseldorf, Köln, etc:) gibt es diese Webseite, die Datenschutz, Werbe- und Cookiefreiheit zu ihren zentralen Grundsätzen erklärt hat.
https://www.12train.com/
Es handelt sich eigentlich um ein Reisebüro, dass einen besonderen Vertrag mit der franz. Bahngesellschaft. SNCF abgeschlossen hat, damit es die Fahrpläne auf ihrer Webseite anzeigen darf.
Ist aber halt nur für Frankreich bzw. für die gemeinsam von SNCF, SBB und DB betriebene Züge.
Cool - in Deutschland gibt es solche API meine ich nicht. Würde auch wenig helfen, da ein statischer Fahrplan vermutlich nicht eingehalten wird ;-)
Besonders interessant finde ich ja das Tool miller bzw. mlr. Der Hinweis auf die DB-Apis st auch gut, aber leider sind in Deutschland Fahrplan und tatsächliche Abfahrts-/Ankunftszeiten zwei völlig verschiedene Dinge :(
An vielen haltestellen gibts bei den analogen Fahrplänen einen QRcode, der auf eine Webseite verlinkt auf der nur gerade die nächsten Abfahrten der halte stelle aufgeführt sind. Das ist die selbe Quelle, die gewisse Bars/Pubs auch nutzen um auf einem Bildschirm die nächsten Abfahrten anzuzeigen.