Loading bin/db-iris +15 −5 Original line number Diff line number Diff line Loading @@ -108,18 +108,18 @@ sub display_result { die("Nothing to show\n"); } for my $i ( 0 .. 4 ) { for my $i ( 0 .. 5 ) { $line_length[$i] = max map { length( $_->[$i] ) } @lines; } for my $line (@lines) { printf( join( q{ }, ( map { "%-${_}s" } @line_length ) ) . "\n", @{$line}[ 0 .. 4 ] @{$line}[ 0 .. 5 ] ); if ($show_full_route) { print "\n" . $line->[5] . "\n\n\n"; print "\n" . $line->[6] . "\n\n\n"; } } Loading @@ -145,12 +145,22 @@ for my $d ( $status->results() ) { next; } my $delay = q{}; if ( $d->delay ) { $delay = ' +' . $d->delay; } push( @output, [ $d->time, $d->train, $d->time . $delay, $d->train, $arrivals ? q{} : join( q{ }, $d->route_interesting ), $d->route_end, $d->platform, join( "\n", $d->route ), $d->route_end, $d->platform, join( ' -- ', $d->info ), join( "\n", $d->route ), ] ); } Loading lib/Travel/Status/DE/IRIS.pm +16 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,9 @@ sub get_realtime { my $e_tl = ( $s->findnodes('./tl') )[0]; my $e_ar = ( $s->findnodes('./ar') )[0]; my $e_dp = ( $s->findnodes('./dp') )[0]; my @e_ms = $s->findnodes('.//m'); my %messages; my $result = first { $_->raw_id eq $id } $self->results; Loading @@ -159,6 +162,19 @@ sub get_realtime { $result->add_realtime($s); for my $e_m (@e_ms) { my $type = $e_m->getAttribute('t'); my $value = $e_m->getAttribute('c'); my $id = $e_m->getAttribute('id'); my $ts = $e_m->getAttribute('ts'); if ($value) { $messages{$id} = [ $ts, $type, $value ]; } } $result->add_messages(%messages); if ($e_tl) { $result->add_tl( class => $e_tl->getAttribute('f'), # D N S F Loading lib/Travel/Status/DE/IRIS/Result.pm +74 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package Travel::Status::DE::IRIS::Result; use strict; use warnings; use 5.010; use utf8; no if $] >= 5.018, warnings => "experimental::smartmatch"; Loading @@ -10,9 +11,64 @@ use parent 'Class::Accessor'; use Carp qw(cluck); use DateTime; use DateTime::Format::Strptime; use List::MoreUtils qw(uniq); our $VERSION = '0.00'; sub translate_msg { my ( $self, $msg ) = @_; my %translation = ( 2 => 'Polizeiliche Ermittlung', 3 => 'Feuerwehreinsatz neben der Strecke', 5 => 'Ärztliche Versorgung eines Fahrgastes', 7 => 'Personen im Gleis', 8 => 'Notarzteinsatz am Gleis', 10 => 'Ausgebrochene Tiere im Gleis', 11 => 'Unwetter', 15 => 'Beeinträchtigung durch Vandalismus', 16 => 'Entschärfung einer Fliegerbombe', 17 => 'Beschädigung einer Brücke', 18 => 'Umgestürzter Baum im Gleis', 19 => 'Unfall an einem Bahnübergang', 20 => 'Tiere im Gleis', 21 => 'Warten auf weitere Reisende', 22 => 'Witterungsbedingte Störung', 23 => 'Feuerwehreinsatz auf Bahngelände', 24 => 'Verspätung aus dem Ausland', 25 => 'Warten auf verspätete Zugteile', 28 => 'Gegenstände im Gleis', 31 => 'Bauarbeiten', 32 => 'Verzögerung beim Ein-/Ausstieg', 33 => 'Oberleitungsstörung', 34 => 'Signalstörung', 35 => 'Streckensperrung', 36 => 'Technische Störung am Zug', 38 => 'Technische Störung an der Strecke', 39 => 'Anhängen von zusätzlichen Wagen', 40 => 'Stellwerksstörung/-ausfall', 41 => 'Störung an einem Bahnübergang', 42 => 'Außerplanmäßige Geschwindigkeitsbeschränkung', 43 => 'Verspätung eines vorausfahrenden Zuges', 44 => 'Warten auf einen entgegenkommenden Zug', 45 => 'Überholung durch anderen Zug', 46 => 'Warten auf freie Einfahrt', 47 => 'Verspätete Bereitstellung', 48 => 'Verspätung aus vorheriger Fahrt', 80 => 'Abweichende Wagenreihung', 83 => 'Fehlender Zugteil', 86 => 'Keine Reservierungsanzeige', 90 => 'Kein Bordrestaurant/Bordbistro', 91 => 'Keine Fahrradmitnahme', 92 => 'Rollstuhlgerechtes WC in einem Wagen ausgefallen', 93 => 'Kein rollstuhlgerechtes WC', 98 => 'Kein rollstuhlgerechter Wagen', 99 => 'Verzögerungen im Betriebsablauf', ); return $translation{$msg} // "?($msg)"; } Travel::Status::DE::IRIS::Result->mk_ro_accessors( qw(arrival date datetime delay departure line_no platform raw_id realtime_xml route_start route_end Loading Loading @@ -102,6 +158,12 @@ sub add_dp { } } sub add_messages { my ( $self, %messages ) = @_; $self->{messages} = \%messages; } sub add_realtime { my ( $self, $xmlobj ) = @_; Loading @@ -128,6 +190,17 @@ sub destination { return $self->route_end; } sub info { my ($self) = @_; my @messages = sort keys %{ $self->{messages} }; my @ids = uniq( map { $self->{messages}{$_}->[2] } @messages ); my @info = map { $self->translate_msg($_) } @ids; return @info; } sub line { my ($self) = @_; Loading Loading
bin/db-iris +15 −5 Original line number Diff line number Diff line Loading @@ -108,18 +108,18 @@ sub display_result { die("Nothing to show\n"); } for my $i ( 0 .. 4 ) { for my $i ( 0 .. 5 ) { $line_length[$i] = max map { length( $_->[$i] ) } @lines; } for my $line (@lines) { printf( join( q{ }, ( map { "%-${_}s" } @line_length ) ) . "\n", @{$line}[ 0 .. 4 ] @{$line}[ 0 .. 5 ] ); if ($show_full_route) { print "\n" . $line->[5] . "\n\n\n"; print "\n" . $line->[6] . "\n\n\n"; } } Loading @@ -145,12 +145,22 @@ for my $d ( $status->results() ) { next; } my $delay = q{}; if ( $d->delay ) { $delay = ' +' . $d->delay; } push( @output, [ $d->time, $d->train, $d->time . $delay, $d->train, $arrivals ? q{} : join( q{ }, $d->route_interesting ), $d->route_end, $d->platform, join( "\n", $d->route ), $d->route_end, $d->platform, join( ' -- ', $d->info ), join( "\n", $d->route ), ] ); } Loading
lib/Travel/Status/DE/IRIS.pm +16 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,9 @@ sub get_realtime { my $e_tl = ( $s->findnodes('./tl') )[0]; my $e_ar = ( $s->findnodes('./ar') )[0]; my $e_dp = ( $s->findnodes('./dp') )[0]; my @e_ms = $s->findnodes('.//m'); my %messages; my $result = first { $_->raw_id eq $id } $self->results; Loading @@ -159,6 +162,19 @@ sub get_realtime { $result->add_realtime($s); for my $e_m (@e_ms) { my $type = $e_m->getAttribute('t'); my $value = $e_m->getAttribute('c'); my $id = $e_m->getAttribute('id'); my $ts = $e_m->getAttribute('ts'); if ($value) { $messages{$id} = [ $ts, $type, $value ]; } } $result->add_messages(%messages); if ($e_tl) { $result->add_tl( class => $e_tl->getAttribute('f'), # D N S F Loading
lib/Travel/Status/DE/IRIS/Result.pm +74 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package Travel::Status::DE::IRIS::Result; use strict; use warnings; use 5.010; use utf8; no if $] >= 5.018, warnings => "experimental::smartmatch"; Loading @@ -10,9 +11,64 @@ use parent 'Class::Accessor'; use Carp qw(cluck); use DateTime; use DateTime::Format::Strptime; use List::MoreUtils qw(uniq); our $VERSION = '0.00'; sub translate_msg { my ( $self, $msg ) = @_; my %translation = ( 2 => 'Polizeiliche Ermittlung', 3 => 'Feuerwehreinsatz neben der Strecke', 5 => 'Ärztliche Versorgung eines Fahrgastes', 7 => 'Personen im Gleis', 8 => 'Notarzteinsatz am Gleis', 10 => 'Ausgebrochene Tiere im Gleis', 11 => 'Unwetter', 15 => 'Beeinträchtigung durch Vandalismus', 16 => 'Entschärfung einer Fliegerbombe', 17 => 'Beschädigung einer Brücke', 18 => 'Umgestürzter Baum im Gleis', 19 => 'Unfall an einem Bahnübergang', 20 => 'Tiere im Gleis', 21 => 'Warten auf weitere Reisende', 22 => 'Witterungsbedingte Störung', 23 => 'Feuerwehreinsatz auf Bahngelände', 24 => 'Verspätung aus dem Ausland', 25 => 'Warten auf verspätete Zugteile', 28 => 'Gegenstände im Gleis', 31 => 'Bauarbeiten', 32 => 'Verzögerung beim Ein-/Ausstieg', 33 => 'Oberleitungsstörung', 34 => 'Signalstörung', 35 => 'Streckensperrung', 36 => 'Technische Störung am Zug', 38 => 'Technische Störung an der Strecke', 39 => 'Anhängen von zusätzlichen Wagen', 40 => 'Stellwerksstörung/-ausfall', 41 => 'Störung an einem Bahnübergang', 42 => 'Außerplanmäßige Geschwindigkeitsbeschränkung', 43 => 'Verspätung eines vorausfahrenden Zuges', 44 => 'Warten auf einen entgegenkommenden Zug', 45 => 'Überholung durch anderen Zug', 46 => 'Warten auf freie Einfahrt', 47 => 'Verspätete Bereitstellung', 48 => 'Verspätung aus vorheriger Fahrt', 80 => 'Abweichende Wagenreihung', 83 => 'Fehlender Zugteil', 86 => 'Keine Reservierungsanzeige', 90 => 'Kein Bordrestaurant/Bordbistro', 91 => 'Keine Fahrradmitnahme', 92 => 'Rollstuhlgerechtes WC in einem Wagen ausgefallen', 93 => 'Kein rollstuhlgerechtes WC', 98 => 'Kein rollstuhlgerechter Wagen', 99 => 'Verzögerungen im Betriebsablauf', ); return $translation{$msg} // "?($msg)"; } Travel::Status::DE::IRIS::Result->mk_ro_accessors( qw(arrival date datetime delay departure line_no platform raw_id realtime_xml route_start route_end Loading Loading @@ -102,6 +158,12 @@ sub add_dp { } } sub add_messages { my ( $self, %messages ) = @_; $self->{messages} = \%messages; } sub add_realtime { my ( $self, $xmlobj ) = @_; Loading @@ -128,6 +190,17 @@ sub destination { return $self->route_end; } sub info { my ($self) = @_; my @messages = sort keys %{ $self->{messages} }; my @ids = uniq( map { $self->{messages}{$_}->[2] } @messages ); my @info = map { $self->translate_msg($_) } @ids; return @info; } sub line { my ($self) = @_; Loading