Travel-Routing-DE-VRR-2.04000700001750001750 012263041221 14260 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/META.json000444001750001750 311012263041216 16047 0ustar00derfderf000000000000{ "abstract" : "unofficial interface to the efa.vrr.de German itinerary service", "author" : [ "Copyright (C) 2009-2014 by Daniel Friesel Ederf@finalrewind.orgE" ], "dynamic_config" : 1, "generated_by" : "Module::Build version 0.4003, CPAN::Meta::Converter version 2.120921", "license" : [ "unrestricted" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "Travel-Routing-DE-VRR", "prereqs" : { "build" : { "requires" : { "File::Slurp" : "0", "Test::Compile" : "0", "Test::Fatal" : "0", "Test::More" : "0", "Test::Pod" : "0" } }, "configure" : { "requires" : { "Module::Build" : "0.4" } }, "runtime" : { "requires" : { "Class::Accessor" : "0", "Exception::Class" : "0", "Getopt::Long" : "0", "LWP::UserAgent" : "0", "XML::LibXML" : "0", "perl" : "v5.10.1" } } }, "provides" : { "Travel::Routing::DE::VRR" : { "file" : "lib/Travel/Routing/DE/VRR.pm", "version" : "2.04" }, "Travel::Routing::DE::VRR::Route" : { "file" : "lib/Travel/Routing/DE/VRR/Route.pm", "version" : "2.04" }, "Travel::Routing::DE::VRR::Route::Part" : { "file" : "lib/Travel/Routing/DE/VRR/Route/Part.pm", "version" : "2.04" } }, "release_status" : "stable", "version" : "2.04" } Travel-Routing-DE-VRR-2.04/SIGNATURE000600001750001750 725712263041221 15720 0ustar00derfderf000000000000This file contains message digests of all files listed in MANIFEST, signed via the Module::Signature module, version 0.73. To verify the content in this distribution, first make sure you have Module::Signature installed, then type: % cpansign -v It will check each file's integrity, as well as the signature's validity. If "==> Signature verified OK! <==" is not displayed, the distribution may already have been compromised, and you should not run its Makefile.PL or Build.PL. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 SHA1 c87b41eba79d4b6b1e0025df2acb533f450bf73d Build.PL SHA1 5337b284f4859378a3224fa33c4feddec46e9600 Changelog SHA1 0f690bfa86755a9a77d16fd8504d4e15c18cc088 MANIFEST SHA1 28a47164e43a3450a80faa3e0b11f52cd2c3e52e META.json SHA1 26e74e0d4b90fe37ecdb03da56356214e7435b0f META.yml SHA1 9aaebade9f604ff5ae10ccd84313812a9257b3a0 README SHA1 7503ee61d321ae3722518d7afce4ee980865bc70 bin/efa SHA1 fa9e1e2e1b6cbed6631149202dac5c0f99ade4ab lib/Travel/Routing/DE/VRR.pm SHA1 9b1c542399628731f8ef50f586b55beb776d2ac9 lib/Travel/Routing/DE/VRR/Exception.pod SHA1 30a5daecf304df2090839fdb33c374a281fb4347 lib/Travel/Routing/DE/VRR/Route.pm SHA1 d57ffc0b0b5527f4fbe3e9b0255e4619ff1eaa69 lib/Travel/Routing/DE/VRR/Route/Part.pm SHA1 261db543570571077efcef95de8bb1ed54e2ca9e provides/zsh/completions/_efa SHA1 6cfaebdb4d57688b8ac50f3e840a99a48c15457b t/00-compile-pm.t SHA1 3adfc7da6082f15051da7fbda884723388738b61 t/01-compile-pl.t SHA1 fd251ffc56ca6e52020c906b61158f78b035679d t/10-pod.t SHA1 5cde4ac432254478c2b0e23731dfa3e7623cdc37 t/20-vrr.t SHA1 435f29a4e2f70f2d444ed476f9dd4f15a89610a1 t/21-vrr.t SHA1 03c61137db01ab6c66d6d57c6de800033e8f2966 t/in/ambiguous SHA1 7f75ab59522856d704efb6e94d3d76bf830b26b0 t/in/e_alf_d_hbf.xml SHA1 b090ebff2ae34df32f307c0a3cd5b90b7140044a t/in/e_hbf_b_hbf.ice SHA1 c9bbc91ea2a9412a0710ac51b3b3aa1170d4e737 t/in/e_hbf_b_hbf.xml SHA1 2653e00afa657bcaa7983046856314b3dfd2f485 t/in/e_hbf_du_hbf.ice SHA1 acf8aadf2536de7c4ee297b9e3be110efb9e6a05 t/in/e_hbf_k_hbf.xml SHA1 90fb6ff0cfe39ec7a4ed7eec2c48c62ca21a637c t/in/e_hbf_mh_hbf SHA1 52c4bdb38ab8fc19dc4c8d30ecbcca3e4267cce1 t/in/e_hbf_mh_hbf.xml SHA1 45c2836cb02fda0befc7c014aa1e91fd849f08c7 t/in/e_martinstr_e_florastr SHA1 ae32311fc3fcc472bc8e8d859c334863c0e2b0ce t/in/e_werden_e_hbf SHA1 17b18a70d24e307826c7701b6ed38bb9e470de5c t/in/invalid_input SHA1 4b671309c970bc1c0ea0d9dd2f4094df1b246c86 t/in/no_connections SHA1 750c1b500bc0bf95c83b83670646624c8d97693a t/out/e_hbf_b_hbf.ice SHA1 368485420399cdc7b724f815e1a8790eeb3a4b70 t/out/e_hbf_b_hbf.ice.ignore_all SHA1 3c10463afe1249175c480148af33c6b8f0f321f3 t/out/e_hbf_du_hbf.ice SHA1 805181465d06c31f11d3c456276c9a747b7feafb t/out/e_hbf_mh_hbf SHA1 cb58b25096325a6080109f0323c42a80726b38a2 t/out/e_hbf_mh_hbf.ignore_none SHA1 7469ef9df305ac872ca14f85c6e99c53db9a3dd1 t/out/e_martinstr_e_florastr SHA1 a5f60da1ae99a74c798a8aa25dc92d8e469176fd t/out/e_werden_e_hbf -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (GNU/Linux) iQIcBAEBCgAGBQJSzEKOAAoJEBANW/tRZuAFZc8QAMzsdDJr9nFTYT5LgF0s/Eb4 guHxzEvpxfyQ/ufc++fS1YuhR2YFqi/ml0rCrNqYxhYrdv8lqAMUvSjLoUz70hsp sPmDHwKnYahNwBTRqbv2b6Yet8sCEyERlTAbsW4p5aKZFkCaAe7O8f2xm8Hy8Coq l7E+D0fMni1K5msbEhZoSBJBnh6iq2yHqfRyeUADgk8zv4T/LFHVxs0xLA7S0GMp XhncNfLRiY9lbRXu5O24SWkrtXzylWV93DiBXJG17cTWThBDvQMrPgJr/8p0ZmxA Nq1SeePjOuPw/UwmFWnO1XVjZquK75GGBNQWQv2hdJpNUlrcibyMMzbt8m3ByMRa HlyM1PwRt90BcHTCQClneS5Oas71I87oy8KU4gKHA/eTfqeMqXeeRdrTsKUjhAyZ 45Sj5vgZL9CEsT3B3P307vRk5peHBn2EtPsjq+gfG99BhWyToUFOBlvvB94V4wgl CtxeOrzD3DlybIsHklXbxZ4a4IFjGIuawBkJXEsyTmdLfV5HbRV92ddwP976C+sG rP7kTyGHachEk91HEoRhVwrW0CFotrtvsmxz/4KzTouOvxtjboQUcVV7ZS4PJEpQ f/VRUxV7fiFGdpsSHL4btPthWkgLUZa3sdtcX/UmuABJi/UOCPmo7zD4Zh7LVZrl dft1Q8t+Lzcxc+RA23Ja =1t5L -----END PGP SIGNATURE----- Travel-Routing-DE-VRR-2.04/README000444001750001750 77012263041216 15277 0ustar00derfderf000000000000efa - unofficial efa.vrr.de command line client ----------------------------------------------- * Dependencies ------------ * perl version 5.10.1 or newer * Class::Accessor * Exception::Class * LWP::UserAgent * XML::LibXML Installation ------------ $ perl Build.PL $ ./Build $ sudo ./Build install See also the Module::Build documentation. You can then run 'man Travel::Routing::DE::VRR'. This distribution also ships the script 'efa', see 'man efa'. Travel-Routing-DE-VRR-2.04/Changelog000444001750001750 772312263041216 16256 0ustar00derfderf000000000000Travel::Routing::DE::VRR 2.04 - Tue Jan 07 2014 * efa: Handle UTF8 in place/stop input * Travel::Routing::DE::VRR: Handle decoded input with non-ASCII characters Travel::Routing::DE::VRR 2.03 - Thu Jul 4 2013 * Disable smartmatch warnings on perl >= 5.018 Travel::Routing::DE::VRR 2.02 - Wed Apr 10 2013 * Patch by Roland Hieber: respect proxy environment variables Travel::Routing::DE::VRR 2.01 - Thu Jan 26 2012 * Fix bug in departure_stop_and_platform where the arrival_stop was used in case of unknown platforms * Document -E / --extended-info in efa(1) Travel::Routing::DE::VRR 2.00 - Sun Dec 11 2011 * Now uses the efa.vrr.de XML interface * properly decode UTF-8 strings [Travel::Routing::DE::VRR::Route] * new accessors: duration, ticket_type, fare_adult, fare_child and vehicle_time [Travel::Routing::DE::VRR::Route::Part] * arrival_stop and departure_stop no longer include the platform, use arrival_stop_and_platform / departure_stop_and_platform instead * New accessors: arrival_date, arrival_platform, arrival_sdate, arrival_stime, arrival_stop_and_platform, delay, departure_date, departure_platform, departure_sdate, departure_stime, departure_stop_and_platform, via * ->extra no longer contains information about delays, use ->delay instead [efa] * New -E / --extended-info option to display travel fares Travel::Routing::DE::VRR 1.06 - Sat Sep 17 2011 * Fix dependencies. We claimed to use WWW::Mechanize but in fact only need LWP::UserAgent Travel::Routing::DE::VRR 1.05 - Sun Jul 17 2011 * Documentation fixes (in a few places, the module was prefixed Travel::Status instead of the correct Travel::Routing) * Note that we need perl >= 5.10.1 because of the parent pragma [efa] * Fix connection error handler Travel::Routing::DE::VRR 1.04 - Wed Jun 29 2011 * efa: Remove --foo-type options, use --to city type:stop etc. instead * Introducing Travel::Routing::DE::VRR * New dependencies: Class::Accessor, Exception::Class efa 1.3 - Sun Jun 6 2010 * Rewrite efa parser using XML::LibXML (major performance improvement) * Detect more efa.vrr.de errors (no routes found, invalid input data, etc.) efa 1.2 - Sat Jun 5 2010 * Rewrite efa parser using HTML::TreeBuilder::XPath * Fixes information about late trains (was broken by efa.vrr.de changes) efa 1.1.2 - Wed May 12 2010 * Fix -v * Fix --date DD.MM. (was incorrectly rejected) * Fix support for empty --ignore-info * Add some more argument verification efa 1.1.1 - Mon Apr 26 2010 * Add short options efa 1.1 - Sun Jan 17 2010 * Code cleanup and DRY-ing * Add 'addr:foo' and 'poi:foo' as alternative to '--to-type poi' etc. efa 1.0.3 - Wed Dec 9 2009 * Further code cleanup * Fixes a minor unicode-related glitch in the output formatting efa 1.0.2 - Sat Sep 12 2009 * Code cleanup * --restrict is now --include efa 1.0.1 - Wed Jul 1 2009 * Fixed unicode handling (apparently efa.vrr.de got changed) * Added support for some rare connections without timestamps * --date: The year is now optional efa 1.0 - Sat May 23 2009 * Various parser improvements, especially for footways. * Added --walk-speed option * Added --bike option (take a bike with you) * Except for "Mobilitätseinstellungen", the efa.vrr.de interface is now completely supported efa 0.9.1 - Wed May 20 2009 * Added options: + --exclude - exclude certain train/transport types + --max-change - limit maximum number of interchanges + --prefer - prefer connections based on speed/interchanges/walking + --proximity - take near stops into account for start/stop efa 0.9 - Sat May 16 2009 * Accept from, to and via city and stops * Custom arrival/departure date/time * Print extra infos (late trains etc.) * Regex to ignore certain infos * Restrict trains to anything/anything without ICE/local Travel-Routing-DE-VRR-2.04/META.yml000444001750001750 173612263041216 15713 0ustar00derfderf000000000000--- abstract: 'unofficial interface to the efa.vrr.de German itinerary service' author: - 'Copyright (C) 2009-2014 by Daniel Friesel Ederf@finalrewind.orgE' build_requires: File::Slurp: 0 Test::Compile: 0 Test::Fatal: 0 Test::More: 0 Test::Pod: 0 configure_requires: Module::Build: 0.4 dynamic_config: 1 generated_by: 'Module::Build version 0.4003, CPAN::Meta::Converter version 2.120921' license: unrestricted meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Travel-Routing-DE-VRR provides: Travel::Routing::DE::VRR: file: lib/Travel/Routing/DE/VRR.pm version: 2.04 Travel::Routing::DE::VRR::Route: file: lib/Travel/Routing/DE/VRR/Route.pm version: 2.04 Travel::Routing::DE::VRR::Route::Part: file: lib/Travel/Routing/DE/VRR/Route/Part.pm version: 2.04 requires: Class::Accessor: 0 Exception::Class: 0 Getopt::Long: 0 LWP::UserAgent: 0 XML::LibXML: 0 perl: v5.10.1 version: 2.04 Travel-Routing-DE-VRR-2.04/MANIFEST000444001750001750 143112263041216 15563 0ustar00derfderf000000000000bin/efa Build.PL Changelog lib/Travel/Routing/DE/VRR.pm lib/Travel/Routing/DE/VRR/Exception.pod lib/Travel/Routing/DE/VRR/Route.pm lib/Travel/Routing/DE/VRR/Route/Part.pm MANIFEST This list of files provides/zsh/completions/_efa README t/00-compile-pm.t t/01-compile-pl.t t/10-pod.t t/20-vrr.t t/21-vrr.t t/in/ambiguous t/in/e_alf_d_hbf.xml t/in/e_hbf_b_hbf.ice t/in/e_hbf_b_hbf.xml t/in/e_hbf_du_hbf.ice t/in/e_hbf_k_hbf.xml t/in/e_hbf_mh_hbf t/in/e_hbf_mh_hbf.xml t/in/e_martinstr_e_florastr t/in/e_werden_e_hbf t/in/invalid_input t/in/no_connections t/out/e_hbf_b_hbf.ice t/out/e_hbf_b_hbf.ice.ignore_all t/out/e_hbf_du_hbf.ice t/out/e_hbf_mh_hbf t/out/e_hbf_mh_hbf.ignore_none t/out/e_martinstr_e_florastr t/out/e_werden_e_hbf META.yml META.json SIGNATURE Added here by Module::Build Travel-Routing-DE-VRR-2.04/Build.PL000444001750001750 105112263041216 15724 0ustar00derfderf000000000000#!/usr/bin/env perl use strict; use warnings; use Module::Build; Module::Build->new( build_requires => { 'File::Slurp' => 0, 'Test::Compile' => 0, 'Test::Fatal' => 0, 'Test::More' => 0, 'Test::Pod' => 0, }, configure_requires => { 'Module::Build' => 0.40, }, module_name => 'Travel::Routing::DE::VRR', license => 'unrestricted', requires => { 'perl' => '5.10.1', 'Class::Accessor' => 0, 'Exception::Class' => 0, 'Getopt::Long' => 0, 'LWP::UserAgent' => 0, 'XML::LibXML' => 0, }, sign => 1, )->create_build_script(); Travel-Routing-DE-VRR-2.04/lib000700001750001750 012263041216 15032 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/lib/Travel000700001750001750 012263041216 16267 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/lib/Travel/Routing000700001750001750 012263041216 17716 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/lib/Travel/Routing/DE000700001750001750 012263041216 20206 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/lib/Travel/Routing/DE/VRR.pm000444001750001750 5605512263041216 21417 0ustar00derfderf000000000000package Travel::Routing::DE::VRR; use strict; use warnings; use 5.010; no if $] >= 5.018, warnings => "experimental::smartmatch"; use Carp qw(cluck); use Encode qw(decode encode); use Travel::Routing::DE::VRR::Route; use LWP::UserAgent; use XML::LibXML; use Exception::Class ( 'Travel::Routing::DE::VRR::Exception', 'Travel::Routing::DE::VRR::Exception::Setup' => { isa => 'Travel::Routing::DE::VRR::Exception', description => 'invalid argument on setup', fields => [ 'option', 'have', 'want' ], }, 'Travel::Routing::DE::VRR::Exception::Net' => { isa => 'Travel::Routing::DE::VRR::Exception', description => 'could not submit POST request', fields => 'http_response', }, 'Travel::Routing::DE::VRR::Exception::NoData' => { isa => 'Travel::Routing::DE::VRR::Exception', description => 'got no data to parse', }, 'Travel::Routing::DE::VRR::Exception::Ambiguous' => { isa => 'Travel::Routing::DE::VRR::Exception', description => 'ambiguous input', fields => [ 'post_key', 'possibilities' ], }, 'Travel::Routing::DE::VRR::Exception::NoConnections' => { isa => 'Travel::Routing::DE::VRR::Exception', description => 'got no connections', }, ); our $VERSION = '2.04'; sub set_time { my ( $self, %conf ) = @_; my $time; if ( $conf{departure_time} ) { $self->{post}->{itdTripDateTimeDepArr} = 'dep'; $time = $conf{departure_time}; } elsif ( $conf{arrival_time} ) { $self->{post}->{itdTripDateTimeDepArr} = 'arr'; $time = $conf{arrival_time}; } else { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'time', error => 'Specify either departure_time or arrival_time' ); } if ( $time !~ / ^ [0-2]? \d : [0-5]? \d $ /x ) { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'time', have => $time, want => 'HH:MM', ); } @{ $self->{post} }{ 'itdTimeHour', 'itdTimeMinute' } = split( /:/, $time ); return; } sub departure_time { my ( $self, $time ) = @_; return $self->set_time( departure_time => $time ); } sub arrival_time { my ( $self, $time ) = @_; return $self->set_time( arrival_time => $time ); } sub date { my ( $self, $date ) = @_; my ( $day, $month, $year ) = split( /[.]/, $date ); if ( not( defined $day and length($day) and $day >= 1 and $day <= 31 and defined $month and length($month) and $month >= 1 and $month <= 12 ) ) { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'date', have => $date, want => 'DD.MM[.[YYYY]]' ); } if ( not defined $year or not length($year) ) { $year = ( localtime(time) )[5] + 1900; } @{ $self->{post} }{ 'itdDateDay', 'itdDateMonth', 'itdDateYear' } = ( $day, $month, $year ); return; } sub exclude { my ( $self, @exclude ) = @_; my @mapping = qw{ zug s-bahn u-bahn stadtbahn tram stadtbus regionalbus schnellbus seilbahn schiff ast sonstige }; foreach my $exclude_type (@exclude) { my $ok = 0; for my $map_id ( 0 .. $#mapping ) { if ( $exclude_type eq $mapping[$map_id] ) { $self->{post}->{"inclMOT_${map_id}"} = undef; $ok = 1; } } if ( not $ok ) { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'exclude', have => $exclude_type, want => join( ' / ', @mapping ), ); } } return; } sub max_interchanges { my ( $self, $max ) = @_; $self->{post}->{maxChanges} = $max; return; } sub select_interchange_by { my ( $self, $prefer ) = @_; given ($prefer) { when ('speed') { $self->{post}->{routeType} = 'LEASTTIME' } when ('waittime') { $self->{post}->{routeType} = 'LEASTINTERCHANGE' } when ('distance') { $self->{post}->{routeType} = 'LEASTWALKING' } default { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'select_interchange_by', have => $prefer, want => 'speed / waittime / distance', ); } } return; } sub train_type { my ( $self, $include ) = @_; given ($include) { when ('local') { $self->{post}->{lineRestriction} = 403 } when ('ic') { $self->{post}->{lineRestriction} = 401 } when ('ice') { $self->{post}->{lineRestriction} = 400 } default { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'train_type', have => $include, want => 'local / ic / ice', ); } } return; } sub use_near_stops { my ( $self, $toggle ) = @_; $self->{post}->{useProxFootSearch} = $toggle; return; } sub walk_speed { my ( $self, $walk_speed ) = @_; if ( $walk_speed ~~ [ 'normal', 'fast', 'slow' ] ) { $self->{post}->{changeSpeed} = $walk_speed; } else { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'walk_speed', have => $walk_speed, want => 'normal / fast / slow', ); } return; } sub with_bike { my ( $self, $bike ) = @_; $self->{post}->{bikeTakeAlong} = $bike; return; } sub place { my ( $self, $which, $place, $stop, $type ) = @_; if ( not( $place and $stop ) ) { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'place', error => 'Need >= three elements' ); } $place = encode( 'ISO-8859-15', $place ); $stop = encode( 'ISO-8859-15', $stop ); $type //= 'stop'; @{ $self->{post} }{ "place_${which}", "name_${which}" } = ( $place, $stop ); if ( $type ~~ [qw[address poi stop]] ) { $self->{post}->{"type_${which}"} = $type; } return; } sub create_post { my ($self) = @_; my $conf = $self->{config}; my @now = localtime( time() ); $self->{post} = { changeSpeed => 'normal', command => q{}, execInst => q{}, imparedOptionsActive => 1, inclMOT_0 => 'on', inclMOT_1 => 'on', inclMOT_10 => 'on', inclMOT_11 => 'on', inclMOT_2 => 'on', inclMOT_3 => 'on', inclMOT_4 => 'on', inclMOT_5 => 'on', inclMOT_6 => 'on', inclMOT_7 => 'on', inclMOT_8 => 'on', inclMOT_9 => 'on', includedMeans => 'checkbox', itOptionsActive => 1, itdDateDay => $now[3], itdDateMonth => $now[4] + 1, itdDateYear => $now[5] + 1900, itdLPxx_ShowFare => q{ }, itdLPxx_command => q{}, itdLPxx_enableMobilityRestrictionOptionsWithButton => q{}, itdLPxx_id_destination => ':destination', itdLPxx_id_origin => ':origin', itdLPxx_id_via => ':via', itdLPxx_mapState_destination => q{}, itdLPxx_mapState_origin => q{}, itdLPxx_mapState_via => q{}, itdLPxx_mdvMap2_destination => q{}, itdLPxx_mdvMap2_origin => q{}, itdLPxx_mdvMap2_via => q{}, itdLPxx_mdvMap_destination => q{::}, itdLPxx_mdvMap_origin => q{::}, itdLPxx_mdvMap_via => q{::}, itdLPxx_priceCalculator => q{}, itdLPxx_transpCompany => 'vrr', itdLPxx_view => q{}, itdTimeHour => $now[2], itdTimeMinute => $now[1], itdTripDateTimeDepArr => 'dep', language => 'de', lineRestriction => 403, maxChanges => 9, nameInfo_destination => 'invalid', nameInfo_origin => 'invalid', nameInfo_via => 'invalid', nameState_destination => 'empty', nameState_origin => 'empty', nameState_via => 'empty', name_destination => q{}, name_origin => q{}, name_via => q{}, outputFormat => 'XML', placeInfo_destination => 'invalid', placeInfo_origin => 'invalid', placeInfo_via => 'invalid', placeState_destination => 'empty', placeState_origin => 'empty', placeState_via => 'empty', place_destination => q{}, place_origin => q{}, place_via => q{}, ptOptionsActive => 1, requestID => 0, routeType => 'LEASTTIME', sessionID => 0, text => 1993, trITArrMOT => 100, trITArrMOTvalue100 => 8, trITArrMOTvalue101 => 10, trITArrMOTvalue104 => 10, trITArrMOTvalue105 => 10, trITDepMOT => 100, trITDepMOTvalue100 => 8, trITDepMOTvalue101 => 10, trITDepMOTvalue104 => 10, trITDepMOTvalue105 => 10, typeInfo_destination => 'invalid', typeInfo_origin => 'invalid', typeInfo_via => 'invalid', type_destination => 'stop', type_origin => 'stop', type_via => 'stop', useRealtime => 1 }; $self->place( 'origin', @{ $conf->{origin} } ); $self->place( 'destination', @{ $conf->{destination} } ); if ( $conf->{via} ) { $self->place( 'via', @{ $conf->{via} } ); } if ( $conf->{arrival_time} || $conf->{departure_time} ) { $self->set_time( %{$conf} ); } if ( $conf->{date} ) { $self->date( $conf->{date} ); } if ( $conf->{exclude} ) { $self->exclude( @{ $conf->{exclude} } ); } if ( $conf->{max_interchanges} ) { $self->max_interchanges( $conf->{max_interchanges} ); } if ( $conf->{select_interchange_by} ) { $self->select_interchange_by( $conf->{select_interchange_by} ); } if ( $conf->{use_near_stops} ) { $self->use_near_stops(1); } if ( $conf->{train_type} ) { $self->train_type( $conf->{train_type} ); } if ( $conf->{walk_speed} ) { $self->walk_speed( $conf->{walk_speed} ); } if ( $conf->{with_bike} ) { $self->with_bike(1); } return; } sub new { my ( $obj, %conf ) = @_; my $ref = {}; $ref->{config} = \%conf; bless( $ref, $obj ); $ref->create_post(); if ( not( defined $conf{submit} and $conf{submit} == 0 ) ) { $ref->submit( %{ $conf{lwp_options} } ); } return $ref; } sub new_from_xml { my ( $class, %opt ) = @_; my $self = { xml_reply => $opt{xml} }; bless( $self, $class ); $self->parse(); return $self; } sub submit { my ( $self, %conf ) = @_; $self->{ua} = LWP::UserAgent->new(%conf); $self->{ua}->env_proxy; my $response = $self->{ua} ->post( 'http://efa.vrr.de/vrr/XSLT_TRIP_REQUEST2', $self->{post} ); if ( $response->is_error ) { Travel::Routing::DE::VRR::Exception::Net->throw( http_response => $response, ); } $self->{xml_reply} = $response->decoded_content; $self->parse(); return; } sub itddate_str { my ( $self, $node ) = @_; return sprintf( '%02d.%02d.%04d', $node->getAttribute('day'), $node->getAttribute('month'), $node->getAttribute('year') ); } sub itdtime_str { my ( $self, $node ) = @_; return sprintf( '%02d:%02d', $node->getAttribute('hour'), $node->getAttribute('minute') ); } sub parse_part { my ( $self, $route ) = @_; my $xp_route = XML::LibXML::XPathExpression->new( './itdPartialRouteList/itdPartialRoute'); my $xp_dep = XML::LibXML::XPathExpression->new('./itdPoint[@usage="departure"]'); my $xp_arr = XML::LibXML::XPathExpression->new('./itdPoint[@usage="arrival"]'); my $xp_date = XML::LibXML::XPathExpression->new('./itdDateTime/itdDate'); my $xp_time = XML::LibXML::XPathExpression->new('./itdDateTime/itdTime'); my $xp_via = XML::LibXML::XPathExpression->new('./itdStopSeq/itdPoint'); my $xp_sdate = XML::LibXML::XPathExpression->new('./itdDateTimeTarget/itdDate'); my $xp_stime = XML::LibXML::XPathExpression->new('./itdDateTimeTarget/itdTime'); my $xp_mot = XML::LibXML::XPathExpression->new('./itdMeansOfTransport'); my $xp_delay = XML::LibXML::XPathExpression->new('./itdRBLControlled'); my $xp_info = XML::LibXML::XPathExpression->new('./itdInfoTextList/infoTextListElem'); my $xp_fare = XML::LibXML::XPathExpression->new('./itdFare/itdSingleTicket'); my @route_parts; my $info = { duration => $route->getAttribute('publicDuration'), vehicle_time => $route->getAttribute('vehicleTime'), }; my $e_fare = ( $route->findnodes($xp_fare) )[0]; if ($e_fare) { $info->{ticket_type} = $e_fare->getAttribute('unitsAdult'); $info->{fare_adult} = $e_fare->getAttribute('fareAdult'); $info->{fare_child} = $e_fare->getAttribute('fareChild'); $info->{ticket_text} = $e_fare->textContent; } for my $e ( $route->findnodes($xp_route) ) { my $e_dep = ( $e->findnodes($xp_dep) )[0]; my $e_arr = ( $e->findnodes($xp_arr) )[0]; my $e_ddate = ( $e_dep->findnodes($xp_date) )[0]; my $e_dtime = ( $e_dep->findnodes($xp_time) )[0]; my $e_dsdate = ( $e_dep->findnodes($xp_sdate) )[0]; my $e_dstime = ( $e_dep->findnodes($xp_stime) )[0]; my $e_adate = ( $e_arr->findnodes($xp_date) )[0]; my $e_atime = ( $e_arr->findnodes($xp_time) )[0]; my $e_asdate = ( $e_arr->findnodes($xp_sdate) )[0]; my $e_astime = ( $e_arr->findnodes($xp_stime) )[0]; my $e_mot = ( $e->findnodes($xp_mot) )[0]; my $e_delay = ( $e->findnodes($xp_delay) )[0]; my @e_info = $e->findnodes($xp_info); my $delay = $e_delay ? $e_delay->getAttribute('delayMinutes') : 0; my $hash = { delay => $delay, departure_date => $self->itddate_str($e_ddate), departure_time => $self->itdtime_str($e_dtime), departure_sdate => $self->itddate_str($e_dsdate), departure_stime => $self->itdtime_str($e_dstime), departure_stop => $e_dep->getAttribute('name'), departure_platform => $e_dep->getAttribute('platformName'), train_line => $e_mot->getAttribute('name'), train_destination => $e_mot->getAttribute('destination'), arrival_date => $self->itddate_str($e_adate), arrival_time => $self->itdtime_str($e_atime), arrival_sdate => $self->itddate_str($e_asdate), arrival_stime => $self->itdtime_str($e_astime), arrival_stop => $e_arr->getAttribute('name'), arrival_platform => $e_arr->getAttribute('platformName'), }; for my $key ( keys %{$hash} ) { $hash->{$key} = decode( 'UTF-8', $hash->{$key} ); } for my $ve ( $e->findnodes($xp_via) ) { my $e_vdate = ( $ve->findnodes($xp_date) )[-1]; my $e_vtime = ( $ve->findnodes($xp_time) )[-1]; if ( not( $e_vdate and $e_vtime ) or ( $e_vdate->getAttribute('weekday') == -1 ) ) { next; } my $name = decode( 'UTF-8', $ve->getAttribute('name') ); my $platform = $ve->getAttribute('platformName'); if ( $name ~~ [ $hash->{departure_stop}, $hash->{arrival_stop} ] ) { next; } push( @{ $hash->{via} }, [ $self->itddate_str($e_vdate), $self->itdtime_str($e_vtime), $name, $platform ] ); } $hash->{extra} = [ map { decode( 'UTF-8', $_->textContent ) } @e_info ]; push( @route_parts, $hash ); } push( @{ $self->{routes} }, Travel::Routing::DE::VRR::Route->new( $info, @route_parts ) ); return; } sub parse { my ($self) = @_; my $tree = $self->{tree} = XML::LibXML->load_xml( string => $self->{xml_reply}, ); my $xp_element = XML::LibXML::XPathExpression->new( '//itdItinerary/itdRouteList/itdRoute'); my $xp_odv = XML::LibXML::XPathExpression->new('//itdOdv'); for my $odv ( $tree->findnodes($xp_odv) ) { $self->check_ambiguous($odv); } for my $part ( $tree->findnodes($xp_element) ) { $self->parse_part($part); } if ( @{ $self->{routes} } == 0 ) { Travel::Routing::DE::VRR::Exception::NoData->throw(); } return 1; } sub check_ambiguous { my ( $self, $tree ) = @_; my $xp_place = XML::LibXML::XPathExpression->new('./itdOdvPlace'); my $xp_name = XML::LibXML::XPathExpression->new('./itdOdvName'); my $xp_place_elem = XML::LibXML::XPathExpression->new('./odvPlaceElem'); my $xp_name_elem = XML::LibXML::XPathExpression->new('./odvNameElem'); my $e_place = ( $tree->findnodes($xp_place) )[0]; my $e_name = ( $tree->findnodes($xp_name) )[0]; if ( not( $e_place and $e_name ) ) { cluck('skipping ambiguity check - itdOdvPlace/itdOdvName missing'); return; } my $s_place = $e_place->getAttribute('state'); my $s_name = $e_name->getAttribute('state'); if ( $s_place eq 'list' ) { Travel::Routing::DE::VRR::Exception::Ambiguous->throw( post_key => 'place', possibilities => join( q{ | }, map { decode( 'UTF-8', $_->textContent ) } @{ $e_place->findnodes($xp_place_elem) } ) ); } if ( $s_name eq 'list' ) { Travel::Routing::DE::VRR::Exception::Ambiguous->throw( post_key => 'name', possibilities => join( q{ | }, map { decode( 'UTF-8', $_->textContent ) } @{ $e_name->findnodes($xp_name_elem) } ) ); } if ( $s_place eq 'notidentified' ) { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'place', error => 'unknown place (typo?)' ); } if ( $s_name eq 'notidentified' ) { Travel::Routing::DE::VRR::Exception::Setup->throw( option => 'name', error => 'unknown name (typo?)' ); } # 'identified' and 'empty' are ok return; } sub routes { my ($self) = @_; return @{ $self->{routes} }; } 1; __END__ =head1 NAME Travel::Routing::DE::VRR - unofficial interface to the efa.vrr.de German itinerary service =head1 SYNOPSIS use Travel::Routing::DE::VRR; my $efa = Travel::Routing::DE::VRR->new( 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", $part->departure_time, $part->departure_stop, $part->arrival_time, $part->arrival_stop, $part->train_line, $part->train_destination, ); } print "\n\n"; } =head1 VERSION version 2.04 =head1 DESCRIPTION B is a client for the efa.vrr.de web interface. 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 B and B for this. =head1 METHODS =over =item $efa = Travel::Routing::DE::VRR->new(I<%opts>) Returns a new Travel::Routing::DE::VRR object and sets up its POST data via %opts. Valid hash keys and their values are: =over =item B => B<[> IB<,> I [ B<,> I ] B<]> Mandatory. Sets the start of the journey. I is optional and may be one of B (default), B
(street and house number) or B ("point of interest"). =item B => B<[> IB<,> I [ B<,> I ] B<]> Mandatory. Sets the end of the journey, see B. =item B => B<[> IB<,> I [ B<,> I ] B<]> Optional. Specifies an intermediate stop which the resulting itinerary must contain. See B for arguments. =item B => I Journey end time =item B => I Journey start time. Default: now =item B => I[I] Journey date. Default: tdoay =item B => \@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 =item B => I Set maximum number of interchanges =item B => B|B|B Prefer either fast connections (default), connections with low wait time or connections with little distance to walk =item B => B<0>|B<1> If true: Try using near stops instead of the specified origin/destination ones =item B => B|B|B Include only local trains into itinarery (default), all but ICEs, or all. The latter two are usually way more expensive for short routes. =item B => B|B|B Set walk speed. Default: B =item B => B<0>|B<1> If true: Prefer connections allowing passengers with bikes =item B => I<\%hashref> Options to pass to C<< LWP::UserAgent->new >>. =item B => B<0>|B<1> By default, B will create a POST request and submit it to L. If you do not want it to be submitted yet, set this to B<0>. =back =item $efa->submit(I<%opts>) Submit the query to L. I<%opts> is passed on to C<< LWP::UserAgent->new >>. =item $efa->routes() Returns a list of Travel::Routing::DE::VRR::Route(3pm) elements. Each one contains one method of getting from start to stop. =back =head2 ACCESSORS The following methods act like the arguments to B. See there. =over =item $efa->departure_time(I<$time>) =item $efa->arrival_time(I<$time>) =item $efa->date(I<$date>) =item $efa->exclude(I<@exclude>) =item $efa->max_interchanges(I<$num>) =item $efa->select_interchange_by(I<$selection>) =item $efa->train_type(I<$type>) =item $efa->use_near_stops(I<$bool>) =item $efa->walk_speed(I<$speed>) =item $efa->with_bike(I<$bool>) =back =head1 DIAGNOSTICS When encountering an error, Travel::Routing::DE::VRR throws a Travel::Routing::DE::VRR::Exception(3pm) object. =head1 DEPENDENCIES =over =item * LWP::UserAgent(3pm) =item * XML::LibXML(3pm) =back =head1 BUGS AND LIMITATIONS None known. =head1 SEE ALSO =over =item * Travel::Routing::DE::VRR::Exception(3pm) =item * Travel::Routing::DE::VRR::Route(3pm) =item * L is another implementation, using L. =back =head1 AUTHOR Copyright (C) 2009-2014 by Daniel Friesel Ederf@finalrewind.orgE =head1 LICENSE 0. You just DO WHAT THE FUCK YOU WANT TO. Travel-Routing-DE-VRR-2.04/lib/Travel/Routing/DE/VRR000700001750001750 012263041216 20657 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/lib/Travel/Routing/DE/VRR/Exception.pod000444001750001750 241012263041216 23465 0ustar00derfderf000000000000=head1 NAME Travel::Routing::DE::VRR::Exception - Travel::Routing::DE::VRR Exceptions =head1 DESCRIPTION All Exceptions throws by Travel::Routing::DE::VRR are Travel::Routing::DE::VRR::Exception objects created by Exception::Class(3pm). See Exception::Class::Base(3pm) for their common methods. =head1 LIST OF EXCEPTIONS =head2 Travel::Routing::DE::VRR::Exception::Setup An argument to B had an invalid format. Additional methods: =over =item $exception->option The option in which the error occured. =item $exception->have The argument we got. =item $exception->want What kind of argument we want. =back =head2 Travel::Routing::DE::VRR::Exception::Net The HTTP request to the efa interface failed. Contains an HTTP::Response(3pm) object describing the error in B. =head2 Travel::Routing::DE::VRR::Exception::NoData We got no parsable data from efa.vrr.de =head2 Travel::Routing::DE::VRR::Exception::Ambiguous Our request contained ambiguous data. B contains the relevant POST key, B is a comma-separated string of possible key values (as reported by efa.vrr.de). =head2 Travel::Routing::DE::VRR::Exception::NoConnections efa.vrr.de found no connections for our request. =head1 SEE ALSO Travel::Routing::DE::VRR(3pm) Travel-Routing-DE-VRR-2.04/lib/Travel/Routing/DE/VRR/Route.pm000444001750001750 406712263041216 22471 0ustar00derfderf000000000000package Travel::Routing::DE::VRR::Route; use strict; use warnings; use 5.010; use parent 'Class::Accessor'; use Travel::Routing::DE::VRR::Route::Part; our $VERSION = '2.04'; Travel::Routing::DE::VRR::Route->mk_ro_accessors( qw(duration ticket_text ticket_type fare_adult fare_child vehicle_time)); sub new { my ( $obj, $info, @parts ) = @_; my $ref = $info; for my $part (@parts) { push( @{ $ref->{parts} }, Travel::Routing::DE::VRR::Route::Part->new( %{$part} ) ); } return bless( $ref, $obj ); } sub parts { my ($self) = @_; return @{ $self->{parts} }; } 1; __END__ =head1 NAME Travel::Routing::DE::VRR::Route - Single route (connection) between two points =head1 SYNOPSIS for my $route ( $efa->routes ) { for my $part ( $route->parts ) { # $part is a Travel::Routing::DE::VRR::Route::Part object } } =head1 VERSION version 2.04 =head1 DESCRIPTION Travel::Routing::DE::VRR::Route describes a single method of getting from one point to another. It holds a bunch of Travel::Routing::DE::VRR::Route::Part(3pm) objects describing the parts of the route in detail. Each part depends on the previous one. You usually want to acces it via C<< $efa->routes >>. =head1 METHODS =head2 ACCESSORS =over =item $route->duration route duration as string in HH:MM format =item $route->parts Returns a list of Travel::Routing::DE::VRR::Route::Part(3pm) elements describing the actual route =item $route->ticket_type Type of the required ticket for this route, if available (empty string otherwise) =item $route->fare_adult ticket price for an adult in EUR =item $route->fare_child ticket price for a child in EUR =item $route->vehicle_time on-vehicle time (excluding waiting time) of the route in minutes =back =head1 DIAGNOSTICS None. =head1 DEPENDENCIES None. =head1 BUGS AND LIMITATIONS None known. =head1 SEE ALSO Travel::Routing::DE::VRR(3pm), Travel::Routing::DE::VRR::Route::Part(3pm). =head1 AUTHOR Copyright (C) 2011-2014 by Daniel Friesel Ederf@finalrewind.orgE =head1 LICENSE 0. You just DO WHAT THE FUCK YOU WANT TO. Travel-Routing-DE-VRR-2.04/lib/Travel/Routing/DE/VRR/Route000700001750001750 012263041216 21755 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/lib/Travel/Routing/DE/VRR/Route/Part.pm000444001750001750 764312263041216 23402 0ustar00derfderf000000000000package Travel::Routing::DE::VRR::Route::Part; use strict; use warnings; use 5.010; use parent 'Class::Accessor'; our $VERSION = '2.04'; Travel::Routing::DE::VRR::Route::Part->mk_ro_accessors( qw(arrival_platform arrival_stop arrival_date arrival_time arrival_sdate arrival_stime delay departure_platform departure_stop departure_date departure_time departure_sdate departure_stime train_line train_destination ) ); sub new { my ( $obj, %conf ) = @_; my $ref = \%conf; return bless( $ref, $obj ); } sub arrival_stop_and_platform { my ($self) = @_; if ( length( $self->arrival_platform ) ) { return sprintf( '%s: %s', $self->get(qw(arrival_stop arrival_platform)) ); } return $self->arrival_stop; } sub departure_stop_and_platform { my ($self) = @_; if ( length( $self->departure_platform ) ) { return sprintf( '%s: %s', $self->get(qw(departure_stop departure_platform)) ); } return $self->departure_stop; } sub extra { my ($self) = @_; return @{ $self->{extra} // [] }; } sub via { my ($self) = @_; return @{ $self->{via} // [] }; } 1; __END__ =head1 NAME Travel::Routing::DE::VRR::Route::Part - Describes one connection between two points, without interchanges =head1 SYNOPSIS for my $part ( $route->parts ) { if ( $part->extra ) { say join( "\n", $part->extra ); } printf( "%s at %s -> %s at %s, via %s to %s", $part->departure_time, $part->departure_stop, $part->arrival_time, $part->arrival_stop, $part->train_line, $part->train_destination, ); } =head1 VERSION version 2.04 =head1 DESCRIPTION B holds one specific connection (without interchanges) between two points. It specifies the start/stop point and time, the train line and its destination, and optional additional data. It is usually obtained by a call to Travel::Routing::DE::VRR::Route(3pm)'s B method. =head1 METHODS =head2 ACCESSORS "Actual" in the description means that the delay (if available) is already included in the calculation, "Scheduled" means it isn't. =over =item $part->arrival_stop arrival stop (city name plus station name) =item $part->arrival_platform arrival platform (either "Gleis x" or "Bstg. x") =item $part->arrival_stop_and_platform "stop: platform" concatenation =item $part->arrival_date Actual arrival date in DD.MM.YYYY format =item $part->arrival_time Actual arrival time in HH:MM format =item $part->arrival_sdate Scheduled arrival date in DD.MM.YYYY format =item $part->arrival_stime Scheduled arrival time in HH:MM format =item $part->delay delay in minutes, 0 if unknown =item $part->departure_stop departure stop (city name plus station name) =item $part->departure_platform departure platform (either "Gleis x" or "Bstg. x") =item $part->departure_stop_and_platform "stop: platform" concatenation =item $part->departure_date Actual departure date in DD.MM.YYYY format =item $part->departure_time Actual departure time in HH:MM format =item $part->departure_sdate Scheduled departure date in DD.MM.YYYY format =item $part->departure_stime Scheduled departure time in HH:MM format =item $part->extra Additional information about the connection. Returns a list of newline-terminated strings =item $part->train_destination destination of the line providing the connection =item $part->train_line name / number of the line =item $part->via List of stops passed between departure_stop and arrival_stop, as C<< [ "DD.MM.YYYY", "HH:MM", stop, platform ] >> hashrefs. May be empty, these are not always reported by efa.vrr.de. =back =head1 DIAGNOSTICS None. =head1 DEPENDENCIES =over =item * Class::Accessor(3pm) =back =head1 BUGS AND LIMITATIONS $part->via does not work reliably. =head1 SEE ALSO Travel::Routing::DE::VRR(3pm), Class::Accessor(3pm). =head1 AUTHOR Copyright (C) 2011-2014 by Daniel Friesel Ederf@finalrewind.orgE =head1 LICENSE 0. You just DO WHAT THE FUCK YOU WANT TO. Travel-Routing-DE-VRR-2.04/provides000700001750001750 012263041216 16117 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/provides/zsh000700001750001750 012263041216 16723 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/provides/zsh/completions000700001750001750 012263041216 21257 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/provides/zsh/completions/_efa000444001750001750 344412263041216 22250 0ustar00derfderf000000000000#compdef efa typeset -a arguments typeset -A argument_pairs argument_postfix typeset arg argument_pairs=( time t+ arrive a+ date d+ bike b exclude e+ max-change m+ prefer P+ proximity p include i+ walk-speed w+ ignore-info I+ version v ) argument_postfix=( time '[Journey start time]:timestamp' arrive '[Journey end time]:timestamp' date '[Journey date]:date' bike '[Prefer connections where you can take a bike with you]' exclude '[Exclude transport types]:transport type:_efa_transports' max-change '[Maximum interchanges]:maximum interchange number' prefer '[Prefer connections]:connection type:(speed nowait nowalk)' proximity '[Take close stops into account]' include '[Include extra connection types]:connection type:(local ic ice)' walk-speed '[Walk speed]:walk speed:(normal fast slow)' ignore-info '[Ignore additional information]:regex' verison '[Print version information]' ) arguments=( '--'{from,to,via}':city: :stop: ' '--'{from,to,via}'-type:type:(stop address poi)' '(--depart --arrive)--time:time' '(--depart --time)--arrive:time' '(--arrive --time)--depart:time' '*--post:POST key=value' ) for arg in ${(k)argument_pairs}; { arguments+='(--'${arg}')-'${argument_pairs[$arg]}${argument_postfix[$arg]} arguments+='(-'${${argument_pairs[$arg]}[1]}')--'${arg}${argument_postfix[$arg]} } function _efa_transports { typeset -a keys used_prefixes typeset prefix='' keys=(zug s-bahn u-bahn stadtbahn tram stadtbus regionalbus schnellbus seilbahn schiff ast sonstige) if [[ -prefix *, ]] { prefix=${words[$CURRENT]%,*}, used_prefixes=(${(s:,:)prefix}) } _wanted expression expl 'sort expression' \ compadd -F used_prefixes -qS , -P "$prefix" $keys } _arguments -s $arguments Travel-Routing-DE-VRR-2.04/bin000700001750001750 012263041216 15034 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/bin/efa000555001750001750 2177612263041216 15721 0ustar00derfderf000000000000#!/usr/bin/env perl ## Copyright © 2009-2014 by Daniel Friesel ## License: WTFPL ## 0. You just DO WHAT THE FUCK YOU WANT TO. use strict; use warnings; use 5.010; no if $] >= 5.018, warnings => "experimental::smartmatch"; use utf8; use Encode qw(decode); use Travel::Routing::DE::VRR; use Exception::Class; use Getopt::Long qw/:config no_ignore_case/; our $VERSION = '2.04'; my $ignore_info = 'Fahrradmitnahme'; my $efa; my ( @from, @to, @via, $from_type, $to_type, $via_type ); my $opt = { 'help' => sub { show_help(0) }, 'ignore-info' => \$ignore_info, 'from' => \@from, 'to' => \@to, 'version' => sub { say "efa version $VERSION"; exit 0 }, 'via' => \@via, }; binmode( STDOUT, ':encoding(utf-8)' ); binmode( STDERR, ':encoding(utf-8)' ); sub show_help { my ($exit_status) = @_; say 'Usage: efa [options] '; say 'See also: man efa'; exit $exit_status; } sub handle_efa_exception { my ($e) = @_; if ( $e->isa('Travel::Routing::DE::VRR::Exception::Setup') ) { if ( $e->message ) { printf STDERR ( "Error: %s (option '%s'): %s\n", $e->description, $e->option, $e->message ); } else { printf STDERR ( "Error: %s (option '%s', got '%s', want '%s')\n", $e->description, $e->option, $e->have, $e->want ); } exit 1; } if ( $e->isa('Travel::Routing::DE::VRR::Exception::Net') ) { printf STDERR ( "Error: %s: %s\n", $e->description, $e->http_response->as_string ); exit 2; } if ( $e->isa('Travel::Routing::DE::VRR::Exception::NoData') ) { printf STDERR ( 'Error: %s', $e->description ); exit 3; } if ( $e->isa('Travel::Routing::DE::VRR::Exception::Ambiguous') ) { printf STDERR ( "Error: %s for key %s. Specify one of %s\n", $e->description, $e->post_key, $e->possibilities ); exit 4; } if ( $e->isa('Travel::Routing::DE::VRR::Exception::NoConnections') ) { printf STDERR ( "Error: %s: %s\n", $e->description, $e->error ); exit 5; } printf STDERR ( "Uncatched exception: %s\n%s", ref($e), $e->trace ); exit 10; } sub check_for_error { my ($eval_error) = @_; if ( not defined $efa ) { if ( $eval_error and ref($eval_error) and $eval_error->isa('Travel::Routing::DE::VRR::Exception') ) { handle_efa_exception($eval_error); } elsif ($eval_error) { printf STDERR "Unknown Travel::Routing::DE::VRR error:\n${eval_error}"; exit 10; } else { say STDERR 'Travel::Routing::DE::VRR failed to return an object'; exit 10; } } return; } sub display_connection { my ($c) = @_; if ( $c->delay ) { printf( "# +%d, scheduled: %s -> %s\n", $c->delay, $c->departure_stime, $c->arrival_stime ); } for my $extra ( $c->extra ) { if ( not( length $ignore_info and $extra =~ /$ignore_info/i ) ) { say "# $extra"; } } printf( "%-5s ab %-30s %-20s %s\n", $c->departure_time, $c->departure_stop_and_platform, $c->train_line, $c->train_destination, ); printf( "%-5s an %s\n\n", $c->arrival_time, $c->arrival_stop_and_platform, ); return; } @ARGV = map { decode( 'UTF-8', $_ ) } @ARGV; #<<< GetOptions( $opt, qw{ arrive|a=s bike|b date|d=s depart=s exclude|e=s@ extended-info|E from=s@{2} help|h ignore-info|I:s max-change|m=i prefer|P=s proximity|p include|i=s time|t=s timeout=i to=s@{2} version|v via=s@{2} walk-speed|w=s }, ) or show_help(1); #>>> if ( not( @from and @to ) ) { if ( @ARGV == 4 ) { ( @from[ 0, 1 ], @to[ 0, 1 ] ) = @ARGV; } elsif ( @ARGV == 6 ) { ( @from[ 0, 1 ], @via[ 0, 1 ], @to[ 0, 1 ] ) = @ARGV; } else { show_help(1); } } for my $pair ( [ \@from, \$from_type ], [ \@via, \$via_type ], [ \@to, \$to_type ], ) { next if ( not defined $pair->[0]->[1] ); if ( $pair->[0]->[1] =~ s{ ^ (? [^:]+ ) : \s* (? .+ ) $ } {$+{target}}x ) { given ( $+{type} ) { when ('addr') { ${ $pair->[1] } = 'address' } default { ${ $pair->[1] } = $+{type} } } } } if ( defined $opt->{'ignore-info'} and length( $opt->{'ignore-info'} ) == 0 ) { $opt->{'ignore-info'} = undef; } $efa = eval { Travel::Routing::DE::VRR->new( origin => [ @from, $from_type ], destination => [ @to, $to_type ], via => ( @via ? [ @via, $via_type ] : undef ), arrival_time => $opt->{arrive}, departure_time => $opt->{depart} // $opt->{time}, date => $opt->{date}, exclude => $opt->{exclude}, train_type => $opt->{include}, with_bike => $opt->{bike}, select_interchange_by => $opt->{prefer}, use_near_stops => $opt->{proximity}, walk_speed => $opt->{'walk-speed'}, max_interchanges => $opt->{'max-change'}, lwp_options => { timeout => $opt->{timeout} }, ); }; check_for_error($@); my @routes = $efa->routes; for my $i ( 0 .. $#routes ) { my $route = $routes[$i]; if ( $opt->{'extended-info'} ) { print '# ' . $route->duration; if ( $route->ticket_type ) { printf( ", class %s (%s€ / %s€)\n\n", $route->ticket_type, $route->fare_adult, $route->fare_child, ); } else { print "\n\n"; } } for my $c ( $route->parts ) { display_connection($c); } if ( $i != $#routes ) { print "---------\n\n"; } } __END__ =head1 NAME efa - unofficial efa.vrr.de command line client =head1 SYNOPSIS =over =item B B<--from> I I B<--to> I I [ I ] =item B [ I ] I I [ I I ] I I =back =head1 VERSION version 2.04 =head1 DESCRIPTION B is a command line client for the L web interface. It sends the specified information to the online form and displays the results. It should be noted that B, although using the web interface of a local transport association, is able to look up connections all over Germany. =head1 OPTIONS =over =item B<--from> I I Departure place =item B<--to> I I Arrival place =item B<--via> I I Travel via this place In case you want I to be an address or "point of interest", you can set it to 'addr:something' or 'poi:something'. =item B<-t>|B<--time>|B<--depart> I:I Journey start time =item B<-a>|B<--arrive> I:I Journey end time (overrides --time/--depart) =item B<-d>|B<--date> I
.I.[I] Journey date =item B<-b>|B<--bike> Choose connections allowing to carry a bike =item B<-e>|B<--exclude> I Exclude I (comma separated list). Possible transports: zug, s-bahn, u-bahn, stadtbahn, tram, stadtbus, regionalbus, schnellbus, seilbahn, schiff, ast, sonstige =item B<-E>|B<--extended-info> Display duration, ticket class and price for each route (if available) =item B<-m>|B<--max-change> I Print connections with at most I interchanges =item B<-P>|B<--prefer> I Prefer connections of I: =over =item * speed (default) The faster, the better =item * nowait Prefer connections with less interchanges =item * nowalk Prefer connections with less walking (at interchanges) =back =item B<-p>|B<--proximity> Take stops close to the stop/start into account and possibly use them instead =item B<-i>|B<--include> I Include connections using trains of type I, where I may be: =over =item * local (default) only take local trains ("Verbund-/Nahverkehrslinien"). Slow, but the cheapest method if you're not travelling long distance =item * ic Local trains + IC =item * ice All trains (local + IC + ICE) =back =item B<-w>|B<--walk-speed> I Set your walking speed to I. Accepted values: normal (default), fast, slow =item B<-I>|B<--ignore-info> [ I ] Ignore additional information matching I (default: /Fahrradmitnahme/) If I is not supplied, removes the default regex (-E nothing will be ignored) =item B<--timeout> I Set timeout for HTTP requests. Default: 60 seconds. =item B<--post> I=I Add I with I to the HTTP POST request sent to the EFA server. This can be used to use setting B does not yet cover, like C<--post lineRestriction=400> to also show IC and ICE trains. Note that B<--post> will be overridden by the standard efa options, such as B<--time> =item B<-v>|B<--version> Print version information =back =head1 EXIT STATUS 0 Everything went well 1 Invalid arguments, see error message 2 Network error, unable to send request 3 efa.vrr.de did not return any parsable data 4 efa.vrr.de error: ambiguous input 5 efa.vrr.de error: no connections found 10 Unknown Travel::Routing::DE::VRR error 255 Other internal error =head1 CONFIGURATION None. =head1 DEPENDENCIES This script requires perl 5.10 (or higher) with the following modules: =over =item * Class::Accessor =item * Exception::Class =item * LWP::UserAgent =item * XML::LibXML =back =head1 BUGS AND LIMITATIONS None known. =head1 AUTHOR Copyright (C) 2009-2014 by Daniel Friesel Ederf@finalrewind.orgE =head1 LICENSE 0. You just DO WHAT THE FUCK YOU WANT TO. Travel-Routing-DE-VRR-2.04/t000700001750001750 012263041216 14527 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/t/10-pod.t000555001750001750 15512263041216 16047 0ustar00derfderf000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; use Test::More; use Test::Pod; all_pod_files_ok(); Travel-Routing-DE-VRR-2.04/t/01-compile-pl.t000555001750001750 16012263041216 17322 0ustar00derfderf000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; use Test::More; use Test::Compile; all_pl_files_ok(); Travel-Routing-DE-VRR-2.04/t/21-vrr.t000444001750001750 735512263041216 16126 0ustar00derfderf000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; use utf8; use Encode qw(decode); use File::Slurp qw(slurp); use Test::More tests => 74; BEGIN { use_ok('Travel::Routing::DE::VRR'); } require_ok('Travel::Routing::DE::VRR'); my $xml = slurp('t/in/e_alf_d_hbf.xml'); my $routing = Travel::Routing::DE::VRR->new_from_xml( xml => $xml ); isa_ok( $routing, 'Travel::Routing::DE::VRR' ); can_ok( $routing, 'routes' ); for my $r ( $routing->routes ) { isa_ok( $r, 'Travel::Routing::DE::VRR::Route' ); can_ok( $r, qw(duration parts ticket_type fare_adult fare_child vehicle_time) ); for my $c ( $r->parts ) { isa_ok( $c, 'Travel::Routing::DE::VRR::Route::Part' ); can_ok( $c, qw( arrival_stop arrival_platform arrival_stop_and_platform arrival_date arrival_sdate arrival_time arrival_stime departure_stop departure_platform departure_stop_and_platform departure_date departure_sdate departure_time departure_stime delay extra train_line train_destination ) ); } } my $r0 = ( $routing->routes )[0]; is( $r0->duration, '00:45', 'r0: duration' ); is( $r0->vehicle_time, 35, 'r0: vehicle_time' ); is( $r0->ticket_type, 'B', 'r0: ticket_type' ); is( $r0->fare_adult, '4.70', 'r0: fare_adult' ); is( $r0->fare_child, '1.40', 'r0: fare_child' ); my ( $c0, $c1 ) = $r0->parts; is( $c0->delay, 0, 'r0,0: delay' ); is_deeply( [ $c0->extra ], [], 'r0,0: extra' ); is( $c0->train_line, decode( 'UTF-8', 'Straßenbahn 107' ), 'r0,0: line' ); is( $c0->train_destination, 'Essen Hanielstr. Schleife', 'r0,0: dest' ); is( $c0->departure_stop, 'Essen Alfredusbad', 'r0,0: dstop' ); is( $c0->departure_platform, 'Bstg. 1', 'r0,0: dplatf' ); is( $c0->departure_stop_and_platform, 'Essen Alfredusbad: Bstg. 1', 'r0,0: dsp' ); is( $c0->departure_date, '27.11.2011', 'r0,0: drdate' ); is( $c0->departure_sdate, '27.11.2011', 'r0,0: dsdate' ); is( $c0->departure_time, '13:55', 'r0,0: drtime' ); is( $c0->departure_stime, '13:55', 'r0,0: dstime' ); is( $c0->arrival_stop, 'Essen Hauptbahnhof', 'r0,0: astop' ); is( $c0->arrival_platform, 'Bstg. 1', 'r0,0: aplatf' ); is( $c0->arrival_stop_and_platform, 'Essen Hauptbahnhof: Bstg. 1', 'r0,0: asp' ); is( $c0->arrival_date, '27.11.2011', 'r0,0: ardate' ); is( $c0->arrival_sdate, '27.11.2011', 'r0,0: asdate' ); is( $c0->arrival_time, '14:02', 'r0,0: artime' ); is( $c0->arrival_stime, '14:02', 'r0,0: astime' ); is_deeply( ($c0->via)[0], ['27.11.2011', '13:56', 'Essen Florastr.', 'Bstg. 1'], 'r0,0: via[0]'); is( $c1->delay, 3, 'r0,1: delay' ); is_deeply( [ $c1->extra ], [ decode( 'UTF-8', 'Fahrradmitnahme begrenzt möglich' ) ], 'r0,1: extra' ); is( $c1->train_line, 'R-Bahn RE1', 'r0,1: line' ); is( $c1->train_destination, 'Aachen, Hbf', 'r0,1: dest' ); is( $c1->departure_stop, 'Essen Hauptbahnhof', 'r0,1: dstop' ); is( $c1->departure_platform, 'Gleis 2', 'r0,1: dplatf' ); is( $c1->departure_stop_and_platform, 'Essen Hauptbahnhof: Gleis 2', 'r0,1: dsp' ); is( $c1->departure_date, '27.11.2011', 'r0,1: drdate' ); is( $c1->departure_sdate, '27.11.2011', 'r0,1: dsdate' ); is( $c1->departure_time, '14:12', 'r0,1: drtime' ); is( $c1->departure_stime, '14:09', 'r0,1: dstime' ); is( $c1->arrival_stop, decode( 'UTF-8', 'Düsseldorf Hbf' ), 'r0,1: astop' ); is( $c1->arrival_platform, 'Gleis 16', 'r0,1: aplatf' ); is( $c1->arrival_stop_and_platform, decode( 'UTF-8', 'Düsseldorf Hbf: Gleis 16' ), 'r0,1: asp' ); is( $c1->arrival_date, '27.11.2011', 'r0,1: ardate' ); is( $c1->arrival_sdate, '27.11.2011', 'r0,1: asdate' ); is( $c1->arrival_time, '14:40', 'r0,1: artime' ); is( $c1->arrival_stime, '14:37', 'r0,1: astime' ); Travel-Routing-DE-VRR-2.04/t/00-compile-pm.t000555001750001750 16012263041216 17322 0ustar00derfderf000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; use Test::More; use Test::Compile; all_pm_files_ok(); Travel-Routing-DE-VRR-2.04/t/20-vrr.t000444001750001750 671312263041216 16122 0ustar00derfderf000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; use Test::More tests => 67; use Test::Fatal; BEGIN { use_ok('Travel::Routing::DE::VRR'); } require_ok('Travel::Routing::DE::VRR'); sub efa_conf { my $ret = { origin => ['Essen', 'HBf'], destination => ['Koeln', 'HBf'], lwp_options => {}, submit => 0, }; foreach my $p (@_) { $ret->{$p->[0]} = $p->[1]; } return $ret; } sub efa_new { return new_ok( 'Travel::Routing::DE::VRR' => [%{efa_conf(@_)}] ); } sub is_efa_post { my ($ck, $cv, @post) = @_; my $efa = efa_new([$ck, $cv]); my $ok = 1; is_deeply( $efa->{'config'}, efa_conf([$ck, $cv]), "$ck => $cv: conf ok", ); foreach my $ref (@post) { my ($key, $value) = @{$ref}; if (not defined $efa->{'post'}->{"key"} and not defined $value) { next; } if ($efa->{'post'}->{"$key"} ne $value) { $ok = 0; last; } } ok( $ok, "$ck => $cv: POST okay", ); } sub is_efa_err { my ($ck, $cv, $exception) = @_; isa_ok( exception { Travel::Routing::DE::VRR->new(%{efa_conf([$ck, $cv])}) }, $exception, "$ck => $cv" ); } is_efa_post('ignored', 'ignored'); my $efa; is_efa_post( 'via', ['MH', 'HBf'], ['place_via', 'MH'], ['name_via', 'HBf'], ['type_via', 'stop'], ); is_efa_post( 'origin', ['D', 'Fuerstenwall 232', 'address'], ['place_origin', 'D'], ['name_origin', 'Fuerstenwall 232'], ['type_origin', 'address'], ); is_efa_post( 'departure_time', '22:23', ['itdTripDateTimeDepArr', 'dep'], ['itdTimeHour', '22'], ['itdTimeMinute', '23'], ); is_efa_post( 'arrival_time', '16:38', ['itdTripDateTimeDepArr', 'arr'], ['itdTimeHour', '16'], ['itdTimeMinute', '38'], ); is_efa_post( 'date', '2.10.2009', ['itdDateDay', '2'], ['itdDateMonth', '10'], ['itdDateYear', '2009'], ); is_efa_post( 'date', '26.12.', ['itdDateDay', '26'], ['itdDateMonth', '12'], ['itdDateYear', (localtime(time))[5] + 1900], ); is_efa_post( 'exclude', [qw[zug]], ['inclMOT_0', undef], ); is_efa_post( 'exclude', [qw[stadtbus schiff ast]], ['inclMOT_5', undef], ['inclMOT_9', undef], ['inclMOT_10', undef], ); is_efa_post( 'select_interchange_by', 'speed', ['routeType', 'LEASTTIME'], ); is_efa_post( 'select_interchange_by', 'waittime', ['routeType', 'LEASTINTERCHANGE'], ); is_efa_post( 'select_interchange_by', 'distance', ['routeType', 'LEASTWALKING'], ); is_efa_post( 'train_type', 'local', ['lineRestriction', 403], ); is_efa_post( 'train_type', 'ic', ['lineRestriction', 401], ); is_efa_post( 'train_type', 'ice', ['lineRestriction', 400], ); is_efa_post( 'walk_speed', 'normal', ['changeSpeed', 'normal'], ); is_efa_post( 'max_interchanges', 5, ['maxChanges', 5], ); is_efa_post( 'use_near_stops', 1, ['useProxFootSearch', 1], ); is_efa_post( 'with_bike', 1, ['bikeTakeAlong', 1], ); is_efa_err( 'departure_time', '37:00', 'Travel::Routing::DE::VRR::Exception::Setup', ); is_efa_err( 'departure_time', '07', 'Travel::Routing::DE::VRR::Exception::Setup', ); is_efa_err( 'train_type', 'invalid', 'Travel::Routing::DE::VRR::Exception::Setup', ); is_efa_err( 'walk_speed', 'invalid', 'Travel::Routing::DE::VRR::Exception::Setup', ); is_efa_err( 'select_interchange_by', 'invalid', 'Travel::Routing::DE::VRR::Exception::Setup', ); is_efa_err( 'exclude', [qw[sonstige invalid]], 'Travel::Routing::DE::VRR::Exception::Setup', ); is_efa_err( 'date', '42.5.2003', 'Travel::Routing::DE::VRR::Exception::Setup', ); is_efa_err( 'date', '7.', 'Travel::Routing::DE::VRR::Exception::Setup', ); Travel-Routing-DE-VRR-2.04/t/out000700001750001750 012263041216 15336 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/t/out/e_hbf_mh_hbf000444001750001750 56312263041216 17762 0ustar00derfderf00000000000011:55 ab Essen Hauptbahnhof: Gleis 7 S-Bahn S1 Solingen Hbf 12:05 an Mülheim Hbf: Gleis 5 ------ 12:08 ab Essen Hauptbahnhof: Gleis 2 R-Bahn RE1 Aachen Hbf 12:13 an Mülheim Hbf: Gleis 6 ------ 12:15 ab Essen Hauptbahnhof: Gleis 7 S-Bahn S1 Solingen Hbf 12:25 an Mülheim Hbf: Gleis 5 Travel-Routing-DE-VRR-2.04/t/out/e_hbf_du_hbf.ice000444001750001750 61712263041216 20525 0ustar00derfderf000000000000# Bordrestaurant 11:59 ab Essen Hauptbahnhof: Gleis 1 IC 2113 InterCity Stuttgart Hauptbahnhof (oben) 12:10 an Duisburg Hbf: Gleis 4 ------ 12:08 ab Essen Hauptbahnhof: Gleis 2 R-Bahn RE1 Aachen Hbf 12:21 an Duisburg Hbf: Gleis 4 ------ 12:15 ab Essen Hauptbahnhof: Gleis 7 S-Bahn S1 Solingen Hbf 12:33 an Duisburg Hbf: Gleis 5 Travel-Routing-DE-VRR-2.04/t/out/e_hbf_b_hbf.ice000444001750001750 422712263041216 20357 0ustar00derfderf00000000000011:23 ab Essen Hauptbahnhof: Gleis 4 ICE 547 InterCityExpress Berlin Ostbahnhof 12:07 an Hamm (Westf): Gleis 5 E-H # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 12:11 ab Hamm (Westf): Gleis 5 ICE 557 InterCityExpress Berlin Ostbahnhof 13:34 an Hannover Hauptbahnhof: Gleis 9 # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 13:37 ab Hannover Hauptbahnhof: Gleis 9 ICE 547 InterCityExpress Berlin Ostbahnhof 15:08 an Berlin Hbf: Gleis 12 D - G ------ 12:23 ab Essen Hauptbahnhof: Gleis 4 ICE 849 InterCityExpress Berlin Ostbahnhof 13:07 an Hamm (Westf): Gleis 5 E-H # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 13:11 ab Hamm (Westf): Gleis 5 ICE 859 InterCityExpress Berlin Ostbahnhof 14:31 an Hannover Hauptbahnhof: Gleis 10 # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 14:34 ab Hannover Hauptbahnhof: Gleis 10 ICE 849 InterCityExpress Berlin Ostbahnhof 16:11 an Berlin Hbf: Gleis 12 A - D ------ 13:23 ab Essen Hauptbahnhof: Gleis 6 ICE 549 InterCityExpress Berlin Ostbahnhof 14:07 an Hamm (Westf): Gleis 5 E-H # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 14:11 ab Hamm (Westf): Gleis 5 ICE 559 InterCityExpress Berlin Ostbahnhof 15:34 an Hannover Hauptbahnhof: Gleis 9 # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 15:37 ab Hannover Hauptbahnhof: Gleis 9 ICE 549 InterCityExpress Berlin Ostbahnhof 16:54 an Berlin-Spandau: Gleis 6 A - C # Linie KBS 202: SnackPoint/Imbiss im Zug 17:03 ab Berlin-Spandau IC 145 InterCity Berlin Hbf 17:03 an Berlin Hbf ------ 13:23 ab Essen Hauptbahnhof: Gleis 6 ICE 549 InterCityExpress Berlin Ostbahnhof 14:07 an Hamm (Westf): Gleis 5 E-H # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 14:11 ab Hamm (Westf): Gleis 5 ICE 559 InterCityExpress Berlin Ostbahnhof 15:34 an Hannover Hauptbahnhof: Gleis 9 # nicht umsteigen, # Weiterfahrt im selben Fahrzeug möglich 15:37 ab Hannover Hauptbahnhof: Gleis 9 ICE 549 InterCityExpress Berlin Ostbahnhof 17:08 an Berlin Hbf: Gleis 12 A - D Travel-Routing-DE-VRR-2.04/t/out/e_hbf_mh_hbf.ignore_none000444001750001750 77112263041216 22264 0ustar00derfderf000000000000# Linie S1: Fahrradmitnahme begrenzt möglich 11:55 ab Essen Hauptbahnhof: Gleis 7 S-Bahn S1 Solingen Hbf 12:05 an Mülheim Hbf: Gleis 5 ------ # Fahrradmitnahme begrenzt möglich 12:08 ab Essen Hauptbahnhof: Gleis 2 R-Bahn RE1 Aachen Hbf 12:13 an Mülheim Hbf: Gleis 6 ------ # Linie S1: Fahrradmitnahme begrenzt möglich 12:15 ab Essen Hauptbahnhof: Gleis 7 S-Bahn S1 Solingen Hbf 12:25 an Mülheim Hbf: Gleis 5 Travel-Routing-DE-VRR-2.04/t/out/e_werden_e_hbf000444001750001750 117112263041216 20343 0ustar00derfderf00000000000011:46 ab Essen Werden S: Bstg. 4 Niederflurbus 169 Margarethenhöhe 11:53 an Essen Bredeney: Bstg. 3 11:57 ab Essen Bredeney: Bstg. 5 Straßenbahn 107 Gelsenkirchen Hbf 12:08 an Essen Hauptbahnhof: Bstg. 1 ------ 12:01 ab Essen Werden S: Gleis 1 S-Bahn S6 Essen Hauptbahnhof 12:12 an Essen Hauptbahnhof: Gleis 12 ------ 12:06 ab Essen Werden S: Bstg. 4 Niederflurbus 169 Margarethenhöhe 12:13 an Essen Bredeney: Bstg. 3 12:17 ab Essen Bredeney: Bstg. 5 Straßenbahn 107 Gelsenkirchen Hbf 12:28 an Essen Hauptbahnhof: Bstg. 1 Travel-Routing-DE-VRR-2.04/t/out/e_hbf_b_hbf.ice.ignore_all000444001750001750 316512263041216 22471 0ustar00derfderf00000000000011:23 ab Essen Hauptbahnhof: Gleis 4 ICE 547 InterCityExpress Berlin Ostbahnhof 12:07 an Hamm (Westf): Gleis 5 E-H 12:11 ab Hamm (Westf): Gleis 5 ICE 557 InterCityExpress Berlin Ostbahnhof 13:34 an Hannover Hauptbahnhof: Gleis 9 13:37 ab Hannover Hauptbahnhof: Gleis 9 ICE 547 InterCityExpress Berlin Ostbahnhof 15:08 an Berlin Hbf: Gleis 12 D - G ------ 12:23 ab Essen Hauptbahnhof: Gleis 4 ICE 849 InterCityExpress Berlin Ostbahnhof 13:07 an Hamm (Westf): Gleis 5 E-H 13:11 ab Hamm (Westf): Gleis 5 ICE 859 InterCityExpress Berlin Ostbahnhof 14:31 an Hannover Hauptbahnhof: Gleis 10 14:34 ab Hannover Hauptbahnhof: Gleis 10 ICE 849 InterCityExpress Berlin Ostbahnhof 16:11 an Berlin Hbf: Gleis 12 A - D ------ 13:23 ab Essen Hauptbahnhof: Gleis 6 ICE 549 InterCityExpress Berlin Ostbahnhof 14:07 an Hamm (Westf): Gleis 5 E-H 14:11 ab Hamm (Westf): Gleis 5 ICE 559 InterCityExpress Berlin Ostbahnhof 15:34 an Hannover Hauptbahnhof: Gleis 9 15:37 ab Hannover Hauptbahnhof: Gleis 9 ICE 549 InterCityExpress Berlin Ostbahnhof 16:54 an Berlin-Spandau: Gleis 6 A - C 17:03 ab Berlin-Spandau IC 145 InterCity Berlin Hbf 17:03 an Berlin Hbf ------ 13:23 ab Essen Hauptbahnhof: Gleis 6 ICE 549 InterCityExpress Berlin Ostbahnhof 14:07 an Hamm (Westf): Gleis 5 E-H 14:11 ab Hamm (Westf): Gleis 5 ICE 559 InterCityExpress Berlin Ostbahnhof 15:34 an Hannover Hauptbahnhof: Gleis 9 15:37 ab Hannover Hauptbahnhof: Gleis 9 ICE 549 InterCityExpress Berlin Ostbahnhof 17:08 an Berlin Hbf: Gleis 12 A - D Travel-Routing-DE-VRR-2.04/t/out/e_martinstr_e_florastr000444001750001750 73612263041216 22165 0ustar00derfderf00000000000011:58 ab Essen Martinstr.: Bstg. 2 Straßenbahn 101 Bredeney 11:59 an Essen Florastr.: Bstg. 2 ------ 12:05 ab Essen Martinstr.: Bstg. 2 Straßenbahn 107 Bredeney 12:06 an Essen Florastr.: Bstg. 2 ------ 12:08 ab Essen Martinstr.: Bstg. 2 Straßenbahn 101 Bredeney 12:09 an Essen Florastr.: Bstg. 2 ------ ab Essen Martinstr. Fußweg ca. 12 Minuten an Essen Florastr. Travel-Routing-DE-VRR-2.04/t/in000700001750001750 012263041216 15135 5ustar00derfderf000000000000Travel-Routing-DE-VRR-2.04/t/in/e_alf_d_hbf.xml000444001750001750 40740512263041216 20270 0ustar00derfderf000000000000 Essen Essen Alfredusbad Alfredusbad Düsseldorf Duesseldorf Hbf Hbf Zug S-Bahn U-Bahn Stadtbahn Straßen-/Trambahn Stadtbus Regionalbus Schnellbus Seil-/Zahnradbahn Schiff AST/Rufbus Sonstige 10 12 0 22 21 59 54 56 62 57 60 52 50 58 66 64 69 68 80 110 113 112 130 131 154 156 152 150 172 174 170 190 182 176 186 178 184 180 192 200 202 206 204 194 223 219 208 209 218 217 212 214 216 210 221 232 230 234 240 242 254 252 250 260 270 266 262 268 264 256 272 282 280 302 300 290 306 304 314 312 316 310 322 326 328 321 324 320 334 332 330 340 344 342 350 352 358 356 366 360 364 354 362 368 380 376 382 378 374 372 383 377 370 391 389 384 388 386 414 412 410 416 424 422 420 430 442 444 436 440 438 432 434 446 450 452 463 462 460 466 468 464 476 478 470 472 474 481 491 482 510 509 504 508 506 502 500 512 514 523 521 522 524 526 520 528 530 540 542 554 550 552 586 588 584 587 580 582 622 620 614 612 610 630 632 624 640 644 642 654 652 650 658 668 656 660 666 664 670 677 675 676 678 679 672 674 700 722 720 732 730 740 746 742 750 748 754 760 752 821 822 840 850 11 EVAG Strab DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3361013 459590 3361022 459573 3361030 459552 3361037 459544 3361040 459498 3361046 459468 3361054 459459 3361062 459428 3361075 459372 3361094 459301 3361107 459236 3361111 459219 3361121 459169 3361117 459140 3361123 459100 3361149 458995 3361398 457763 3361505 457246 3361663 456905 3361663 456905 3361700 456826 3361800 456643 3361872 456515 3361894 456478 3361895 456477 3361896 456477 3361896 456476 3361897 456475 3361898 456474 3361899 456472 3361901 456471 3361902 456468 3361904 456465 3361907 456462 3361909 456458 3361912 456453 3361915 456448 3361918 456443 3361922 456437 3361923 456436 DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3361923 456436 3362045 456187 00 Daten DB AG Fahrradmitnahme begrenzt möglich 452 350 342 340 330 332 434 432 430 1-2 11 EVAG Strab DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3361013 459589 3360972 459664 3360866 459818 3360820 459886 3360809 459902 3360809 459902 3360799 459916 3360757 459982 3360749 460003 3360655 460210 3360637 460258 3360620 460292 3360554 460423 3360544 460448 3360539 460462 3360539 460462 3360500 460567 3360502 460624 3360516 460739 3360522 460798 DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3360524 460798 3360522 460798 3360523 460808 12 EVAG Bus DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3360523 460808 3360512 460901 3360497 460929 3360464 460959 3360452 460965 3360460 460998 3360451 461040 3360417 461103 3360387 461143 3360366 461168 3360285 461237 3360219 461301 3360171 461393 3360140 461497 3360137 461515 3360137 461577 3360160 461636 3360180 461661 3360225 461708 3360234 461733 3360234 461733 3360238 461746 3360231 461889 3360243 461954 3360254 461990 3360276 462030 3360326 462080 3360353 462097 3360353 462097 3360374 462111 3360387 462121 3360434 462176 3360511 462417 3360539 462457 3360539 462457 3360576 462510 3360593 462529 3360647 462620 3360658 462675 3360658 462706 3360640 462791 3360621 462852 3360603 462971 3360615 463085 3360620 463105 3360672 463228 3360706 463306 3360719 463347 DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3360718 463347 3360684 463409 PlanLowFloorVehicle 1 00 Daten DB AG Linie S6: Fahrradmitnahme begrenzt möglich 452 450 442 440 432 430 1-3 11 EVAG Strab DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3361013 459590 3361022 459573 3361030 459552 3361037 459544 3361040 459498 3361046 459468 3361054 459459 3361062 459428 3361075 459372 3361094 459301 3361107 459236 3361111 459219 3361121 459169 3361117 459140 3361123 459100 3361149 458995 3361398 457763 3361505 457246 3361663 456905 3361663 456905 3361700 456826 3361800 456643 3361872 456515 3361894 456478 3361895 456477 3361896 456477 3361896 456476 3361897 456475 3361898 456474 3361899 456472 3361901 456471 3361902 456468 3361904 456465 3361907 456462 3361909 456458 3361912 456453 3361915 456448 3361918 456443 3361922 456437 3361923 456436 DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3361923 456436 3362045 456187 00 Daten DB AG Fahrradmitnahme begrenzt möglich 00 Daten DB AG Fahrradmitnahme begrenzt möglich 452 350 342 340 330 332 434 432 430 1-3 11 EVAG Strab DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3361013 459590 3361022 459573 3361030 459552 3361037 459544 3361040 459498 3361046 459468 3361054 459459 3361062 459428 3361075 459372 3361094 459301 3361107 459236 3361111 459219 3361121 459169 3361117 459140 3361123 459100 3361149 458995 3361398 457763 3361505 457246 3361663 456905 DHDN_RAUENBERG_BESSEL_1841 PROJECTION_MDV 3361923 456436 3362045 456187 00 Daten DB AG Fahrradmitnahme begrenzt möglich 452 350 340 330 332 434 432 430 1-2 Travel-Routing-DE-VRR-2.04/t/in/e_hbf_mh_hbf.xml000444001750001750 16344712263041216 20453 0ustar00derfderf000000000000 Essen Essen Hauptbahnhof hbf Mülheim a.d. Ruhr mh Hbf Hbf Hbf Hauptbahnhof Nordeingang Kaiserplatz Zug S-Bahn U-Bahn Stadtbahn Straßen-/Trambahn Stadtbus Regionalbus Schnellbus Seil-/Zahnradbahn Schiff AST/Rufbus Sonstige 10 12 0 22 21 59 54 56 62 57 60 52 50 58 66 64 69 68 80 110 113 112 130 131 154 156 152 150 172 174 170 190 182 176 186 178 184 180 192 200 202 206 204 194 223 219 208 209 218 217 212 214 216 210 221 232 230 234 240 242 254 252 250 260 270 266 262 268 264 256 272 282 280 302 300 290 306 304 314 312 316 310 322 326 328 321 324 320 334 332 330 340 344 342 350 352 358 356 366 360 364 354 362 368 380 376 382 378 374 372 383 377 370 391 389 384 388 386 414 412 410 416 424 422 420 430 442 444 436 440 438 432 434 446 450 452 463 462 460 466 468 464 476 478 470 472 474 481 491 482 510 509 504 508 506 502 500 512 514 523 521 522 524 526 520 528 530 540 542 554 550 552 586 588 584 587 580 582 622 620 614 612 610 630 632 624 640 644 642 654 652 650 658 668 656 660 666 664 670 677 675 676 678 679 672 674 700 722 720 732 730 740 746 742 750 748 754 760 752 821 822 840 850 00 Daten DB AG Linie S3: Fahrradmitnahme begrenzt möglich 350 342 1-1 00 Daten DB AG Fahrradmitnahme begrenzt möglich 350 342 1-1 00 Daten DB AG Fahrradmitnahme begrenzt möglich 350 342 1-1 00 Daten DB AG Linie S1: Achtung! Baumaßnahmen. Infos: www.bahn.de/bauarbeiten Linie S1: Fahrradmitnahme begrenzt möglich 350 342 1-1 Travel-Routing-DE-VRR-2.04/t/in/e_hbf_mh_hbf000444001750001750 10263012263041216 17637 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
Fahrplanauskunft
*
*
* von: Essen / Hauptbahnhof nach: Mülheim a.d. Ruhr / Hbf
*
Abfahrt: 12:00 Uhr Datum: 07.06.2010
*
*
*
* Fahrtdaten Fahrtdauer Umsteigen Preisstufe
*
* 1. Fahrt: am 07.06.2010 von 11:55 bis 12:05 Uhr 00:10 0 A2*
* 2. Fahrt: am 07.06.2010 von 12:08 bis 12:13 Uhr 00:05 0 A2*
* 3. Fahrt: am 07.06.2010 von 12:15 bis 12:25 Uhr 00:10 0 A2*
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
*
* 1. Fahrt
11:55 ab Essen Hauptbahnhof: Gleis 7 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan S-Bahn S-Bahn S1
* 12:05 an Mülheim Hbf: Gleis 5 *Umgebungsplan*Stadtplan Solingen Hbf
* Linie S1: Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 2. Fahrt
12:08 ab Essen Hauptbahnhof: Gleis 2 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Zug R-Bahn RE1
* 12:13 an Mülheim Hbf: Gleis 6 *Umgebungsplan*Stadtplan Aachen Hbf
* Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 3. Fahrt
12:15 ab Essen Hauptbahnhof: Gleis 7 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan S-Bahn S-Bahn S1
* 12:25 an Mülheim Hbf: Gleis 5 *Umgebungsplan*Stadtplan Solingen Hbf
* Linie S1: Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
Abweichung Verspätungen sind berücksichtigt Pünktlich Fahrt voraussichtlich pünktlich
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
* *
Travel-Routing-DE-VRR-2.04/t/in/invalid_input000444001750001750 11625212263041216 20143 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
 
Fahrplanauskunft
*
*  von: Stadt/Ort *Essen *
 
*
* Haltestelle *Hauptbahnhof
* *
*
*
*  nach: Stadt/Ort *Düsseldorf *
 
*
* Haltestelle *Hbf
* *
*
*
*  Linienauswahl
*
* alle Linien
* alle Linien ohne ICE
* nur Verbund-/Nahverkehrslinien
*
*  Umsteigen / Fußwege
* *
zeitkürzeste Verbindungen
Verbindungen mit wenig Umsteigen
Verbindungen mit kurzen Fußwegen
*
 Gehgeschwindigkeit 
* *
normal
schnell
langsam
*
  Berücksichtigung von Nachbarhaltestellen bei Start und Ziel
*
*
*
*  Zeit:
*  Abfahrt * Uhr * Datum
*  Ankunft        
* Uhrzeit unbrauchbar
*
*
*
* * *
*
*
* *
Travel-Routing-DE-VRR-2.04/t/in/e_hbf_du_hbf.ice000444001750001750 10310712263041216 20402 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
Fahrplanauskunft
*
*
* von: Essen / Hauptbahnhof nach: Duisburg / Hbf
*
Abfahrt: 12:00 Uhr Datum: 07.06.2010
*
*
*
* Fahrtdaten Fahrtdauer Umsteigen Preisstufe
*
* 1. Fahrt: am 07.06.2010 von 11:59 bis 12:10 Uhr 00:11 0
* 2. Fahrt: am 07.06.2010 von 12:08 bis 12:21 Uhr 00:13 0 B
* 3. Fahrt: am 07.06.2010 von 12:15 bis 12:33 Uhr 00:18 0 B
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
*
* 1. Fahrt
11:59 ab Essen Hauptbahnhof: Gleis 1 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Zug IC 2113 InterCity
* 12:10 an Duisburg Hbf: Gleis 4 *Umgebungsplan*Stadtplan Stuttgart Hauptbahnhof (oben)
* Fahrradmitnahme reservierungspflichtig
* Fahrradmitnahme begrenzt möglich
* Bordrestaurant
*
* Verbindung zum Drucken auswählen
*
*
*
* 2. Fahrt
12:08 ab Essen Hauptbahnhof: Gleis 2 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Zug R-Bahn RE1
* 12:21 an Duisburg Hbf: Gleis 4 *Umgebungsplan*Stadtplan Aachen Hbf
* Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 3. Fahrt
12:15 ab Essen Hauptbahnhof: Gleis 7 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan S-Bahn S-Bahn S1
* 12:33 an Duisburg Hbf: Gleis 5 *Umgebungsplan*Stadtplan Solingen Hbf
* Linie S1: Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
Abweichung Verspätungen sind berücksichtigt Pünktlich Fahrt voraussichtlich pünktlich
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
* *
Travel-Routing-DE-VRR-2.04/t/in/e_hbf_b_hbf.ice000444001750001750 16603412263041216 20223 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
Fahrplanauskunft
*
*
* von: Essen / Hauptbahnhof nach: Berlin / Hauptbahnhof
*
Abfahrt: 12:00 Uhr Datum: 07.06.2010
*
*
*
* Fahrtdaten Fahrtdauer Umsteigen Preis (Erw./Ki.)
*
* 1. Fahrt: am 07.06.2010 von 11:23 bis 15:08 Uhr 03:45 0
* 2. Fahrt: am 07.06.2010 von 12:23 bis 16:11 Uhr 03:48 0
* 3. Fahrt: am 07.06.2010 von 13:23 bis 17:03 Uhr 03:40 1
* 4. Fahrt: am 07.06.2010 von 13:23 bis 17:08 Uhr 03:45 0
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
*
* 1. Fahrt
11:23
früher
ab Essen Hauptbahnhof: Gleis 4 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Zug ICE 547 InterCityExpress
* 12:07 an Hamm (Westf): Gleis 5 E-H *Stadtplan Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
12:11 ab Hamm (Westf): Gleis 5 *Stadtplan Zug ICE 557 InterCityExpress
* 13:34 an Hannover Hauptbahnhof: Gleis 9 Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
13:37 ab Hannover Hauptbahnhof: Gleis 9 Zug ICE 547 InterCityExpress
* 15:08
später
an Berlin Hbf: Gleis 12 D - G Berlin Ostbahnhof
*
* Verbindung zum Drucken auswählen
*
*
*
* 2. Fahrt
12:23
früher
ab Essen Hauptbahnhof: Gleis 4 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Zug ICE 849 InterCityExpress
* 13:07 an Hamm (Westf): Gleis 5 E-H *Stadtplan Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
13:11 ab Hamm (Westf): Gleis 5 *Stadtplan Zug ICE 859 InterCityExpress
* 14:31 an Hannover Hauptbahnhof: Gleis 10 Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
14:34 ab Hannover Hauptbahnhof: Gleis 10 Zug ICE 849 InterCityExpress
* 16:11
später
an Berlin Hbf: Gleis 12 A - D Berlin Ostbahnhof
*
* Verbindung zum Drucken auswählen
*
*
*
* 3. Fahrt
13:23
früher
ab Essen Hauptbahnhof: Gleis 6 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Zug ICE 549 InterCityExpress
* 14:07 an Hamm (Westf): Gleis 5 E-H *Stadtplan Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
14:11 ab Hamm (Westf): Gleis 5 *Stadtplan Zug ICE 559 InterCityExpress
* 15:34 an Hannover Hauptbahnhof: Gleis 9 Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
15:37 ab Hannover Hauptbahnhof: Gleis 9 Zug ICE 549 InterCityExpress
* 16:54
später
an Berlin-Spandau: Gleis 6 A - C Berlin Ostbahnhof
17:03 ab Berlin-Spandau Zug IC 145 InterCity
* 17:03
später
an Berlin Hbf Berlin Hbf
* Linie KBS 202: SnackPoint/Imbiss im Zug
*
* Verbindung zum Drucken auswählen
*
*
*
* 4. Fahrt
13:23
früher
ab Essen Hauptbahnhof: Gleis 6 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Zug ICE 549 InterCityExpress
* 14:07 an Hamm (Westf): Gleis 5 E-H *Stadtplan Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
14:11 ab Hamm (Westf): Gleis 5 *Stadtplan Zug ICE 559 InterCityExpress
* 15:34 an Hannover Hauptbahnhof: Gleis 9 Berlin Ostbahnhof
* Bordrestaurant
* nicht umsteigen,
* Weiterfahrt im selben Fahrzeug möglich
15:37 ab Hannover Hauptbahnhof: Gleis 9 Zug ICE 549 InterCityExpress
* 17:08
später
an Berlin Hbf: Gleis 12 A - D Berlin Ostbahnhof
*
* Verbindung zum Drucken auswählen
*
*
*
Abweichung Verspätungen sind berücksichtigt Pünktlich Fahrt voraussichtlich pünktlich
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
* *
Travel-Routing-DE-VRR-2.04/t/in/e_hbf_b_hbf.xml000444001750001750 10460112263041216 20253 0ustar00derfderf000000000000 Essen Essen Hauptbahnhof hbf Köln Koeln Dom/Hbf Dom/Hbf Zug S-Bahn U-Bahn Stadtbahn Straßen-/Trambahn Stadtbus Regionalbus Schnellbus Seil-/Zahnradbahn Schiff AST/Rufbus Sonstige 00 Daten DB AG Bordrestaurant 1-1 00 Daten DB AG Bordbistro WLAN verfügbar zwischen Dortmund-Köln-Frankfurt-Stuttgart-München 1-1 00 Daten DB AG Fahrradmitnahme begrenzt möglich NRW-Tarif: 17,00 ? (2.Kl) / PauschalpreisTickets gültig TicketType NRW-Tarif TicketName SchöneReiseTicket NRW Einzelfahrt PREIS_1KL_ERW 26.50 PREIS_2KL_ERW 17.00 PREIS_1KL_KIND 13.25 PREIS_2KL_KIND 8.50 TicketType NRW-Tarif TicketName SchöneFahrtTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 16.60 PREIS_1KL_KIND PREIS_2KL_KIND 8.30 TicketType NRW-Tarif TicketName SchönerTagTicket NRW 5 Personen PREIS_1KL_ERW PREIS_2KL_ERW 36.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerTagTicket NRW Single PREIS_1KL_ERW PREIS_2KL_ERW 26.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchöneWocheTicket NRW PREIS_1KL_ERW 118.60 PREIS_2KL_ERW 80.80 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW PREIS_1KL_ERW 370.90 PREIS_2KL_ERW 253.70 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Abo PREIS_1KL_ERW 303.80 PREIS_2KL_ERW 207.90 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi PREIS_1KL_ERW PREIS_2KL_ERW 223.50 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi Abo PREIS_1KL_ERW PREIS_2KL_ERW 183.30 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW PREIS_1KL_ERW 3675.00 PREIS_2KL_ERW 2600.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW Abo PREIS_1KL_ERW 320.00 PREIS_2KL_ERW 225.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName FahrradTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 4.00 PREIS_1KL_KIND PREIS_2KL_KIND 1-1 00 Daten DB AG Bordrestaurant 1-1 Travel-Routing-DE-VRR-2.04/t/in/e_werden_e_hbf000444001750001750 11614612263041216 20213 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
Fahrplanauskunft
*
*
* von: Essen / Werden S nach: Essen / Hauptbahnhof
*
Abfahrt: 12:00 Uhr Datum: 07.06.2010
*
*
*
* Fahrtdaten Fahrtdauer Umsteigen Preisstufe
*
* 1. Fahrt: am 07.06.2010 von 11:46 bis 12:08 Uhr 00:22 1 A2*
* 2. Fahrt: am 07.06.2010 von 12:01 bis 12:12 Uhr 00:11 0 A2*
* 3. Fahrt: am 07.06.2010 von 12:06 bis 12:28 Uhr 00:22 1 A2*
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
*
* 1. Fahrt
11:46
früher
ab Essen Werden S: Bstg. 4 *Umgebungsplan*Stadtplan Niederflurbus Niederflurbus 169
* 11:53 an Essen Bredeney: Bstg. 3 *Umgebungsplan*Stadtplan Margarethenhöhe
* Level ca. 1 Minute
11:57 ab Essen Bredeney: Bstg. 5 Tram Straßenbahn 107
* 12:08
später
an Essen Hauptbahnhof: Bstg. 1 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Gelsenkirchen Hbf
*
* Verbindung zum Drucken auswählen
*
*
*
* 2. Fahrt
12:01 ab Essen Werden S: Gleis 1 *Umgebungsplan*Stadtplan S-Bahn S-Bahn S6
* 12:12 an Essen Hauptbahnhof: Gleis 12 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Essen Hauptbahnhof
* Linie S6: Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 3. Fahrt
12:06
früher
ab Essen Werden S: Bstg. 4 *Umgebungsplan*Stadtplan Niederflurbus Niederflurbus 169
* 12:13 an Essen Bredeney: Bstg. 3 *Umgebungsplan*Stadtplan Margarethenhöhe
* Level ca. 1 Minute
12:17 ab Essen Bredeney: Bstg. 5 Tram Straßenbahn 107
* 12:28
später
an Essen Hauptbahnhof: Bstg. 1 *Umgebungsplan*Umgebungsplan*Umgebungsplan*Stadtplan Gelsenkirchen Hbf
*
* Verbindung zum Drucken auswählen
*
*
*
Abweichung Verspätungen sind berücksichtigt Pünktlich Fahrt voraussichtlich pünktlich
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
* *
Travel-Routing-DE-VRR-2.04/t/in/ambiguous000444001750001750 11556412263041216 17276 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
Fahrplanauskunft
*
* von: Stadt/Ort *Essen *
Suche über Karte
Suche über Karte
*
* Haltestelle *
* Bitte auswählen
*
*
* nach: Stadt/Ort *Essen *
Suche über Karte
Suche über Karte
*
* Haltestelle *
* Bitte auswählen
*
*
* Linienauswahl
*
* alle Linien
* alle Linien ohne ICE
* nur Verbund-/Nahverkehrslinien
*
* Umsteigen / Fußwege
* *
zeitkürzeste Verbindungen
Verbindungen mit wenig Umsteigen
Verbindungen mit kurzen Fußwegen
*
Gehgeschwindigkeit
* *
normal
schnell
langsam
*
Berücksichtigung von Nachbarhaltestellen bei Start und Ziel
*
*
*
* Zeit:
* Abfahrt * Uhr * Datum
* Ankunft
*
*
*
* * *
*
*
* *
Travel-Routing-DE-VRR-2.04/t/in/e_hbf_k_hbf.xml000444001750001750 27365612263041216 20305 0ustar00derfderf000000000000 Essen Essen Hauptbahnhof hbf Köln Koeln Dom/Hbf Dom/Hbf Zug S-Bahn U-Bahn Stadtbahn Straßen-/Trambahn Stadtbus Regionalbus Schnellbus Seil-/Zahnradbahn Schiff AST/Rufbus Sonstige 00 Daten DB AG Fahrradmitnahme begrenzt möglich 00 Daten DB AG Fahrradmitnahme begrenzt möglich NRW-Tarif: 17,00 ? (2.Kl) / PauschalpreisTickets gültig TicketType NRW-Tarif TicketName SchöneReiseTicket NRW Einzelfahrt PREIS_1KL_ERW 26.50 PREIS_2KL_ERW 17.00 PREIS_1KL_KIND 13.25 PREIS_2KL_KIND 8.50 TicketType NRW-Tarif TicketName SchöneFahrtTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 16.60 PREIS_1KL_KIND PREIS_2KL_KIND 8.30 TicketType NRW-Tarif TicketName SchönerTagTicket NRW 5 Personen PREIS_1KL_ERW PREIS_2KL_ERW 36.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerTagTicket NRW Single PREIS_1KL_ERW PREIS_2KL_ERW 26.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchöneWocheTicket NRW PREIS_1KL_ERW 118.60 PREIS_2KL_ERW 80.80 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW PREIS_1KL_ERW 370.90 PREIS_2KL_ERW 253.70 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Abo PREIS_1KL_ERW 303.80 PREIS_2KL_ERW 207.90 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi PREIS_1KL_ERW PREIS_2KL_ERW 223.50 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi Abo PREIS_1KL_ERW PREIS_2KL_ERW 183.30 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW PREIS_1KL_ERW 3675.00 PREIS_2KL_ERW 2600.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW Abo PREIS_1KL_ERW 320.00 PREIS_2KL_ERW 225.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName FahrradTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 4.00 PREIS_1KL_KIND PREIS_2KL_KIND 1-2 00 Daten DB AG Fahrradmitnahme begrenzt möglich NRW-Tarif: 17,00 ? (2.Kl) / PauschalpreisTickets gültig TicketType NRW-Tarif TicketName SchöneReiseTicket NRW Einzelfahrt PREIS_1KL_ERW 26.50 PREIS_2KL_ERW 17.00 PREIS_1KL_KIND 13.25 PREIS_2KL_KIND 8.50 TicketType NRW-Tarif TicketName SchöneFahrtTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 16.60 PREIS_1KL_KIND PREIS_2KL_KIND 8.30 TicketType NRW-Tarif TicketName SchönerTagTicket NRW 5 Personen PREIS_1KL_ERW PREIS_2KL_ERW 36.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerTagTicket NRW Single PREIS_1KL_ERW PREIS_2KL_ERW 26.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchöneWocheTicket NRW PREIS_1KL_ERW 118.60 PREIS_2KL_ERW 80.80 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW PREIS_1KL_ERW 370.90 PREIS_2KL_ERW 253.70 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Abo PREIS_1KL_ERW 303.80 PREIS_2KL_ERW 207.90 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi PREIS_1KL_ERW PREIS_2KL_ERW 223.50 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi Abo PREIS_1KL_ERW PREIS_2KL_ERW 183.30 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW PREIS_1KL_ERW 3675.00 PREIS_2KL_ERW 2600.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW Abo PREIS_1KL_ERW 320.00 PREIS_2KL_ERW 225.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName FahrradTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 4.00 PREIS_1KL_KIND PREIS_2KL_KIND 1-1 00 Daten DB AG Linie S6: Fahrradmitnahme begrenzt möglich NRW-Tarif: 15,10 ? (2.Kl) / PauschalpreisTickets gültig TicketType NRW-Tarif TicketName SchöneReiseTicket NRW Einzelfahrt PREIS_1KL_ERW 23.40 PREIS_2KL_ERW 15.10 PREIS_1KL_KIND 11.70 PREIS_2KL_KIND 7.55 TicketType NRW-Tarif TicketName SchönerTagTicket NRW 5 Personen PREIS_1KL_ERW PREIS_2KL_ERW 36.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerTagTicket NRW Single PREIS_1KL_ERW PREIS_2KL_ERW 26.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchöneWocheTicket NRW PREIS_1KL_ERW 117.60 PREIS_2KL_ERW 80.10 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW PREIS_1KL_ERW 368.50 PREIS_2KL_ERW 252.10 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Abo PREIS_1KL_ERW 301.90 PREIS_2KL_ERW 206.60 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi PREIS_1KL_ERW PREIS_2KL_ERW 217.80 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi Abo PREIS_1KL_ERW PREIS_2KL_ERW 178.30 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW PREIS_1KL_ERW 3675.00 PREIS_2KL_ERW 2600.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW Abo PREIS_1KL_ERW 320.00 PREIS_2KL_ERW 225.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName FahrradTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 4.00 PREIS_1KL_KIND PREIS_2KL_KIND 1-1 00 Daten DB AG Fahrradmitnahme begrenzt möglich 00 Daten DB AG Linie S6: Fahrradmitnahme begrenzt möglich NRW-Tarif: 17,00 ? (2.Kl) / PauschalpreisTickets gültig TicketType NRW-Tarif TicketName SchöneReiseTicket NRW Einzelfahrt PREIS_1KL_ERW 26.50 PREIS_2KL_ERW 17.00 PREIS_1KL_KIND 13.25 PREIS_2KL_KIND 8.50 TicketType NRW-Tarif TicketName SchöneFahrtTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 16.60 PREIS_1KL_KIND PREIS_2KL_KIND 8.30 TicketType NRW-Tarif TicketName SchönerTagTicket NRW 5 Personen PREIS_1KL_ERW PREIS_2KL_ERW 36.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerTagTicket NRW Single PREIS_1KL_ERW PREIS_2KL_ERW 26.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchöneWocheTicket NRW PREIS_1KL_ERW 118.60 PREIS_2KL_ERW 80.80 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW PREIS_1KL_ERW 370.90 PREIS_2KL_ERW 253.70 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Abo PREIS_1KL_ERW 303.80 PREIS_2KL_ERW 207.90 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi PREIS_1KL_ERW PREIS_2KL_ERW 223.50 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi Abo PREIS_1KL_ERW PREIS_2KL_ERW 183.30 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW PREIS_1KL_ERW 3675.00 PREIS_2KL_ERW 2600.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW Abo PREIS_1KL_ERW 320.00 PREIS_2KL_ERW 225.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName FahrradTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 4.00 PREIS_1KL_KIND PREIS_2KL_KIND 1-2 00 Daten DB AG Fahrradmitnahme begrenzt möglich NRW-Tarif: 17,00 ? (2.Kl) / PauschalpreisTickets gültig TicketType NRW-Tarif TicketName SchöneReiseTicket NRW Einzelfahrt PREIS_1KL_ERW 26.50 PREIS_2KL_ERW 17.00 PREIS_1KL_KIND 13.25 PREIS_2KL_KIND 8.50 TicketType NRW-Tarif TicketName SchöneFahrtTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 16.60 PREIS_1KL_KIND PREIS_2KL_KIND 8.30 TicketType NRW-Tarif TicketName SchönerTagTicket NRW 5 Personen PREIS_1KL_ERW PREIS_2KL_ERW 36.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerTagTicket NRW Single PREIS_1KL_ERW PREIS_2KL_ERW 26.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchöneWocheTicket NRW PREIS_1KL_ERW 118.60 PREIS_2KL_ERW 80.80 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW PREIS_1KL_ERW 370.90 PREIS_2KL_ERW 253.70 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Abo PREIS_1KL_ERW 303.80 PREIS_2KL_ERW 207.90 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi PREIS_1KL_ERW PREIS_2KL_ERW 223.50 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönerMonatTicket NRW Azubi Abo PREIS_1KL_ERW PREIS_2KL_ERW 183.30 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW PREIS_1KL_ERW 3675.00 PREIS_2KL_ERW 2600.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName SchönesJahrTicket NRW Abo PREIS_1KL_ERW 320.00 PREIS_2KL_ERW 225.00 PREIS_1KL_KIND PREIS_2KL_KIND TicketType NRW-Tarif TicketName FahrradTicket NRW PREIS_1KL_ERW PREIS_2KL_ERW 4.00 PREIS_1KL_KIND PREIS_2KL_KIND 1-1 Travel-Routing-DE-VRR-2.04/t/in/no_connections000444001750001750 12325612263041216 20316 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
 
Fahrplanauskunft
*
*
* Leider konnte für Ihre Anfrage keine Verbindung gefunden werden! Bitte ändern Sie Ihre Eingabe (z.B. Fußwegezeit in den Mobilitätseinstellungen) oder starten Sie eine neue Anfrage! *
*
*
*
*
*
* Leider konnte für Ihre Anfrage keine Verbindung gefunden werden! Bitte ändern Sie Ihre Eingabe (z.B. Fußwegezeit in den Mobilitätseinstellungen) oder starten Sie eine neue Anfrage! *
*
*
*
*
*  von: Stadt/Ort *Zürich *
 
*
* Haltestelle *Hauptbahnhof
* *
*
*
*  nach: Stadt/Ort *Essen *
 
*
* Haltestelle *Hauptbahnhof
* *
*
*
*  Linienauswahl
*
* alle Linien
* alle Linien ohne ICE
* nur Verbund-/Nahverkehrslinien
*
*  Umsteigen / Fußwege
* *
zeitkürzeste Verbindungen
Verbindungen mit wenig Umsteigen
Verbindungen mit kurzen Fußwegen
*
 Gehgeschwindigkeit 
* *
normal
schnell
langsam
*
  Berücksichtigung von Nachbarhaltestellen bei Start und Ziel
*
*
*
*  Zeit:
*  Abfahrt * Uhr * Datum
*  Ankunft        
*
*
*
* * *
*
*
* *
Travel-Routing-DE-VRR-2.04/t/in/e_martinstr_e_florastr000444001750001750 10257212263041216 22045 0ustar00derfderf000000000000 Fahrplanauskunft
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
Fahrplanauskunft
*
*
* von: Essen / Martinstr. nach: Essen / Florastr.
*
Abfahrt: 12:00 Uhr Datum: 07.06.2010
*
*
*
* Fahrtdaten Fahrtdauer Umsteigen Preisstufe
*
* 1. Fahrt: am 07.06.2010 von 11:58 bis 11:59 Uhr 00:01 0 A2*
* 2. Fahrt: am 07.06.2010 von 12:05 bis 12:06 Uhr 00:01 0 A2*
* 3. Fahrt: am 07.06.2010 von 12:08 bis 12:09 Uhr 00:01 0 A2*
* 4. Fahrt: am 07.06.2010 von 12:00 bis 12:12 Uhr 00:12 0
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
*
* 1. Fahrt
11:58 ab Essen Martinstr.: Bstg. 2 *Stadtplan Tram Straßenbahn 101
* 11:59 an Essen Florastr.: Bstg. 2 *Umgebungsplan*Stadtplan Bredeney
*
* Verbindung zum Drucken auswählen
*
*
*
* 2. Fahrt
12:05 ab Essen Martinstr.: Bstg. 2 *Stadtplan Tram Straßenbahn 107
* 12:06 an Essen Florastr.: Bstg. 2 *Umgebungsplan*Stadtplan Bredeney
*
* Verbindung zum Drucken auswählen
*
*
*
* 3. Fahrt
12:08 ab Essen Martinstr.: Bstg. 2 *Stadtplan Tram Straßenbahn 101
* 12:09 an Essen Florastr.: Bstg. 2 *Umgebungsplan*Stadtplan Bredeney
*
* Verbindung zum Drucken auswählen
*
*
*
* 4. Fahrt
ab Essen Martinstr. *Stadtplan Fußweg Fußweg ca. 12 Minuten
* an Essen Florastr. *Stadtplan
*
* Verbindung zum Drucken auswählen
*
*
*
Abweichung Verspätungen sind berücksichtigt Pünktlich Fahrt voraussichtlich pünktlich
*
*
*
* zur Druckversion der ausgewählten Verbindungen In Datei Drucken zur Druckversion der ausgewählten Verbindungen (Alle Angaben ohne Gewähr.)
*
*
* *
*
*
* *