summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2015-09-09 22:57:17 +0200
committerDaniel Friesel <derf@finalrewind.org>2015-09-09 22:57:17 +0200
commit556f259834d75cad6a2feeb1c5106204d5921a28 (patch)
tree70a387f46eab0bc1bdde95b3425b807c4e19295c /bin
parent2e03d069b24a5bf27fb035386594c904fa7ff496 (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-xbin/hafas-m (renamed from bin/db-ris)104
1 files changed, 44 insertions, 60 deletions
diff --git a/bin/db-ris b/bin/hafas-m
index 4c4fc33..cc78d26 100755
--- a/bin/db-ris
+++ b/bin/hafas-m
@@ -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