summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/efa-m17
-rw-r--r--lib/Travel/Status/DE/EFA.pm3
-rw-r--r--lib/Travel/Status/DE/EFA/Departure.pm16
3 files changed, 23 insertions, 13 deletions
diff --git a/bin/efa-m b/bin/efa-m
index 4a11f13..de8c610 100755
--- a/bin/efa-m
+++ b/bin/efa-m
@@ -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.