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/db-ris | |
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/db-ris')
-rwxr-xr-x | bin/db-ris | 262 |
1 files changed, 0 insertions, 262 deletions
diff --git a/bin/db-ris b/bin/db-ris deleted file mode 100755 index 4c4fc33..0000000 --- a/bin/db-ris +++ /dev/null @@ -1,262 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; -use 5.010; - -our $VERSION = '1.05'; - -use Getopt::Long qw(:config no_ignore_case); -use List::Util qw(first max); -use Travel::Status::DE::DeutscheBahn; - -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 $language; - -my @output; - -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, - -) or show_help(1); - -for my $type ( split( qr{,}, $types ) ) { - if ( substr( $type, 0, 1 ) eq q{!} ) { - $train_type{ substr( $type, 1 ) } = 0; - } - else { - $train_type{$type} = 1; - } -} - -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', -); - -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"; - - exit $code; -} - -sub show_version { - say "db-ris version ${VERSION}"; - - exit 0; -} - -sub display_result { - my (@lines) = @_; - - my @line_length; - - if ( not @lines ) { - die("Nothing to show\n"); - } - - for my $i ( 0 .. 5 ) { - $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"; - } - - if ($show_full_route) { - print "\n" . $line->[6] . "\n\n\n"; - } - } - - return; -} - -if ( my $err = $status->errstr ) { - say STDERR "Request error: ${err}"; - exit 2; -} - -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; - } - - push( - @output, - [ - $d->time, - $d->train, - $arrivals ? q{} : join( q{ }, $d->route_interesting ), - $d->route_end, - $d->platform, - $d->info, - join( "\n", - map { sprintf( '%-5s %s', @{$_} ) } $d->route_timetable ), - $d->route_info, - ] - ); -} - -display_result(@output); - -__END__ - -=head1 NAME - -db-ris - Interface to the DeutscheBahn 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> - -=head1 VERSION - -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>. - -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 -departure screens installed at most main stations. - -=head1 OPTIONS - -=over - -=item B<-a>, B<--arrivals> - -Show arrivals instead of departures, including trains ending at the specified -station. Note that this causes the output to display the start instead of -the end station and B<-f> to list all stops between start end -I<station>, not I<station> and end. - -=item B<-d>, B<--date> I<dd>.I<mm>.I<yyyy> - -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), -B<e>nglish, B<i>talian and dutch (B<n>). - -=item B<-L>, B<--ignore-late> - -Do not display delayed trains. - -=item B<-m>, B<--mot> I<motlist> - -Comma-separated list of modes of transport to show/hide. Accepts the following -arguments: - - ice InterCity Express trains - ic_ec InterCity / EuroCity trains - d InterRegio and similar - nv "Nahverkehr", RegionalExpress and such - s S-Bahn - bus - ferry - u U-Bahn - tram - -You can prefix an argument with "!" to hide it. The default is C<< -ice,ic_ec,d,nv,s >>. Note that B<-m> does not replace the default, so if you -only want to see S-Bahn and U-Bahn departures, you'd have to use C<< -m -!ice,!ic_ec,!d,!nv,u >>. - -=item B<-t>, B<--time> I<hh>:I<mm> - -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. - -=back - -=head1 EXIT STATUS - -Zero unless things went wrong. - -=head1 CONFIGURATION - -None. - -=head1 DEPENDENCIES - -=over - -=item * Class::Accessor(3pm) - -=item * LWP::UserAgent(3pm) - -=item * XML::LibXML(3pm) - -=back - -=head1 BUGS AND LIMITATIONS - -There are a few character encoding problems (most notably, B<--via> does not -understand UTF-8 umlauts). - -=head1 AUTHOR - -Copyright (C) 2011 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> - -=head1 LICENSE - -This program is licensed under the same terms as Perl itself. |