Commit 7e8d766d authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

add --mot and --platforms option

parent d6b324c6
Loading
Loading
Loading
Loading
+54 −11
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@ use strict;
use warnings;
use 5.018;

no if $] >= 5.018, warnings => 'experimental::smartmatch';

our $VERSION = '0.00';

use DateTime;
@@ -18,15 +20,20 @@ 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 @output;

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,
@@ -37,10 +44,11 @@ if ( @ARGV != 1 ) {
	show_help(1);
}

my ($station) = @ARGV;
# opt=foo,bar support
@grep_platforms  = split( qr{,}, join( q{,}, @grep_platforms ) );
@grep_traintypes = split( qr{,}, join( q{,}, @grep_traintypes ) );

$filter_via = decode( 'UTF-8', $filter_via );
$station    = decode( 'UTF-8', $station );
my ($station) = @ARGV;
$station = get_station($station);

if ($date) {
@@ -140,7 +148,10 @@ for my $d ( $status->results() ) {

	@via = $d->route_post;

	if ( $filter_via and not( first { $_ =~ m{$filter_via}io } @via ) ) {
	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 ) ) )
	{
		next;
	}

@@ -202,6 +213,38 @@ 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>

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.

The mot is based on the train type and accepts a superset of the following
values:

    local transport:
    IR   Inter-Regio (rare in Germany, mostly used in Switzerland)
    IRE  Inter-Regio Express (rare)
    RB   Regionalbahn (slower than RE)
    RE   Regional-Express
    S    S-Bahn

    regional/interregional transport:
    D    "Schnellzug" (generic fast train, rare)
    EC   Eurocity
    IC   Intercity
    ICE  Intercity-Express
    THA  Thalys

Depending on the city and country, other types may be used as well. Examples
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