diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2022-10-29 15:25:31 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2022-10-29 15:25:31 +0200 | 
| commit | 148cf58c871ae28cfe3b2bcd806375f43f7791e7 (patch) | |
| tree | 43e39ea2b595c448babbec65d5f4533fb56b3a9c | |
| parent | daa8cc5a72bd10d732912595bf0ca2ad3bf167c4 (diff) | |
Use HAFAS utilization directly
| -rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 35 | ||||
| -rw-r--r-- | lib/DBInfoscreen/Helper/HAFAS.pm | 1 | ||||
| -rw-r--r-- | lib/DBInfoscreen/Helper/Marudor.pm | 54 | ||||
| -rw-r--r-- | templates/about.html.ep | 1 | 
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/> | 
