summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2014-01-10 21:56:26 +0100
committerDaniel Friesel <derf@finalrewind.org>2014-01-10 21:56:26 +0100
commit57c364c44bc177569ded124c4b710f052942e943 (patch)
treeba43997f1332a57c8524079d79555a5b59c17561 /bin
parenta7491a345f71b7805d2141424e505408e46e1297 (diff)
db-iris: Add -c / --class option, rename -m/--mot to -T/--type
Diffstat (limited to 'bin')
-rwxr-xr-xbin/db-iris73
1 files changed, 44 insertions, 29 deletions
diff --git a/bin/db-iris b/bin/db-iris
index 467f211..06abdc5 100755
--- a/bin/db-iris
+++ b/bin/db-iris
@@ -12,6 +12,7 @@ use DateTime::Format::Strptime;
use Encode qw(decode);
use Getopt::Long qw(:config no_ignore_case);
use List::Util qw(first max);
+use List::MoreUtils qw(none);
use Travel::Status::DE::IRIS;
use Travel::Status::DE::IRIS::Stations;
@@ -20,7 +21,7 @@ my $datetime = DateTime->now( time_zone => 'Europe/Berlin' );
my $arrivals = 0;
my $filter_via;
my $show_full_route = 0;
-my ( @grep_traintypes, @grep_platforms );
+my ( @grep_class, @grep_type, @grep_platform );
my @output;
@@ -29,14 +30,15 @@ binmode( STDOUT, ':encoding(utf-8)' );
@ARGV = map { decode( 'UTF-8', $_ ) } @ARGV;
GetOptions(
- 'd|date=s' => \$date,
- 'f|full-route' => \$show_full_route,
- 'h|help' => sub { show_help(0) },
- 'm|mot=s' => \@grep_traintypes,
- 'p|platforms=s@' => \@grep_platforms,
- 't|time=s' => \$time,
- 'v|via=s' => \$filter_via,
- 'V|version' => \&show_version,
+ 'c|class=s@' => \@grep_class,
+ 'd|date=s' => \$date,
+ 'f|full-route' => \$show_full_route,
+ 'h|help' => sub { show_help(0) },
+ 'p|platform=s@' => \@grep_platform,
+ 't|time=s' => \$time,
+ 'T|type=s' => \@grep_type,
+ 'v|via=s' => \$filter_via,
+ 'V|version' => \&show_version,
) or show_help(1);
@@ -45,8 +47,9 @@ if ( @ARGV != 1 ) {
}
# opt=foo,bar support
-@grep_platforms = split( qr{,}, join( q{,}, @grep_platforms ) );
-@grep_traintypes = split( qr{,}, join( q{,}, @grep_traintypes ) );
+@grep_class = split( qr{,}, join( q{,}, @grep_class ) );
+@grep_platform = split( qr{,}, join( q{,}, @grep_platform ) );
+@grep_type = split( qr{,}, join( q{,}, @grep_type ) );
my ($station) = @ARGV;
$station = get_station($station);
@@ -149,8 +152,9 @@ for my $d ( $status->results() ) {
@via = $d->route_post;
if ( ( $filter_via and not( first { $_ =~ m{$filter_via}io } @via ) )
- or ( @grep_platforms and not( $d->platform ~~ \@grep_platforms ) )
- or ( @grep_traintypes and not( $d->type ~~ \@grep_traintypes ) ) )
+ or ( @grep_class and none { $_ ~~ \@grep_class } $d->classes )
+ or ( @grep_platform and not( $d->platform ~~ \@grep_platform ) )
+ or ( @grep_type and not( $d->type ~~ \@grep_type ) ) )
{
next;
}
@@ -203,6 +207,18 @@ the big departure screens installed at most main stations.
=over
+=item B<-c>, B<--class> I<classlist>
+
+Comma-separated list of train classes to filter by. Using this option
+causes all trains whose class is not in I<classlist> to be discarded.
+
+Valid classes are:
+
+ D Non-DB train. Usually local transport
+ F "Fernverkehr", long-distance transport
+ N "Nahverkehr", local and regional transport
+ S S-Bahn, rather slow local/regional transport
+
=item B<-d>, B<--date> I<date>
Request results for I<date> in dd.mm. oder dd.mm.YYYY format. Note that only
@@ -213,13 +229,23 @@ IRIS backend, larger ones will not return data.
Show the entire route of all trains (both before and after I<station>).
-=item B<-m>, B<--mot> I<motlist>
+=item B<-p>, B<--platforms> I<platforms>
+
+Only show arrivals/departures at I<platforms> (comma-separated list, option may
+be repeated).
+
+=item B<-t>, B<--time> I<time>
+
+Request results for I<time> in HH:MM oder HH:MM:SS format. Note that only
+slight deviations (a few hours max) from the current time are supported by the
+IRIS backend, larger ones will not return data.
+
+=item B<-T>, B<--type> I<typelist>
-Comma-separated list of modes of transport to filter by. Using this option
-causes all arrivals/departures whose mot not in I<motlist> to be discarded.
+Comma-separated list of train types to filter by. Using this option
+causes all arrivals/departures whose type is not in I<typelist> to be discarded.
-The mot is based on the train type and accepts a superset of the following
-values:
+The following valid values are known:
local transport:
IR Inter-Regio (rare in Germany, mostly used in Switzerland)
@@ -240,17 +266,6 @@ include "ABR" / "NWB" (private trains included in the local transport tariff
system), "HKX" (private train not included in any DB tariffs) and
"SBB" (unknown swiss train class)
-=item B<-p>, B<--platforms> I<platforms>
-
-Only show arrivals/departures at I<platforms> (comma-separated list, option may
-be repeated).
-
-=item B<-t>, B<--time> I<time>
-
-Request results for I<time> in HH:MM oder HH:MM:SS format. Note that only
-slight deviations (a few hours max) from the current time are supported by the
-IRIS backend, larger ones will not return data.
-
=item B<-v>, B<--via> I<viastation>
Only show trains serving I<viastation> after I<station>.