diff options
-rw-r--r-- | Changelog | 1 | ||||
-rwxr-xr-x | bin/efa | 7 | ||||
-rw-r--r-- | lib/Travel/Routing/DE/EFA.pm | 19 |
3 files changed, 27 insertions, 0 deletions
@@ -1,6 +1,7 @@ git HEAD * Improve error message for unparsable (or missing) route data + * Add option to specify maximum number of connections Travel::Routing::DE::VRR 2.04 - Tue Jan 07 2014 @@ -155,6 +155,7 @@ GetOptions( help|h ignore-info|I:s max-change|m=i + num-connections|n=i prefer|P=s proximity|p include|i=s @@ -220,6 +221,7 @@ $efa = eval { use_near_stops => $opt->{proximity}, walk_speed => $opt->{'walk-speed'}, max_interchanges => $opt->{'max-change'}, + num_results => $opt->{'num-connections'}, lwp_options => { timeout => $opt->{timeout} }, ); @@ -330,6 +332,11 @@ Display duration, ticket class and price for each route (if available) Print connections with at most I<number> interchanges +=item B<-n>|B<--num-connections> I<number> + +Return up to I<number> connections. If unset, the default of the respective +EFA server is used (usually 4 or 5). + =item B<-P>|B<--prefer> I<type> Prefer connections of I<type>: diff --git a/lib/Travel/Routing/DE/EFA.pm b/lib/Travel/Routing/DE/EFA.pm index 6d67bd8..4047306 100644 --- a/lib/Travel/Routing/DE/EFA.pm +++ b/lib/Travel/Routing/DE/EFA.pm @@ -156,6 +156,14 @@ sub max_interchanges { return; } +sub number_of_trips { + my ( $self, $num ) = @_; + + $self->{post}->{calcNumberOfTrips} = $num; + + return; +} + sub select_interchange_by { my ( $self, $prefer ) = @_; @@ -312,6 +320,7 @@ sub create_post { name_destination => q{}, name_origin => q{}, name_via => q{}, + nextDepsPerLeg => 1, outputFormat => 'XML', placeInfo_destination => 'invalid', placeInfo_origin => 'invalid', @@ -364,6 +373,9 @@ sub create_post { if ( $conf->{max_interchanges} ) { $self->max_interchanges( $conf->{max_interchanges} ); } + if ( $conf->{num_results} ) { + $self->number_of_trips( $conf->{num_results} ); + } if ( $conf->{select_interchange_by} ) { $self->select_interchange_by( $conf->{select_interchange_by} ); } @@ -586,6 +598,8 @@ sub parse_xml { my $tree = $self->{tree} = XML::LibXML->load_xml( string => $self->{xml_reply}, ); + # say $tree->toString(2); + my $xp_element = XML::LibXML::XPathExpression->new( '//itdItinerary/itdRouteList/itdRoute'); my $xp_err = XML::LibXML::XPathExpression->new( @@ -785,6 +799,11 @@ seilbahn, schiff, ast, sonstige Set maximum number of interchanges +=item B<num_results> => I<num> + +Return up to I<num> connections. If unset, the default of the respective +EFA server is used (usually 4 or 5). + =item B<select_interchange_by> => B<speed>|B<waittime>|B<distance> Prefer either fast connections (default), connections with low wait time or |