Travel::Routing::DE::EFA - unofficial interface to EFA-based itinerary services
use Travel::Routing::DE::EFA; my $efa = Travel::Routing::DE::EFA->new( efa_url => 'https://app.vrr.de/vrrstd/XML_TRIP_REQUEST2';', origin => [ 'Essen', 'HBf' ], destination => [ 'Duisburg', 'HBf' ], ); for my $route ( $efa->routes ) { for my $part ( $route->parts ) { printf( "%s at %s -> %s at %s, via %s to %s\n", $part->departure_time, $part->departure_stop, $part->arrival_time, $part->arrival_stop, $part->train_line, $part->train_destination, ); } print "\n"; }
version 2.24
Travel::Routing::DE::EFA is a client for EFA-based itinerary services. You pass it the start/stop of your journey, maybe a time and a date and more details, and it returns the up-to-date scheduled connections between those two stops.
It uses LWP::UserAgent and XML::LibXML for this.
Returns a new Travel::Routing::DE::EFA object and sets up its POST data via %opts.
Valid hash keys and their values are:
Mandatory. Sets the entry point to the EFA itinerary service.
See efa --list
for a list of supported services.
If you found a URL not listed there, please send it to <derf@finalrewind.org>.
Mandatory. Sets the start of the journey. type is optional and may be one of stop (default), address (street and house number) or poi ("point of interest").
Mandatory. Sets the end of the journey, see origin.
Optional. Specifies an intermediate stop which the resulting itinerary must contain. See origin for arguments.
Journey end time
Journey start time. Default: now
Journey date. Also accepts the string tomorrow. Default: today
Do not use certain transport types for itinerary. Accepted arguments: zug, s-bahn, u-bahn, stadtbahn, tram, stadtbus, regionalbus, schnellbus, seilbahn, schiff, ast, sonstige
Set maximum number of interchanges
Return up to num connections. If unset, the default of the respective EFA server is used (usually 4 or 5).
Prefer either fast connections (default), connections with low wait time or connections with little distance to walk
If $int is a true value: Take stops close to the stop/start into account and possibly use them instead. Up to $int minutes of walking are considered acceptable.
Otherwise: Do not take stops close to stop/start into account.
Include only local trains into itinerary (default), all but ICEs, or all.
The latter two are usually way more expensive for short routes.
Set walk speed. Default: normal
If true: Request connections allowing passengers with bikes. Note that the backed may return an empty result if no such connection exists or bike-support simply isn't known.
If true: Request connections which only use low-platform ("Niederflur") vehicles. Note that the backed will return an empty result if no such connection exists.
If true: Request connections which are wheelchair-accessible. Again, note that the backend may return an empty result if no such connection exists or wheelchair-support isn't known.
If true: Request that transfers do not require usage of elevators.
If true: Request that transfers do not require usage of escalators.
If true: Request that transfers do not require stairs to be taken (i.e. ramps, escalators, elevators or similar must be available).
Options to pass to LWP::UserAgent->new
.
By default, new will create a POST request and submit it. If you do not want it to be submitted yet, set this to 0.
Submit the query to efa_url.
%opts is passed on to LWP::UserAgent->new
.
Returns a list of Travel::Routing::DE::EFA::Route(3pm) elements. Each one contains one method of getting from start to stop.
The following methods act like the arguments to new. See there.
Returns a list of known EFA entry points. Each list element is a hashref with the following elements.
When encountering an error, Travel::Routing::DE::EFA throws a Travel::Routing::DE::EFA::Exception(3pm) object.
None known.
Copyright (C) 2009-2023 by Birte Kristina Friesel <derf@finalrewind.org>
This program is licensed under the same terms as Perl itself.