~derf / projects / Travel::Status::DE::IRIS v1.96
dark mode

db-iris ist ein CLI-Client für die IRIS Web-Bahnhofstafel der Deutschen Bahn. Es zeigt Ankunft oder Abfahrt von Zügen an deutschen Bahnhöfen mit Echtzeitdaten, detaillierten Service- und Verspätungsmeldungen und Umleitungen an. Ausgaben können wahlweise als Text oder zur Weiterverarbeitung in JSON erfolgen.

Es ist über CPAN und als Tar-Archiv verfügbar sowie fertig paketiert als Debian-Paket und Docker-Container. Installationsanweisungen finden sich in der Travel::Status::DE::IRIS README.

db-iris is a commandline client for the Deutsche Bahn IRIS web departure monitor. It shows arrivals and departures of trains in german stations augmented with real-time data, detailed quality of service and delay notices, and route diversions. It supports both human-friendly text and machine-readable JSON output.

It can be installed via CPAN or built from the tar archive linked above. It has also been packaged for Debian and Docker. See the Travel::Status::DE::IRIS README for installation instructions.

Beispielausgabe / Example Output:

resonance ~ > db-iris -oq,D 'Dortmund Hbf' 
22:45 +1  RE 1        Aachen Hbf          11
22:47     ABR S2      Recklinghausen Hbf  6 
22:50     ICE 209     Basel Bad Bf        16
22:51 +4  RB 59       Dortmund Hbf        2 
22:52     RB 51       Coesfeld(Westf)     26
22:52     S 5         Dortmund Hbf        5 
22:55 +1  RE 6        Bielefeld Hbf       10  Türstörung
22:56     S 1         Solingen Hbf        7 
22:57     RE 3        Dortmund Hbf        26
22:58     Bus RB32    Castrop-Rauxel Hbf    
23:03     RE 3        Düsseldorf Hbf      26
23:04     RB 59       Soest               2 
23:05 +4  S 1         Dortmund Hbf        7 
23:07     RB 51       Dortmund Hbf        31
23:12     ABR S2      Dortmund Hbf        6 
23:14     RE 6        Düsseldorf Hbf      11
23:16 +2  RE 1        Hamm(Westf)Hbf      8 
23:17     ABR S2      Essen Hbf           6 
23:21 +3  ICE 842     Köln Hbf            16  Abweichende Wagenreihung
23:22     S 5         Dortmund Hbf        4 
23:23     RE 57       Bestwig             3 
└────     RB 53       Iserlohn            3 
23:26     S 1         Düsseldorf Hbf      7 
23:27     RB 52       Dortmund Hbf        3 
23:28     RB 50       Dortmund Hbf        31
23:30     S 5         Hagen Hbf           5 
23:32     RB 52       Hagen Hbf           3 
23:34     RB 50       Lünen Hbf           31
23:35     S 1         Dortmund Hbf        7 
23:35     Bus SEV     Dortmund Hbf          
23:37 -1  ICE 1622    Dortmund Hbf        10

Travel-Status-DE-IRIS-1.96.tar.gz (signature)

  • Re-add Wipperliese stations (service resumes on March 29th, 2024)
  • IRIS->new / get_station: correctly handle non-EVA station identifiers in with_related mode. Previously, these caused (harmless, but annoying) "isn't numeric in numeric eq (==)" warnings.

Travel-Status-DE-IRIS-1.95.tar.gz (signature)

  • Update qos/delay message texts

Travel-Status-DE-IRIS-1.94.tar.gz (signature)

  • Update stations list
  • Do not use now-deprecated smartmatch features

Travel-Status-DE-IRIS-1.92.tar.gz (signature)

  • Update meta database (accidentally omitted in 1.91)

Travel-Status-DE-IRIS-1.91.tar.gz (signature)

  • Update stations list. Frohes neues Fahrplanjahr.

Travel-Status-DE-IRIS-1.90.tar.gz (signature)

  • Update stations list
  • Result: weaken (circular) wing references
  • Result: include arrival_wings departure_wings replaced_by replacement_for in TO_JSON

Travel-Status-DE-IRIS-1.84.tar.gz (signature)

  • Update stations list
  • Add QoS code 78

Travel-Status-DE-IRIS-1.79.tar.gz (signature)

  • Stations: Further geoocordinate fixes for Dutch stations.

Travel-Status-DE-IRIS-1.80.tar.gz (signature)

  • Update stations list
  • Fix MANIFEST (broken in 1.79)

Travel-Status-DE-IRIS-1.78.tar.gz (signature)

  • Stations: Fix geocoordinates for a variety of Dutch stations. In some cases, they were off by several hundred kilometers.

Travel-Status-DE-IRIS-1.77.tar.gz (signature)

  • Handle "Betriebsstelle nicht bekannt" in routes.
  • Update station list

Travel-Status-DE-IRIS-1.76.tar.gz (signature)

  • Improve handling of stations that are not yet present in IRIS ("Betriebsstelle nicht bekannt 1234567")
  • Update station list

Travel-Status-DE-IRIS-1.75.tar.gz (signature)

  • Update station list
  • Note that station names are no longer considered unique. get_stations() and the get_station_by_… set of functions may return multiple entries with the same name, but different DS100 and EVA IDs. For now, get_station_by_name() retains its behaviour of only returning a single match if the name matches exactly – for multiple stations with the same name, it returns the one with the lowest EVA number. get_station_by_name() return value and semantics may change in a future major release.

Travel-Status-DE-IRIS-1.74.tar.gz (signature)

  • Stations: Use GIS::Distance, as documented. Release 1.73 accidentally used Geo::Distance in the bundled Stations.pm file instead.

Travel-Status-DE-IRIS-1.73.tar.gz (signature)

  • Result: Add arrival_hidden and departure_hidden accessors

Travel-Status-DE-IRIS-1.69.tar.gz (signature)

  • Repair Travel::Status::DE::IRIS::Stations module (broken in Release 1.68)

Travel-Status-DE-IRIS-1.67.tar.gz (signature)

  • IRIS->new_p: Fix bug in related_stations accessor
  • Update IRIS station list

Travel-Status-DE-IRIS-1.66.tar.gz (signature)

  • Treat Essen-Dellwig and Essen-Dellwig Ost as separate stations. Although they are grouped in the IRIS backend, they are distinct stations. Both have platforms 1 & 2, so grouping them leads to confusion.
  • Update IRIS station list

Travel-Status-DE-IRIS-1.64.tar.gz (signature)

  • Add experimental new_p constructor for non-blocking operation with Mojo::Promise and Mojo::UserAgent.

Travel-Status-DE-IRIS-1.62.tar.gz (signature)

  • import station name changes and removals from Winterfahrplan 2022

Travel-Status-DE-IRIS-1.61.tar.gz (signature)

  • Switch to GIS::Distance(::Fast), as Geo::Distance is deprecated and Geo::Distance::XS is no longer available. Note that the Debian package still uses Geo::Distance, as GIS::Distance is not trivial to package for Debian.

Travel-Status-DE-IRIS-1.60.tar.gz (signature)

  • Update IRIS station list; remove stations which no longer receive train services

Travel-Status-DE-IRIS-1.59.tar.gz (signature)

  • Stations: get_station, get_station_by_name: Return immediately if requested station is undef or empty
  • Add stations Menningen-Leitishofen, Meßkirch, Sauldorf, Alvesta station, Lund Central, and Stockholm Central

Travel-Status-DE-IRIS-1.58.tar.gz (signature)

  • Result->has_realtime: Fix cancellations not being reported as realtime
  • db-iris: Annotate arrival/departure times which should have realtime data, but don't, with a question mark.

Travel-Status-DE-IRIS-1.57.tar.gz (signature)

  • Result: Add arrival_has_realtime, departure_has_realtime, has_realtime accessors
  • Result->delay_messages: Leave out superseded messages (right now, the only case is "Defekt am Zug" -> "Behobener Defekt am Zug")
  • Stations: Add swiss and austrian stations reachable from Waldshut and Lindau

Travel-Status-DE-IRIS-1.56.tar.gz (signature)

  • Update IRIS station list. Adds support for lots of Albtal-Verkehrs-Gesellschaft stations around Karlsruhe
  • Update some delay/qos messages ahead of a DB-wide change planned for October 2021

Travel-Status-DE-IRIS-1.55.tar.gz (signature)

  • Fix transfer trains getting lost when requested from a related station. Notable offender: "Berlin Südkreuz" lacked S 41 / S42 (ring line from Südkreuz (S) to Südkreuz (S) with transfer to/from the next/previous incarnation), as it referenced "Berlin Südkreuz (S)". "Berlin Südkreuz (S)" itself worked fine.

Travel-Status-DE-IRIS-1.54.tar.gz (signature)

  • Add stations DKP, DRBS, DSBG, KWHD, NCBD, TENS, XLHW

Travel-Status-DE-IRIS-1.53.tar.gz (signature)

  • import station name changes and station removals from Winterfahrplan 2021

Travel-Status-DE-IRIS-1.52.tar.gz (signature)

  • get_station_by_name: Fix crash (unhandled exception) when the station name is an invalid regular expression

Travel-Status-DE-IRIS-1.51.tar.gz (signature)

  • Add BER airport stations
  • Rename Schönefeld airport to BER Terminal 5

Travel-Status-DE-IRIS-1.50.tar.gz (signature)

  • Add station Brunnen(Oberbay)
  • Incorporate station name and eva number changes from DB IRIS (affects nine stations)
  • Add geocoordinates to 17 stations previously lacking those

Travel-Status-DE-IRIS-1.48.tar.gz (signature)

  • Add stations Neuruppin Seedamm (temporary, teardown expected Dec 2020), Amriswil, and Baar(CH)

Travel-Status-DE-IRIS-1.47.tar.gz (signature)

  • Work around (probably incorrect) IRIS coupling of Norddeich and Norddeich Mole stations

Travel-Status-DE-IRIS-1.46.tar.gz (signature)

  • Document LWP::Protocol::https dependency
  • Discourage building with Geo::Distance 0.21. Geo::Distance 0.21, released on 7 Mar 2019, is the only release using GIS::Distance's distance_km method -- which was removed on 9 Mar 2019 in GIS::Distance 0.14

Travel-Status-DE-IRIS-1.44.tar.gz (signature)

  • Add delay code 67 (Behördliche Anordnung). Patch by @marudor

Travel-Status-DE-IRIS-1.45.tar.gz (signature)

  • Provide properly versioned Stations.pm file

Travel-Status-DE-IRIS-1.43.tar.gz (signature)

  • db-iris: Correctly set cache expiry. In 1.42, backend replies were cached indefinitely due to a typo

Travel-Status-DE-IRIS-1.42.tar.gz (signature)

  • Result: Fix TO_JSON method
  • db-iris: Cache backend results by default
  • db-iris: New options: --json and --no-cache

Travel-Status-DE-IRIS-1.41.tar.gz (signature)

  • Result: Add wing_of accessor
  • Follow name and DS100 change of Freiburg West (RFW) to Freiburg-Landwasser (RFLW)
  • Add more stations

Travel-Status-DE-IRIS-1.40.tar.gz (signature)

  • Incorporate the last few years' worth of station name changes

Travel-Status-DE-IRIS-1.39.tar.gz (signature)

  • Add missing geocoordinates to nearly all remaining stations (thanks to @marudor)
  • Add stations opened this year (thanks to @marudor)

Travel-Status-DE-IRIS-1.38.tar.gz (signature)

  • Add geocoordinates for belgian stations (patch by @Knuspel)
  • New IRIS option: keep_transfers

Travel-Status-DE-IRIS-1.37.tar.gz (signature)

  • Add geocoordinates for french stations served by Thalys/TGV (patch by Florian Wurzel)

Travel-Status-DE-IRIS-1.36.tar.gz (signature)

  • Update stations list, prune duplicates and outdated entries (251 additions, 155 deletions). Incorporates patches by Moritz Schlarb and @Knuspel -- Thanks!
  • Update documentation to reflect that EVA IDs used by DB IRIS are not the same as UIC station IDs (they just happen to be identical in 99% of cases)
  • Stations are now stored in share/stations.json. See README.md for station management hints.

Travel-Status-DE-IRIS-1.35.tar.gz (signature)

  • Add additional dutch and austrian stations (thanks to @Knuspel)
  • Add geocoordinates for several of those (thanks to @Knuspel)

Travel-Status-DE-IRIS-1.34.tar.gz (signature)

  • Improve request speed when using with_related by ignoring subway stations which do not have results anyways (e.g. in Hannover Hbf)
  • Do not forward unexpected IRIS message codes (ID ≥ 100) to the user
  • IRIS: Add ->related_stations accessor

Travel-Status-DE-IRIS-1.33.tar.gz (signature)

  • Fix $result->route_pre / route_post accessors providing bogus data when all previous/following stops are cancelled. They used to return sched_route_pre / sched_route_post instead of an empty list in this case.

Travel-Status-DE-IRIS-1.32.tar.gz (signature)

  • Travel::Status::DE::IRIS::Stations: Add geocoordinates fo some swiss and austrian stations

Travel-Status-DE-IRIS-1.31.tar.gz (signature)

  • Travel::Status::DE::IRIS::Stations: Add EVA/UIC station numbers and use full names for non-german stations.

Travel-Status-DE-IRIS-1.30.tar.gz (signature)

  • Result: Add ->station and ->station_uic accessors. These are useful to determine which station an individual train belongs to when requesting departures of multiple stations at once using the with_related option.

Travel-Status-DE-IRIS-1.29.tar.gz (signature)

  • Add QoS code 72 (no info/entertainment system available)
  • Fix erroneous QoS codes 83, 91, 92

Travel-Status-DE-IRIS-1.28.tar.gz (signature)

  • Add 234 stations missing from regular DB Open Data station list
  • Add delay code 14 (Technische Störung am Bahnhof)

Travel-Status-DE-IRIS-1.27.tar.gz (signature)

  • Add station Berlin Zoologischer Garten (S)

Travel-Status-DE-IRIS-1.26.tar.gz (signature)

  • Fix DS100 code for Berlin Westkreuz
  • Add station Bonn UN Campus

Travel-Status-DE-IRIS-1.25.tar.gz (signature)

  • Do not ignore trains with arrival < lookahead, even if departure >= lookahead.
  • Add delay code 66 (flooded area)

Travel-Status-DE-IRIS-1.24.tar.gz (signature)

  • Remove erroneous double entry for Düsseldorf-Bilk
  • Fix a warning when encountering unusual train types

Travel-Status-DE-IRIS-1.23.tar.gz (signature)

  • Ignore apparently useless "ZOB" (central omnibus station) links at most main stations. This decreases the average runtime and also fixes some S-Bahn trains being reported twice in München Hbf.
  • Result->qos_messages: Skip superseded messages. They're still present in ->messages.
  • Result->route_interesting: Filter Hbf suffixes (not just "Hbf"); include .hl.n (czech main station).

Travel-Status-DE-IRIS-1.22.tar.gz (signature)

  • Add delay code 4 (unforeseen staff shortage, thanks to Fabian Schwarz)
  • Add delay code 37 (technical failure in carriage, thanks to @marudor)

Travel-Status-DE-IRIS-1.21.tar.gz (signature)

  • Fix crash when receiving invalid XML due to network issues

Travel-Status-DE-IRIS-1.20.tar.gz (signature)

  • Use schedule instead of realtime data when determining whether a train falls within the lookahead time frame. This fixes severely delayed trains being ignored even if their scheduled arrival/departure is very soon or has already passed.

Travel-Status-DE-IRIS-1.19.tar.gz (signature)

  • db-iris: Fix -ot ignoring arrival delay if departure is on time
  • Add delay code 12 (waiting for passengers in a ship)
  • Result->route_interesting: Include dutch and swiss central station names
  • Result: New accessors arrival_delay and departure_delay

Travel-Status-DE-IRIS-1.18.tar.gz (signature)

  • Update station dataset to Open Data Haltestellenliste 2017-09

Travel-Status-DE-IRIS-1.17.tar.gz (signature)

  • Fix DS100 codes for Dülmen, Stuttgart Hbf (tief), and Wolfenbüttel
  • db-iris: Support -d/--date tomorrow

Travel-Status-DE-IRIS-1.16.tar.gz (signature)

  • Fix miscalculated delays of prematurely terminating trains
  • Lookahead and lookbehind are now interpreted with 1-minute granularity. Note that this also affects the default lookahead.
  • Fix floating point-related test failures on some architectures
  • New ./Build test dependency: Test::Number::Delta

Travel-Status-DE-IRIS-1.15.tar.gz (signature)

  • Performance improvements
  • Distinguish between cancelled/additional arrivals and departures
  • Travel::Status::DE::IRIS::Result: New accessors arrival_is_additional, arrival_is_cancelled, departure_is_additional, departure_is_cancelled and is_additional.
  • Travel::Status::DE::IRIS::Result: is_cancelled now only returns true if both arrival and departure have been cancelled.

Travel-Status-DE-IRIS-1.14.tar.gz (signature)

  • IRIS->new: Add optional argument lookbehind
  • db-iris: Remove a useless HTTP request, resulting in slightly faster responses
  • db-iris -V / --track-via: Improve support for faraway stations

Travel-Status-DE-IRIS-1.13.tar.gz (signature)

  • Fix support for line numbers, remove manual line map workaround

Travel-Status-DE-IRIS-1.12.tar.gz (signature)

  • Unfortunately, line numbers are not available at the moment due to IRIS backend changes. Some lines in NRW have been provided with a manual line number mapping to remedy this.
  • Fix DS100 code for "Bielefeld Hbf"
  • Travel::Status::DE::IRIS::Stations::get_station_by_location: Fix bug in num_matches (parameter was silently ignored)

Travel-Status-DE-IRIS-1.11.tar.gz (signature)

  • IRIS->new: Fix partially broken cache handling when using with_related => 1
  • Improve parser performance

Travel-Status-DE-IRIS-1.10.tar.gz (signature)

  • Add qos code 71 ("WLAN in einzelnen Wagen nicht verfügbar")
  • Fix DS100 codes for "Geilenkirchen" and "Montabaur"
  • Travel::Status::DE::IRIS::Stations::get_station: Add support for UIC / EVA numbers

Travel-Status-DE-IRIS-1.09.tar.gz (signature)

  • Travel::Status::DE::IRIS::Result: Fix ->classes accessor (returned a string instead of a list)
  • Fix DS100 codes for "Stuttgart Hbf (tief)" and "Stuttgart-Feuerbach"

Travel-Status-DE-IRIS-1.08.tar.gz (signature)

  • New dependency: Geo::Distance
  • Update DS100 code list. Station names are now unabbreviated, e.g. "Dortmund Univeristät" instead of "Do Universität". Also, stations without train service are no longer included. Note that this list might contain errors. If you get "Request error: Station ... has no associated timetable" for a station which worked with previous versions, please submit a bug report.
  • Travel::Status::DE::IRIS::Stations now also returns international station number, longitude and latitutde for most stations
  • New method Travel::Status::DE::IRIS::Stations::get_station_by_location allows station lookup by geolocation

Travel-Status-DE-IRIS-1.07.tar.gz (signature)

  • Fix inefficient requests for stations with with heavily cross-referenced related-station tags (most notable example: München Hbf)

Travel-Status-DE-IRIS-1.06.tar.gz (signature)

  • Partially fix slow response time and excessive network requests for stations with heavily cross-referenced related-station tags (most notable example: München Hbf). The implementation is still slightly inefficient in these cases, but far better than before -- A complete fix will follow in the next release. Note that db-iris calls using -x/--exact/--no-related are not affected by this issue.

Travel-Status-DE-IRIS-1.05.tar.gz (signature)

  • Update station list. It now uses data supplied by the Deutsche Bahn Open Data portal.
  • db-iris: New option -x / --exact / --no-related
  • IRIS->new: New options main_cache, realtime_cache and with_related
  • IRIS: Add ->station and ->related_stations accessors
  • db-iris: Include related stations in query output (for instance, "Köln Messe Deutz" will include "Köln Messe Deutz (tief)" and "Köln Messe Deutz Gl. 9-10"). Use --exact / --no-related to disable this.
  • IRIS: Same. Also, IRIS->new can now be passed Cache objects to cache HTTP requests for a user-defined time. This is most useful when building infoscreens and similar, since the scheduled and station data never changes and can therefore be cached to decrease network load and increase response time.

Travel-Status-DE-IRIS-1.04.tar.gz (signature)

  • Result: Add qos code 79 ("Ohne Mehrzweckabteil")
  • db-iris: Accept UIC station codes
  • Fix warnings with recent DateTime::Format::Strptime releases
  • Improve parser speed

Travel-Status-DE-IRIS-1.03.tar.gz (signature)

  • Result: Add info key 900
  • Station: Improve get_station matching quality by using the Levenshtein edit distance in addition to simple substring matching
  • new dependency: Text::LevenshteinXS (see README for notes about drop-in replacements)
  • new dependency: List::UtilsBy

Travel-Status-DE-IRIS-1.02.tar.gz (signature)

  • Added github repo to dist metadata and the doc
  • Result: distinguish between overcrowded trains (q97) and very overcrowded trains (q96)
  • Result: Verify delay key 60 ("delays because of storm")
  • Result: Add qos key 70 ("no wifi" -- not entirely sure yet)

Travel-Status-DE-IRIS-1.01.tar.gz (signature)

  • IRIS->new: Fix default lwp_options value (was documented, but not used)
  • Result->route_interesting: Also consider airports
  • Stations: Update DS100 code list. Fixes 9 stations in Köln, Düsseldorf and Wuppertal which had a wrong code/name combination assigned due to a parser error

Travel-Status-DE-IRIS-1.00.tar.gz (signature)

  • IRIS->new: Use lwp_options to explicitly pass arguments to the LWP::UserAgent constructor. Unknown arguments are now longer implicitly passed on
  • db-iris: Improve output format for wing trains

Travel-Status-DE-IRIS-0.10.tar.gz (signature)

  • Result: Fix deep recursion error in TO_JSON

Travel-Status-DE-IRIS-0.09.tar.gz (signature)

  • Result: Add arrival_wings, departure_wings and is_wing accessors (a wing train is coupled to the respective departure, but has its own ID)
  • db-iris: Indicate wings in output
  • Result: Remove train_no_transfer accessor (was based on erroneous assumptions)
  • Result: Add is_unscheduled, replaced_by and replacement_for accessors
  • db-iris: Add -oR to show replacement information

Travel-Status-DE-IRIS-0.08.tar.gz (signature)

  • Clarify Result->train_id documentation
  • Add IRIS delay/qos keys 13, 60, 75, 76

Travel-Status-DE-IRIS-0.07.tar.gz (signature)

  • Fix a crash related to unscheduled additional stops in a train's route
  • Improve Travel::Status::DE::IRIS::Stations matching
  • Add IRIS delay/qos keys 56, 59, 61, 65, 73, 74, 77

Travel-Status-DE-IRIS-0.06.tar.gz (signature)

  • New non-core module dependency: List::Compare
  • Add support for canceled and additional stops
  • db-iris: Add options -oa and -oc
  • Result: Add accessors additional_stops and canceled_stops
  • Improve support for delayed trains
  • Support additional IRIS delay messages

Travel-Status-DE-IRIS-0.05.tar.gz (signature)

  • Support additional IRIS delay messages

Travel-Status-DE-IRIS-0.04.tar.gz (signature)

  • Fix --track-viastop not matching trains changing their ID at stop
  • Add new (not entirely verified) IRIS delay and qos messages
  • IRIS: add serializable option. Use this if you intend to serialize the list returned by ->results
  • Do not errour out if only partial data is available, show partial data and a warning instead (closes #4)
  • Add several qos and delay messages

Travel-Status-DE-IRIS-0.03.tar.gz (signature)

  • IRIS / db-iris: Add lookahead option
  • db-iris: Fix --via not matching destination of trains with incomplete route data
  • Detect and merge duplicate results caused by train ID changes
  • Result: Provide realtime data in ->platform, add ->sched_platform accessor
  • db-iris: indicate platform changes with an exclamation mark

Travel-Status-DE-IRIS-0.02.tar.gz (signature)

  • Fix warnings when encountering unplanned (fchg-only) trains without arrival or departure platform
  • db-iris: add -V / --track-via option to display departure at start and expected arrival at a destination station
  • db-iris: Add -r / --realtime option to compute times using delay data
  • Result: Remove duplicates in qos_messages and delay_messages, return all messages in reverse order (newest first)

Travel-Status-DE-IRIS-0.01.tar.gz (signature)

  • Initial release. Experimental, API may change without notice