From 45845964a3028b8baf35e447e3fdb4c67e39eec0 Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Tue, 5 Nov 2024 21:38:51 +0100 Subject: IRIS, HAFAS: Pass version=raw to obtain raw serialized Perl objects --- lib/DBInfoscreen/Controller/Stationboard.pm | 3 +++ templates/layouts/app.html.ep | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index 0e1c6aa..8c8365f 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -1977,6 +1977,9 @@ sub handle_result { ); return; } + elsif ( $apiver eq 'raw' ) { + push( @departures, $result ); + } else { # apiver == 3 if ( $result->isa('Travel::Status::DE::IRIS::Result') ) { my ( $delay_arr, $delay_dep, $sched_arr, $sched_dep ); diff --git a/templates/layouts/app.html.ep b/templates/layouts/app.html.ep index ee8a2dd..ce82662 100644 --- a/templates/layouts/app.html.ep +++ b/templates/layouts/app.html.ep @@ -281,17 +281,21 @@ Bitte eine Station aus der Liste auswählen
  • Die Parameter mode=json&version=3 (alternativ https://dbf.finalrewind.org/Bahnhofsname.json?version=3) - bieten ein JSON-IRIS-Interface. Die route-Elemente können zusätzlich + bieten ein JSON-Interface für IRIS- und HAFAS-Abfahrten. + Die route-Elemente können zusätzlich die Felder "isAdditional" oder "isCancelled" enthalten, der Rest sollte selbsterklärend sein. Im Fehlerfall fehlt das "departures"-Element, stattdessen wird ein "error"-Element mit Fehlermeldung zurückgegeben. Bitte maximal 30 Anfragen pro Minute und insbesondere nur eine Anfrage pro Station und Minute – eine höhere Auflösung haben die Backenddaten ohnehin nicht.
  • -
  • Ein JSON-Interface für Zugdetails ist in Arbeit.
  • Mit limit kann die Anzahl der angezeigten / im JSON enthaltenen Abfahrten eingeschränkt werden, z.B. limit=10 für die ersten zehn.
  • +
  • mode=json&version=raw + erlaubt direkten Zugriff auf die serialisierten Travel::Status::DE::{EFA,HAFAS,IRIS}-Objekte. + Hier gibt es keine stabile API.
  • +
  • Zugdetails sind ebenfalls per JSON verfügbar und ebenso ohne stabile API.
  • Dieser Dienst ist Open Source-Software und kann leicht auf eigenen Servern installiert werden. Automatisierte Crawler, die mehrere Dutzend Stationen pro Minute -- cgit v1.2.3