diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2024-09-22 18:59:54 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2024-09-22 18:59:54 +0200 |
commit | c8d2e1297dcd160dae4451e53889d920e8fb9804 (patch) | |
tree | c90be1bfe9e3696a9d85e430366a7ceffde1fe26 | |
parent | d999862641bf5de667ebc0d6cc92e4a7bf027cc8 (diff) |
add -j / --with-jid option
-rwxr-xr-x | bin/efa-m | 17 | ||||
-rw-r--r-- | lib/Travel/Status/DE/EFA.pm | 3 | ||||
-rw-r--r-- | lib/Travel/Status/DE/EFA/Departure.pm | 16 |
3 files changed, 23 insertions, 13 deletions
@@ -17,7 +17,7 @@ my $service = 'VRR'; my $efa_url; my $efa_encoding; my ( $date, $time, $input_type, $list_lines, $offset, $relative_times ); -my ( $full_routes, $filter_via ); +my ( $full_routes, $filter_via, $show_jid ); my ( $timeout, $developer_mode ); my ( @grep_lines, @grep_platforms, @grep_mots ); my ( %edata, @edata_pre ); @@ -31,6 +31,7 @@ GetOptions( 'd|date=s' => \$date, 'D|discover' => \$discover, 'h|help' => sub { show_help(0) }, + 'j|with-jid' => \$show_jid, 'l|line=s@' => \@grep_lines, 'L|linelist' => \$list_lines, 'list' => \$list_services, @@ -224,9 +225,9 @@ sub display_result { for my $line (@lines) { - if ( $edata{messages} and $line->[5] and @{ $line->[5] } ) { + if ( $edata{messages} and $line->[5]->hints ) { print "\n"; - for my $hint ( @{ $line->[5] } ) { + for my $hint ( $line->[5]->hints ) { $hint =~ tr{\n\x0d}{ }s; chomp $hint; say "# ${hint}"; @@ -295,7 +296,7 @@ sub show_results { say $stop->full_name; } } - elsif ($efa->stop_name) { + elsif ( $efa->stop_name ) { say $efa->stop_name; } @@ -350,8 +351,12 @@ sub show_results { $line = $d->train_type . ' ' . $d->train_no; } - @output_line - = ( $dtime, $platform, $line, q{}, $d->destination, [ $d->hints ] ); + @output_line = ( $dtime, $platform, $line, q{}, $d->destination, $d ); + + if ($show_jid) { + $output_line[2] + .= sprintf( ' %s@%d@%d', $d->stateless, $d->stop_id, $d->key ); + } if ( $edata{route} ) { $output_line[3] diff --git a/lib/Travel/Status/DE/EFA.pm b/lib/Travel/Status/DE/EFA.pm index 1c3bcfc..e2d7e18 100644 --- a/lib/Travel/Status/DE/EFA.pm +++ b/lib/Travel/Status/DE/EFA.pm @@ -510,6 +510,9 @@ sub parse_departure { platform => $departure->{platform}, platform_name => $departure->{platformName}, platform_type => $departure->{pointType}, + key => $departure->{servingLine}{key}, + stateless => $departure->{servingLine}{stateless}, + stop_id => $departure->{stopID}, line => $departure->{servingLine}{symbol}, train_type => $departure->{servingLine}{trainType}, train_name => $departure->{servingLine}{trainName}, diff --git a/lib/Travel/Status/DE/EFA/Departure.pm b/lib/Travel/Status/DE/EFA/Departure.pm index 802f84e..7f10e53 100644 --- a/lib/Travel/Status/DE/EFA/Departure.pm +++ b/lib/Travel/Status/DE/EFA/Departure.pm @@ -9,9 +9,9 @@ use parent 'Class::Accessor'; our $VERSION = '2.02'; Travel::Status::DE::EFA::Departure->mk_ro_accessors( - qw(countdown datetime delay destination is_cancelled key line lineref - mot occupancy operator origin platform platform_db platform_name - rt_datetime sched_datetime train_type train_name train_no type) + qw(countdown datetime delay destination is_cancelled key line lineref mot + occupancy operator origin platform platform_db platform_name rt_datetime + sched_datetime stateless stop_id train_type train_name train_no type) ); my @mot_mapping = qw{ @@ -189,10 +189,8 @@ may be recent news related to the line's schedule. =item $departure->key -Unknown. Unlike the name may suggest, this is not a unique key / UUID for a -departure: On the same day, different lines departing at the same station -may have the same key. It might, however, be unique when combined with the -B<line> information. +Key of this departure of the corresponding line. Unique for a given day when +combined with B<stateless>. =item $departure->line @@ -262,6 +260,10 @@ realtime data. Undef if unknown / unavailable. DateTime(3pm) object holding the scheduled departure date and time. +=item $departure->stateless + +Unique line identifier. + =item $departure->train_type Train type, e.g. "ICE". Typically only defined for long-distance trains. |