diff options
-rwxr-xr-x | bin/dbris | 11 | ||||
-rw-r--r-- | lib/Travel/Routing/DE/DBRIS/Connection/Segment.pm | 16 |
2 files changed, 23 insertions, 4 deletions
@@ -220,6 +220,10 @@ for my $connection ( $ris->connections ) { elsif ( $segment->is_transfer ) { $header .= sprintf( ' %.1fkm', $segment->distance_m / 1e3 ); } + elsif ( $segment->is_walk ) { + + # not shown in header + } else { $header .= q{ ??}; } @@ -244,6 +248,12 @@ for my $connection ( $ris->connections ) { say $note; } } + elsif ( $segment->is_walk ) { + printf( "${output_bold}%s${output_reset} %dm (≈ %d min.)\n", + $segment->walk_name, $segment->distance_m, + $segment->duration->in_units('minutes') ); + next; + } elsif ( $segment->direction ) { printf( "${output_bold}%s${output_reset} → %s %s\n", $segment->train_mid, $segment->direction, @@ -252,6 +262,7 @@ for my $connection ( $ris->connections ) { else { printf( "${output_bold}%s${output_reset}\n", $segment->train_long ); } + printf( "%s ab %s\n", $segment->dep->strftime('%H:%M'), $segment->dep_name ); diff --git a/lib/Travel/Routing/DE/DBRIS/Connection/Segment.pm b/lib/Travel/Routing/DE/DBRIS/Connection/Segment.pm index f4d82c3..b0c4638 100644 --- a/lib/Travel/Routing/DE/DBRIS/Connection/Segment.pm +++ b/lib/Travel/Routing/DE/DBRIS/Connection/Segment.pm @@ -20,7 +20,7 @@ Travel::Routing::DE::DBRIS::Connection::Segment->mk_ro_accessors( sched_duration rt_duration duration duration_percent journey_id occupancy occupancy_first occupancy_second - is_transfer distance_m + is_transfer is_walk walk_name distance_m ) ); @@ -40,6 +40,7 @@ sub new { train_mid => $json->{verkehrsmittel}{mittelText}, train_long => $json->{verkehrsmittel}{langText}, direction => $json->{verkehrsmittel}{richtung}, + distance_m => $json->{distanz}, }; if ( my $ts = $json->{abfahrtsZeitpunkt} ) { @@ -58,14 +59,18 @@ sub new { } $ref->{arr} = $ref->{rt_arr} // $ref->{sched_arr}; - if ( my $d = $json->{abschnittsDauerInSeconds} ) { + # PUBLICTRANSPORT uses abschnittsDauerInSeconds; WALK uses abschnittsDauer + if ( my $d = $json->{abschnittsDauerInSeconds} // $json->{abschnittsDauer} ) + { $ref->{sched_duration} = DateTime::Duration->new( hours => int( $d / 3600 ), minutes => int( ( $d % 3600 ) / 60 ), seconds => $d % 60, ); } - if ( my $d = $json->{ezAbschnittsDauerInSeconds} ) { + if ( my $d = $json->{ezAbschnittsDauerInSeconds} + // $json->{ezAbschnittsDauer} ) + { $ref->{rt_duration} = DateTime::Duration->new( hours => int( $d / 3600 ), minutes => int( ( $d % 3600 ) / 60 ), @@ -104,11 +109,14 @@ sub new { ); } + if ( $json->{verkehrsmittel}{typ} eq 'WALK' ) { + $ref->{is_walk} = 1; + $ref->{walk_name} = $json->{verkehrsmittel}{name}; + } if ( $json->{verkehrsmittel}{typ} eq 'TRANSFER' ) { $ref->{is_transfer} = 1; $ref->{transfer_notes} = [ map { $_->{value} } @{ $json->{transferNotes} // [] } ]; - $ref->{distance_m} = $json->{distanz}; } bless( $ref, $obj ); |