diff options
author | Daniel Friesel <derf@finalrewind.org> | 2015-09-09 22:57:17 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2015-09-09 22:57:17 +0200 |
commit | 556f259834d75cad6a2feeb1c5106204d5921a28 (patch) | |
tree | 70a387f46eab0bc1bdde95b3425b807c4e19295c /bin | |
parent | 2e03d069b24a5bf27fb035386594c904fa7ff496 (diff) |
Squashed commit of the following:
commit 73bb123b4a90dab9a08fa38555f0cd4afcdf3740
Author: Daniel Friesel <derf@finalrewind.org>
Date: Wed Sep 9 21:08:51 2015 +0200
remove outdated and now unused tests
commit 3f35ba0001aaff49a7b10acfaa83303b354c162a
Author: Daniel Friesel <derf@finalrewind.org>
Date: Wed Sep 9 21:07:34 2015 +0200
documentation for ::DeutscheBahn
commit f4c66605dcbffedbb558ca66c5032e5252011244
Author: Daniel Friesel <derf@finalrewind.org>
Date: Wed Sep 9 21:03:31 2015 +0200
re-add deutschebahn module
commit 41b505bc98d4b25a7ca15465fe0bbee6c3708e9e
Author: Daniel Friesel <derf@finalrewind.org>
Date: Tue Sep 8 18:31:22 2015 +0200
more documentation updates
commit edf7b5fbd8175b4b53735859b2a961fe6ab8cf49
Author: Daniel Friesel <derf@finalrewind.org>
Date: Sun Sep 6 18:48:09 2015 +0200
improve delay and delayReason handling
commit c4e9121a181de9d800226ab6fccca8abb8b14705
Author: Daniel Friesel <derf@finalrewind.org>
Date: Sun Sep 6 18:22:23 2015 +0200
HAFAS.pm: Code cleanup
commit edae36b16ecc5e1fa0adbece954bb348ce37e9a0
Author: Daniel Friesel <derf@finalrewind.org>
Date: Sun Sep 6 13:31:46 2015 +0200
add devmode option
commit f7a60ae80e59a129aae77b276925f80d7430c259
Author: Daniel Friesel <derf@finalrewind.org>
Date: Sun Sep 6 01:18:28 2015 +0200
support for platform changes
commit 6876d56e6dd22065c342fe1fbf42f9fcf7f3d457
Author: Daniel Friesel <derf@finalrewind.org>
Date: Thu Aug 20 20:01:24 2015 +0200
documentation: DeutscheBahn -> HAFAS
commit 73706f0150bd0fb9c11d2b8be89204bfd4b03235
Author: Daniel Friesel <derf@finalrewind.org>
Date: Thu Aug 20 19:54:12 2015 +0200
routes and route_info are not supported here
commit af8a541fd1f03131a9cd39a5548188dbc09b266a
Author: Daniel Friesel <derf@finalrewind.org>
Date: Thu Aug 20 19:50:35 2015 +0200
documentationfoo
commit ff3f2298c7be86bb7b672359f54c39588706673e
Author: Daniel Friesel <derf@finalrewind.org>
Date: Thu Aug 20 19:14:30 2015 +0200
rename db-ris to hafas-m
commit 754fda9974e20ee630a3a3386d6ff7c42468ca46
Author: Daniel Friesel <derf@finalrewind.org>
Date: Thu Aug 20 17:18:12 2015 +0200
add support for cancelled trains and delay reasons
commit f860183613ee7818a2f448e8c40bbbdb95c6180a
Author: Daniel Friesel <derf@finalrewind.org>
Date: Wed Aug 19 15:19:54 2015 +0200
add info message support
commit 17eda1d00cdbf98a04dbbe7d3ff89c6833af016d
Author: Daniel Friesel <derf@finalrewind.org>
Date: Sun Aug 16 18:00:05 2015 +0200
initial hafas api support
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/hafas-m (renamed from bin/db-ris) | 104 |
1 files changed, 44 insertions, 60 deletions
@@ -7,17 +7,16 @@ our $VERSION = '1.05'; use Getopt::Long qw(:config no_ignore_case); use List::Util qw(first max); -use Travel::Status::DE::DeutscheBahn; +use Travel::Status::DE::HAFAS; my %train_type; my ( $date, $time ); -my $arrivals = 0; -my $filter_via; -my $ignore_late = 0; -my $show_full_route = 0; -my $types = q{}; +my $arrivals = 0; +my $ignore_late = 0; +my $types = q{}; my $language; +my $developer_mode; my @output; @@ -26,14 +25,13 @@ binmode( STDOUT, ':encoding(utf-8)' ); GetOptions( 'a|arrivals' => \$arrivals, 'd|date=s' => \$date, - 'f|full-route' => \$show_full_route, 'h|help' => sub { show_help(0) }, 'l|lang=s' => \$language, 'L|ignore-late' => \$ignore_late, 'm|mot=s' => \$types, 't|time=s' => \$time, - 'v|via=s' => \$filter_via, 'V|version' => \&show_version, + 'devmode' => \$developer_mode, ) or show_help(1); @@ -46,27 +44,28 @@ for my $type ( split( qr{,}, $types ) ) { } } -my $status = Travel::Status::DE::DeutscheBahn->new( - date => $date, - language => $language, - mot => \%train_type, - station => shift || show_help(1), - time => $time, - mode => $arrivals ? 'arr' : 'dep', +my $status = Travel::Status::DE::HAFAS->new( + date => $date, + language => $language, + mot => \%train_type, + station => shift || show_help(1), + time => $time, + mode => $arrivals ? 'arr' : 'dep', + developer_mode => $developer_mode, ); sub show_help { my ($code) = @_; - print 'Usage: db-ris [-d <dd.mm.yyyy>] [-m <motlist>] [-t <time>] ' - . "[-v <via>] <station>\n" - . "See also: man db-ris\n"; + print 'Usage: hafas-m [-d <dd.mm.yyyy>] [-m <motlist>] [-t <time>] ' + . "<station>\n" + . "See also: man hafas-m\n"; exit $code; } sub show_version { - say "db-ris version ${VERSION}"; + say "hafas-m version ${VERSION}"; exit 0; } @@ -80,23 +79,28 @@ sub display_result { die("Nothing to show\n"); } - for my $i ( 0 .. 5 ) { + for my $i ( 0 .. 4 ) { $line_length[$i] = max map { length( $_->[$i] ) } @lines; } for my $line (@lines) { - printf( - join( q{ }, ( map { "%-${_}s" } @line_length ) ) . "\n", - @{$line}[ 0 .. 5 ] - ); - if ( $line->[7] ) { - print " " . $line->[7] . "\n"; + my $d = $line->[6]; + if ( $d->messages ) { + print "\n"; + for my $msg ( $d->messages ) { + printf( "# %s\n", $msg ); + } } - if ($show_full_route) { - print "\n" . $line->[6] . "\n\n\n"; + printf( + join( q{ }, ( map { "%-${_}s" } @line_length ) ), + @{$line}[ 0 .. 4 ] + ); + if ( $line->[5] ) { + print $line->[5]; } + print "\n"; } return; @@ -109,14 +113,6 @@ if ( my $err = $status->errstr ) { for my $d ( $status->results() ) { - my @via; - - @via = $d->route; - - if ( $filter_via and not( first { $_ =~ m{$filter_via}io } @via ) ) { - next; - } - if ( $ignore_late and $d->delay ) { next; } @@ -125,14 +121,14 @@ for my $d ( $status->results() ) { @output, [ $d->time, + $d->is_cancelled + ? 'CANCELED' + : ( $d->delay ? '+' . $d->delay : q{} ), $d->train, - $arrivals ? q{} : join( q{ }, $d->route_interesting ), $d->route_end, - $d->platform, + ( $d->platform // q{} ) . ( $d->is_changed_platform ? ' !' : q{} ), $d->info, - join( "\n", - map { sprintf( '%-5s %s', @{$_} ) } $d->route_timetable ), - $d->route_info, + $d ] ); } @@ -143,12 +139,12 @@ __END__ =head1 NAME -db-ris - Interface to the DeutscheBahn online departure monitor +hafas-m - Interface to the DeutscheBahn/HAFAS online departure monitor =head1 SYNOPSIS -B<db-ris> [B<-a>] [B<-d> I<date>] [B<-L>] [B<-m> I<motlist>] [B<-t> I<time>] -[B<-v> I<via>] I<station> +B<hafas-m> [B<-a>] [B<-d> I<date>] [B<-L>] [B<-m> I<motlist>] [B<-t> I<time>] +I<station> =head1 VERSION @@ -156,8 +152,8 @@ version 1.05 =head1 DESCRIPTION -db-ris is an interface to the DeutscheBahn departure monitor -available at L<http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn>. +hafas-m is an interface to HAFAS-based departure monitors, for instance the +one available at L<http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn>. It requests all departures at I<station> (optionally filtered by date, time, route and means of transport) and lists them on stdout, similar to the big @@ -178,10 +174,6 @@ I<station>, not I<station> and end. Date to list departures for. Default: today. -=item B<-f>, B<--full-route> - -Display complete routes (including arrival times) of all trains. - =item B<-l>, B<--lang> B<d>|B<e>|B<i>|B<n> Set language used for additional information. Supports B<d>eutsch (default), @@ -215,13 +207,6 @@ only want to see S-Bahn and U-Bahn departures, you'd have to use C<< -m Time to list departures for. Default: now. -=item B<-v>, B<--via> I<regex> - -Only display trains whose route (all stations between the current stop and the -destination) matches the perl regular expression I<regex>. The match is not -case-sensitive. Use '^regex$' to match a full string, but be aware that this -may not work as expected. - =item B<-V>, B<--version> Show version information. @@ -250,12 +235,11 @@ None. =head1 BUGS AND LIMITATIONS -There are a few character encoding problems (most notably, B<--via> does not -understand UTF-8 umlauts). +Unknown. =head1 AUTHOR -Copyright (C) 2011 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> +Copyright (C) 2015 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> =head1 LICENSE |