From 4ab8c3cc012f4154c79428243d62f94938d7563a Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 11 Sep 2011 13:35:24 +0200 Subject: Allow departure listing for an address / point of interest --- bin/efa-m | 11 ++++++++--- lib/Travel/Status/DE/VRR.pm | 19 +++++++++++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/bin/efa-m b/bin/efa-m index 0c10ba6..def9f07 100755 --- a/bin/efa-m +++ b/bin/efa-m @@ -9,7 +9,7 @@ use Getopt::Long qw(:config no_ignore_case); use List::Util qw(max); use Travel::Status::DE::VRR; -my ( $date, $time ); +my ( $date, $time, $input_type ); my @output; binmode( STDOUT, ':encoding(utf-8)' ); @@ -26,13 +26,18 @@ if ( @ARGV != 2 ) { show_help(1); } -my ( $place, $station ) = @ARGV; +my ( $place, $input ) = @ARGV; + +if ( $input =~ s{ ^ (? address|poi|stop) : }{}x ) { + $input_type = $+{type}; +} my $status = Travel::Status::DE::VRR->new( date => $date, place => $place, - name => $station, + name => $input, time => $time, + type => $input_type, ); sub show_help { diff --git a/lib/Travel/Status/DE/VRR.pm b/lib/Travel/Status/DE/VRR.pm index 3a7375d..a108425 100644 --- a/lib/Travel/Status/DE/VRR.pm +++ b/lib/Travel/Status/DE/VRR.pm @@ -17,6 +17,13 @@ sub new { my $mech = WWW::Mechanize->new(); my @now = localtime( time() ); + if ( not( $opt{place} and $opt{name} ) ) { + confess('You need to specify a place and a name'); + } + if ( $opt{type} and not( $opt{type} ~~ [qw[stop address poi]] ) ) { + confess('type must be stop, address or poi'); + } + my $self = { post => { command => q{}, @@ -46,7 +53,7 @@ sub new { sessionID => '0', submitButton => 'anfordern', typeInfo_dm => 'invalid', - type_dm => 'stop', + type_dm => $opt{type} // 'stop', useProxFootSearch => '0', useRealtime => '1', }, @@ -170,10 +177,14 @@ Arguments: Name of the place/city -=item B => I +=item B => B
|B|B + +Type of the following I. B means "point of interest". Defaults to +B (stop/station name). + +=item B => I -Name of the stop to list departures for. In future versions, this may also -support street or poi ("point of interest") names +address / poi / stop name to list departures for. =back -- cgit v1.2.3