Travel::Status::DE::IRIS - Interface to IRIS based web departure monitors.
Blocking variant:
use Travel::Status::DE::IRIS; my $status = Travel::Status::DE::IRIS->new(station => "Essen Hbf"); for my $r ($status->results) { printf( "%s %s +%-3d %10s -> %s\n", $r->date, $r->time, $r->delay || 0, $r->line, $r->destination ); }
Non-blocking variant (EXPERIMENTAL):
use Mojo::Promise; use Mojo::UserAgent; use Travel::Status::DE::IRIS; use Travel::Status::DE::IRIS::Stations; Travel::Status::DE::IRIS->new_p(station => "Essen Hbf", promise => 'Mojo::Promise', user_agent => Mojo::UserAgent->new, get_station => \&Travel::Status::DE::IRIS::Stations::get_station, meta => Travel::Status::DE::IRIS::Stations::get_meta())->then(sub { my ($status) = @_; for my $r ($status->results) { printf( "%s %s +%-3d %10s -> %s\n", $r->date, $r->time, $r->delay || 0, $r->line, $r->destination ); } })->wait;
version 1.90
Travel::Status::DE::IRIS is an unofficial interface to IRIS based web departure monitors such as https://iris.noncd.db.de/wbt/js/index.html?typ=ab&style=qrab&bhf=EE&SecLang=&Zeilen=20&footer=0&disrupt=0.
Requests schedule and realtime data for a specific station at a specific point in time. Returns a new Travel::Status::DE::IRIS object.
Arguments:
A DateTime(3pm) object specifying the point in time. Optional, defaults to the current date and time.
IRIS base url, defaults to http://iris.noncd.db.de/iris-tts/timetable
.
A train may change its ID and number at a station, indicating that although the previous logical train ends here, the physical train will continue its journey under a new number to a new destination. A notable example is the Berlin Ringbahn, which travels round and round from Berlin Südkreuz to Berlin Südkreuz. Each train number corresponds to a single revolution, but the actual trains just keep going.
The IRIS backend returns two results for each transfer train: An arrival-only result using the old ID (linked to the new one) and a departure-only result using the new ID (linked to the old one). By default, this library merges these into a single result with both arrival and departure time. Train number, ID, and route are taken from the departure only. The original train ID and number are available using the old_train_id and old_train_no accessors.
In case this is not desirable (e.g. because you intend to track a single train to its destination station and do not want to implement special cases for transfer trains), set keep_transfers to a true value. In this case, backend data will be reported as-is and transfer trains will not be merged.
Compute only results which are scheduled less than int minutes in the future. Default: 120 (2 hours).
Note that the DeutscheBahn IRIS backend only provides schedules up to four to five hours into the future. So in most cases, setting this to a value above 240 minutes will have little effect. However, as the IRIS occasionally contains unscheduled departures or qos messages known far in advance (e.g. 12 hours from now), any non-negative integer is accepted.
Also check trains whose scheduled departure lies up to int minutes in the past. Default: 0.
This is useful when requesting departures shortly after a full hour. If, for example, a train was scheduled to depart on 11:59 and has 5 minutes delay, it will not be shown when requesting departures on or after 12:00 unless lookbehind is set to a value greater than zero.
Note that trains with significant delay (e.g. +30) may still be shown in this case regardless of the setting of lookbehind, since these receive special treatment by the IRIS backend.
Passed on to LWP::UserAgent->new
. Defaults to { timeout => 10 }
,
you can use an empty hashref to unset the default.
A Cache::File(3pm) object used to cache station and timetable requests. Optional.
A Cache::File(3pm) object used to cache realtime data requests. Optional.
Mandatory: Which station to return departures for. Note that this is not a station name, but a station code, such as "EE" (for Essen Hbf) or "KA" (for Aachen Hbf). See Travel::Status::DE::IRIS::Stations(3pm) for a name to code mapping.
Sometimes, Deutsche Bahn splits up major stations in the IRIS interface. For instance, "Köln Messe/Deutz" actually consists of "Köln Messe/Deutz" (KKDZ), "Köln Messe/Deutz Gl. 9-10" (KKDZB) and "Köln Messe/Deutz (tief)" (KKDT).
By default, Travel::Status::DE::IRIS only returns departures for the specified station. When this option is set to a true value, it will also return departures for all related stations.
Return a promise yielding a Travel::Status::DE::IRIS instance ($status
)
on success, or an error message (same as $status->errstr
) on failure.
This function is experimental and may be changed or remove without warning.
In addition to the arguments of new, the following mandatory arguments must be set:
Promises implementation to use for internal promises as well as new_p return value. Recommended: Mojo::Promise(3pm).
Reference to Travel::Status::DE::IRIS::Stations::get_station().
The dictionary returned by Travel::Status::DE::IRIS::Stations::get_meta().
User agent instance to use for asynchronous requests. The object must support
promises (i.e., it must implement a get_p
function). Recommended:
Mojo::UserAgent(3pm).
In case of a fatal HTTP request or IRIS error, returns a string describing it. Returns undef otherwise.
Returns a list of hashes describing related stations whose arrivals/departures are included in results. Only useful when setting with_related to a true value, see its documentation above for details.
Each hash contains the keys uic (EVA number; often same as UIC station ID), name (station name), and ds100 (station code). Note that stations returned by related_stations are not necessarily known to Travel::Status::DE::IRIS::Stations(3pm).
Returns a list of Travel::Status::DE::IRIS::Result(3pm) objects, each one describing one arrival and/or departure.
In case of a (probably) non-fatal HTTP request or IRIS error, returns a string describing it. Returns undef otherwise.
None.
Some backend features are not yet exposed.
db-iris(1), Travel::Status::DE::IRIS::Result(3pm), Travel::Status::DE::IRIS::Stations(3pm)
Copyright (C) 2013-2023 by Birte Kristina Friesel <derf@finalrewind.org>
This module is licensed under the same terms as Perl itself.