summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2022-10-29 15:25:31 +0200
committerDaniel Friesel <derf@finalrewind.org>2022-10-29 15:25:31 +0200
commit148cf58c871ae28cfe3b2bcd806375f43f7791e7 (patch)
tree43e39ea2b595c448babbec65d5f4533fb56b3a9c
parentdaa8cc5a72bd10d732912595bf0ca2ad3bf167c4 (diff)
Use HAFAS utilization directly
-rw-r--r--lib/DBInfoscreen/Controller/Stationboard.pm35
-rw-r--r--lib/DBInfoscreen/Helper/HAFAS.pm1
-rw-r--r--lib/DBInfoscreen/Helper/Marudor.pm54
-rw-r--r--templates/about.html.ep1
4 files changed, 10 insertions, 81 deletions
diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm
index de1f5e5..5a8c44e 100644
--- a/lib/DBInfoscreen/Controller/Stationboard.pm
+++ b/lib/DBInfoscreen/Controller/Stationboard.pm
@@ -568,15 +568,12 @@ sub render_train {
$self->render_later;
my $wagonorder_req = Mojo::Promise->new;
- my $utilization_req = Mojo::Promise->new;
my $occupancy_req = Mojo::Promise->new;
my $stationinfo_req = Mojo::Promise->new;
my $route_req = Mojo::Promise->new;
- my @requests = (
- $wagonorder_req, $utilization_req, $occupancy_req,
- $stationinfo_req, $route_req
- );
+ my @requests
+ = ( $wagonorder_req, $occupancy_req, $stationinfo_req, $route_req );
if ( $departure->{wr_link} ) {
$self->wagonorder->is_available_p( $result, $departure->{wr_link} )
@@ -595,30 +592,9 @@ sub render_train {
return;
}
)->wait;
-
- # Looks like utilization data is only available for long-distance trains
- # – and the few regional trains which also have wagon order data (e.g.
- # around Stuttgart). Funky.
- $self->marudor->get_train_utilization( train => $result )->then(
- sub {
- my ( $first, $second ) = @_;
- $departure->{utilization} = [ $first, $second ];
- return;
- },
- sub {
- $departure->{utilization} = undef;
- return;
- }
- )->finally(
- sub {
- $utilization_req->resolve;
- return;
- }
- )->wait;
}
else {
$wagonorder_req->resolve;
- $utilization_req->resolve;
}
$self->marudor->get_efa_occupancy(
@@ -702,6 +678,13 @@ sub render_train {
$departure->{trip_id} = $journey->id;
+ if ( my $load = $route_ts->{$station_name}{load} ) {
+ if ( %{$load} ) {
+ $departure->{utilization}
+ = [ $load->{FIRST}, $load->{SECOND} ];
+ }
+ }
+
# If a train number changes on the way, IRIS routes are incomplete,
# whereas HAFAS data has all stops -> merge HAFAS stops into IRIS
# stops. This is a rare case, one point where it can be observed is
diff --git a/lib/DBInfoscreen/Helper/HAFAS.pm b/lib/DBInfoscreen/Helper/HAFAS.pm
index b02deea..2fb088a 100644
--- a/lib/DBInfoscreen/Helper/HAFAS.pm
+++ b/lib/DBInfoscreen/Helper/HAFAS.pm
@@ -362,6 +362,7 @@ sub get_route_timestamps_p {
rt_dep => $stop->{rt_dep},
arr_delay => $stop->{arr_delay},
dep_delay => $stop->{dep_delay},
+ load => $stop->{load},
isCancelled => (
( $stop->{arr_cancelled} or not $stop->{sched_arr} )
and
diff --git a/lib/DBInfoscreen/Helper/Marudor.pm b/lib/DBInfoscreen/Helper/Marudor.pm
index 15955a3..352829b 100644
--- a/lib/DBInfoscreen/Helper/Marudor.pm
+++ b/lib/DBInfoscreen/Helper/Marudor.pm
@@ -116,58 +116,4 @@ sub get_efa_occupancy {
return $promise;
}
-sub get_train_utilization {
- my ( $self, %opt ) = @_;
-
- my $promise = Mojo::Promise->new;
- my $train = $opt{train};
-
- if ( not $train->sched_departure ) {
- $promise->reject("train has no departure");
- return $promise;
- }
-
- my $train_no = $train->train_no;
- my $this_station = $train->station;
- my @route = $train->route_post;
- my $next_station;
- my $dep = $train->sched_departure->iso8601;
-
- if ( @route > 1 ) {
- $next_station = $route[1];
- }
- else {
- $next_station = $route[0];
- }
-
- if ( not $next_station ) {
- $promise->reject("train has no next_station");
- return $promise;
- }
-
- $this_station
- = url_escape( encode( 'utf-8', decode( 'iso-8859-15', $this_station ) ) );
- $next_station
- = url_escape( encode( 'utf-8', decode( 'iso-8859-15', $next_station ) ) );
-
- $self->get_json_p( $self->{realtime_cache},
-"https://bahn.expert/api/hafas/v2/auslastung/${this_station}/${next_station}/${train_no}/${dep}"
- )->then(
- sub {
- my ($utilization_json) = @_;
-
- $promise->resolve( $utilization_json->{first},
- $utilization_json->{second} );
- return;
- }
- )->catch(
- sub {
- $promise->reject;
- return;
- }
- )->wait;
-
- return $promise;
-}
-
1;
diff --git a/templates/about.html.ep b/templates/about.html.ep
index ce375d5..a965a26 100644
--- a/templates/about.html.ep
+++ b/templates/about.html.ep
@@ -35,7 +35,6 @@
v<%= $Travel::Status::DE::DBWagenreihung::VERSION %>
% }
<br/>
- • Zugauslastung Fernverkehr: DB HAFAS via <a href="https://docs.bahn.expert/">bahn.expert</a><br/>
• Zugauslastung Regionalverkehr: VRR EFA via <a href="https://github.com/derf/eva-to-efa-gw">eva-to-efa-gw</a><br/>
<br/>
Sie nutzt zusätzlich die folgenden Open Data-Ressourcen:<br/>