Mit Train2ICS ist es möglich, Zugverbindungen in mehreren Einträgen in Deinem Kalendar festzuhalten. Alles, was Du machen musst, ist Deine Reise zu suchen, die Ergebnisse mit Deinen Zugnummern zu vergleichen, und die Kalendardatei ( ics ) herunterzuladen. In deinem Kalendar erscheinen dann die einzelnen Züge mit Bahnsteig und Abfahrtsbahnhof als Ort. So könnte Siri/kann Google Now dich auch rechtzeitig zum Bahnhof bringen. Top, oder?

Warum dafür eine extra Software?

Ich mag es, wenn ich nicht lange nach Informationen suchen muss. Mit der ICS-Datei, die die Bahn mitliefert (linker Termin), bin ich hinterher aber nicht schlauer. Dass ich an dem Tag von Hannover nach Hause möchte, weiß ich auch so. Auf welches Gleis muss ich? Welche Zugnummer hat mein Zug? Wie lange habe ich Aufenthalt in Dortmund? Mit den Daten (rechts) aus Train2ICS sehe ich alles auf einen Blick und das ohne ekelige Bahn-App.

Ein paar technische Takte zur App

Warum eigentlich “App”? Das ist zwar technisch gesehen richtig, weil es ja eine Web-Anwendung ist, aber UGH! Wie dem auch immer.

Die “App” spricht mit transport.opendata.ch. Warum mit der Schweiz und nicht direkt mit der DB? Nunja, die Deutsche Bahn hat leider keine öffentliche API, weil die Schweizer Bundesbahn (SBB) jedoch auch für Deutschland (und ganz Europa) Zugtickets verkauft und die Schweizer ein bisschen loyaler bezüglich der Offenheit sind, nutze ich halt deren Service.

Für das Erstellen der Kalendar-Einträge nach RFC 5545 nutze ich die PHP-Bibliothek (shame on me!) github.com/eluceo/ical und bin ziemlich zufrieden damit.

Outlook is a bitch. Aber Thunderbird/Lightning nicht weniger. Darum wird beim Importieren mehrerer Termine (Ach was, eine Reise kann mehrere Züge und Umsteigen beinhalten?) ein neuer Kalendar mit dem Dateinamen als Titel erstellt. Momentan befinden sich also etwa 30 Test-Kalendar in meinem Thunderbird-Client. Coole Kalendar-Software wie Google Calendar macht das nicht. Dafür gibt es dort kein Drag- und drop. Meh.

macht das nicht. Dafür gibt es dort kein Drag- und drop. Meh. Die API-Abfrage ist je nach Tagesform extrem langsam (normalerweise immer 0.5-2sek, manchmal aber auch 10sek). Ich versuche die meisten Abfragen daher per AJAX-Call zu holen, sodass die Webseite nicht unnötig lange weiß bleibt.

Unsolved Problems

Die Termine erfahren keine Updates. Meine kleine Software ist nicht in der Lage, minütlich n Bahnfahrten auf Verspätung und Gleiswechsel zu aktualisieren, ad 1, weil das Protokoll das nicht zulässt (ics-Dateien sind ziemlich tot und denken nicht); ad 2, weil die DB diese Daten nicht so einfach hergibt (Die API kann das und noch viel mehr, für deutsche Züge zeigt sie aber nur leere Werte an).

Die angezeigten Verbindungen sind nicht immer die Besten. Wie bereits beschrieben, laufen die Zug-/Verbindungsdaten über die Schweiz, und so wird die ein oder andere Verbindung vielleicht vergessen. Außerdem gibt die API maximal sechs Ergebnisse zurück. Eventuell füge ich noch Felder wie “via” oder “Nur Nahverkehr benutzen” hinzu.

Hintergrund

In der Freakshow #171 wurde sich über Kalendar-Software, deren Standards und die Deutsche Bahn ausgelassen. Besonders im Gedächtnis blieb mir der Satz:

Es kann doch nicht so schwer sein, für eine Reise mit mehreren Zügen mehr als einen acht Stunden langen Termin in den Kalendar zu batzen! (Tim Pritlove, sinngemäß, irgendwann in der Folge.)

Naja, dieses Thema sollte ja jetzt gelöst sein, Tim :) Abgesehen davon mag ich es, alle Termine an einem Ort zu haben und Bahnfahrten gehören eben auch dazu.

Disclaimer

(Das steht auch im Readme vom Github-Repo, darum hier auch nochmal):