diff options
Diffstat (limited to 'share/find-missing')
-rwxr-xr-x | share/find-missing | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/share/find-missing b/share/find-missing new file mode 100755 index 0000000..618fc78 --- /dev/null +++ b/share/find-missing @@ -0,0 +1,62 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use 5.010; + +use Cache::File; +use List::Util qw(uniq); +use Travel::Status::DE::IRIS; +use Travel::Status::DE::IRIS::Stations; + +my ($station) = @ARGV; + +my $cache_path = $ENV{XDG_CACHE_HOME} // "$ENV{HOME}/.cache"; +my $schedule_cache_path = "${cache_path}/db-iris-schedule"; +my $realtime_cache_path = "${cache_path}/db-iris-realtime"; +my ( $schedule_cache, $realtime_cache ); + +eval { + use Cache::File; + $schedule_cache = Cache::File->new( + cache_root => $schedule_cache_path, + default_expires => '6 hours', + lock_level => Cache::File::LOCK_LOCAL(), + ); + $realtime_cache = Cache::File->new( + cache_root => $realtime_cache_path, + default_expires => '180 seconds', + lock_level => Cache::File::LOCK_LOCAL(), + ); +}; +if ($@) { + $schedule_cache = undef; + $realtime_cache = undef; +} + +my $status = Travel::Status::DE::IRIS->new( + station => $station, + main_cache => $schedule_cache, + realtime_cache => $realtime_cache, + with_related => 1, +); + +my @missing; + +for my $result ( $status->results ) { + if ( $result->type eq 'Bus' ) { + next; + } + for my $name ( $result->route_pre, $result->route_post ) { + my @matches + = Travel::Status::DE::IRIS::Stations::get_station_by_name($name); + if ( @matches != 1 ) { + push( @missing, $name ); + } + elsif ( $matches[0][1] ne $name ) { + push( @missing, $name ); + } + } +} + +say join( "\n", uniq @missing ); |