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 => 'http://efa.vrr.de/vrr/XSLT_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";
}
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.
- $efa =
Travel::Routing::DE::EFA->new(%opts)
- Returns a new Travel::Routing::DE::EFA object and sets up its POST data
via %opts.
Valid hash keys and their values are:
- efa_url =>
efa_url
- Mandatory. Sets the entry point to the EFA itinerary service. The
following URLs (grouped by country) are known. A service marked with [!]
is not completely supported yet and may not work at all.
- •
- Austria
- <http://efa.ivb.at/ivb/XSLT_TRIP_REQUEST2> (Innsbrucker
Verkehrsbetriebe)
- <http://efa.svv-info.at/sbs/XSLT_TRIP_REQUEST2> (Salzburger
Verkehrsverbund)
- <http://efa.vor.at/wvb/XSLT_TRIP_REQUEST2> (Verkehrsverbund
Ost-Region)
- <http://efaneu.vmobil.at/vvv/XSLT_TRIP_REQUEST2> (Vorarlberger
Verkehrsverbund)
- <http://www.linzag.at/static/XSLT_TRIP_REQUEST2> (Linz AG)
[!]
- The STV / Verkehrsverbund Steiermark is not supported since it returns
data with broken encoding
- •
- Germany
- <http://212.114.197.7/vgnExt_oeffi/XML_TRIP_REQUEST2>
(Verkehrsverbund Grossraum Nuernberg)
- <http://efa.vrr.de/vrr/XSLT_TRIP_REQUEST2> (Verkehrsverbund
Rhein-Ruhr)
- <http://app.vrr.de/standard/XML_TRIP_REQUEST2> (Verkehrsverbund
Rhein-Ruhr with support for --full-route)
- <http://www2.vvs.de/vvs/XSLT_TRIP_REQUEST2> (Verkehrsverbund
Stuttgart)
If you found a URL not listed here, please send it to
<derf@finalrewind.org>.
- origin =>
[ city, stop [ , type ]
]
- 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").
- destination
=> [ city, stop [ , type ]
]
- Mandatory. Sets the end of the journey, see origin.
- via => [
city, stop [ , type ] ]
- Optional. Specifies an intermediate stop which the resulting itinerary
must contain. See origin for arguments.
- arrival_time
=> HH:MM
- Journey end time
- departure_time
=> HH:MM
- Journey start time. Default: now
- date =>
DD.MM.[YYYY]
- Journey date. Also accepts the string tomorrow. Default: today
- exclude =>
\@exclude
- Do not use certain transport types for itinerary. Accepted arguments: zug,
s-bahn, u-bahn, stadtbahn, tram, stadtbus, regionalbus, schnellbus,
seilbahn, schiff, ast, sonstige
- max_interchanges
=> num
- Set maximum number of interchanges
- num_results
=> num
- Return up to num connections. If unset, the default of the
respective EFA server is used (usually 4 or 5).
- select_interchange_by
=> speed|waittime|distance
- Prefer either fast connections (default), connections with low wait time
or connections with little distance to walk
- use_near_stops
=> $int
- 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.
- train_type
=> local|ic|ice
- Include only local trains into itinerary (default), all but ICEs, or all.
The latter two are usually way more expensive for short
routes.
- walk_speed
=> slow|fast|normal
- Set walk speed. Default: normal
- with_bike
=> 0|1
- 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.
- with_low_platform
=> 0|1
- 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.
- with_wheelchair
=> 0|1
- 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.
- without_elevators
=> 0|1
- If true: Request that transfers do not require usage of elevators.
- without_escalators
=> 0|1
- If true: Request that transfers do not require usage of escalators.
- without_solid_stairs
=> 0|1
- If true: Request that transfers do not require stairs to be taken (i.e.
ramps, escalators, elevators or similar must be available).
- lwp_options
=> \%hashref
- Options to pass to
"LWP::UserAgent->new".
- submit =>
0|1
- 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.
- $efa->submit(%opts)
- Submit the query to efa_url.
%opts is passed on to
"LWP::UserAgent->new".
- $efa->routes
- Returns a list of Travel::Routing::DE::EFA::Route(3pm) elements.
Each one contains one method of getting from start to stop.
ACCESSORS
The following methods act like the arguments to new. See
there.
- $efa->departure_time($time)
- $efa->arrival_time($time)
- $efa->date($date)
- $efa->exclude(@exclude)
- $efa->max_interchanges($num)
- $efa->select_interchange_by($selection)
- $efa->train_type($type)
- $efa->use_near_stops($duration)
- $efa->walk_speed($speed)
- $efa->with_bike($bool)
Copyright (C) 2009-2020 by Daniel Friesel
<derf@finalrewind.org>
This program is licensed under the same terms as Perl itself.