Unverified Commit d0f6ffdb authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

add "meta" dict (referenced / paired stations)

parent 37c0aa5b
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@ use JSON;
my $json_str = read_file('share/stations.json');
my $stations = JSON->new->utf8->decode($json_str);

my $meta_str = read_file('share/meta.json');
my $meta     = JSON->new->utf8->decode($meta_str);

my $buf = <<'EOF';
package Travel::Status::DE::IRIS::Stations;

@@ -64,10 +67,28 @@ for my $station ( @{$stations} ) {
$buf .= <<'EOF';
);

# Automatically generated, see share/meta.json
my $meta = {
EOF

for my $eva (keys %{$meta}) {
	$buf .= sprintf("%s => [%s],\n",
		$eva,
		join(q{,}, @{$meta->{$eva}})
	);
}

$buf .= <<'EOF';
};

sub get_stations {
	return @stations;
}

sub get_meta {
	return $meta;
}

sub normalize {
	my ($val) = @_;

share/meta.json

0 → 100644
+632 −0
Original line number Diff line number Diff line
{
   "151011" : [
      401003
   ],
   "367072" : [
      901013
   ],
   "370051" : [
      8079126
   ],
   "371210" : [
      720841
   ],
   "373013" : [
      721084
   ],
   "377903" : [
      501001,
      8079125
   ],
   "378402" : [
      8003185
   ],
   "401003" : [
      151011
   ],
   "501001" : [
      377903,
      8079125
   ],
   "501004" : [
      721358
   ],
   "5500003" : [
      5500008,
      5500728
   ],
   "5500008" : [
      5500003
   ],
   "5500728" : [
      5500003
   ],
   "712896" : [
      716122
   ],
   "716122" : [
      712896
   ],
   "720841" : [
      371210
   ],
   "721084" : [
      373013
   ],
   "721245" : [
      8001009
   ],
   "721301" : [
      8002116
   ],
   "721358" : [
      501004
   ],
   "721401" : [
      8003187
   ],
   "721836" : [
      8079144
   ],
   "8000044" : [
      8098044
   ],
   "8000096" : [
      8098096
   ],
   "8000105" : [
      8098105
   ],
   "8000147" : [
      8098147
   ],
   "8000157" : [
      8070171
   ],
   "8000191" : [
      8079041,
      8089390
   ],
   "8000193" : [
      8098193
   ],
   "8000261" : [
      8098261,
      8098262,
      8098263
   ],
   "8000292" : [
      8013434
   ],
   "8000348" : [
      8098349
   ],
   "8000577" : [
      8079075
   ],
   "8000713" : [
      8070073
   ],
   "8001009" : [
      721245
   ],
   "8001091" : [
      8070026
   ],
   "8001138" : [
      8001152
   ],
   "8001152" : [
      8001138
   ],
   "8001903" : [
      8001904
   ],
   "8001904" : [
      8001903
   ],
   "8002059" : [
      8071169
   ],
   "8002116" : [
      721301
   ],
   "8002228" : [
      8071001
   ],
   "8002442" : [
      8007078
   ],
   "8002549" : [
      8098549
   ],
   "8002553" : [
      8098553
   ],
   "8002673" : [
      8082673
   ],
   "8002699" : [
      8072722
   ],
   "8002847" : [
      8079088
   ],
   "8003185" : [
      378402
   ],
   "8003187" : [
      721401
   ],
   "8003368" : [
      8073368
   ],
   "8003400" : [
      8073400
   ],
   "8003402" : [
      8003403,
      8003434
   ],
   "8003403" : [
      8003402,
      8003434
   ],
   "8003432" : [
      8073432
   ],
   "8003434" : [
      8003402,
      8003403
   ],
   "8004343" : [
      8074343
   ],
   "8005523" : [
      8070859
   ],
   "8005556" : [
      8075556
   ],
   "8006536" : [
      8079212
   ],
   "8007078" : [
      8002442
   ],
   "8010036" : [
      8089182
   ],
   "8010041" : [
      8089168
   ],
   "8010053" : [
      8089186
   ],
   "8010184" : [
      8071738,
      8089295
   ],
   "8010185" : [
      8017475
   ],
   "8010205" : [
      8098205
   ],
   "8010255" : [
      8089185
   ],
   "8010256" : [
      8017020,
      8070777
   ],
   "8010341" : [
      8089187
   ],
   "8010403" : [
      8089165
   ],
   "8010404" : [
      8089083
   ],
   "8010405" : [
      8089190
   ],
   "8010406" : [
      8089046
   ],
   "8011003" : [
      8089188
   ],
   "8011041" : [
      8089113
   ],
   "8011102" : [
      8089015
   ],
   "8011113" : [
      8089073
   ],
   "8011118" : [
      8089032
   ],
   "8011155" : [
      8089001
   ],
   "8011160" : [
      8089021,
      8098160
   ],
   "8011162" : [
      8089028
   ],
   "8011167" : [
      8089100
   ],
   "8011201" : [
      8089201
   ],
   "8011306" : [
      8089066
   ],
   "8011343" : [
      8089072
   ],
   "8011695" : [
      8080530
   ],
   "8011901" : [
      8089117
   ],
   "8012494" : [
      8017017
   ],
   "8012666" : [
      8089184
   ],
   "8013434" : [
      8000292
   ],
   "8013470" : [
      8089205
   ],
   "8013477" : [
      8089181
   ],
   "8013483" : [
      8089207
   ],
   "8013487" : [
      8089197
   ],
   "8017017" : [
      8012494
   ],
   "8017020" : [
      8010256,
      8070777
   ],
   "8017475" : [
      8010185
   ],
   "8070003" : [
      8070004
   ],
   "8070004" : [
      8070003
   ],
   "8070026" : [
      8001091
   ],
   "8070073" : [
      8000713
   ],
   "8070171" : [
      8000157
   ],
   "8070172" : [
      8071172,
      8072172
   ],
   "8070777" : [
      8010256,
      8017020
   ],
   "8070859" : [
      8005523
   ],
   "8071001" : [
      8002228
   ],
   "8071169" : [
      8002059
   ],
   "8071172" : [
      8070172,
      8072172
   ],
   "8071738" : [
      8010184,
      8089295
   ],
   "8072172" : [
      8070172,
      8071172
   ],
   "8072722" : [
      8002699
   ],
   "8073368" : [
      8003368
   ],
   "8073400" : [
      8003400
   ],
   "8073432" : [
      8003432
   ],
   "8074343" : [
      8004343
   ],
   "8075556" : [
      8005556
   ],
   "8079041" : [
      8000191,
      8089390
   ],
   "8079075" : [
      8000577
   ],
   "8079088" : [
      8002847
   ],
   "8079125" : [
      377903,
      501001
   ],
   "8079126" : [
      370051
   ],
   "8079144" : [
      721836
   ],
   "8079212" : [
      8006536
   ],
   "8080530" : [
      8011695
   ],
   "8082673" : [
      8002673
   ],
   "8089001" : [
      8011155
   ],
   "8089015" : [
      8011102
   ],
   "8089021" : [
      8011160,
      8098160
   ],
   "8089028" : [
      8011162
   ],
   "8089032" : [
      8011118
   ],
   "8089046" : [
      8010406
   ],
   "8089050" : [
      8089051
   ],
   "8089051" : [
      8089050
   ],
   "8089066" : [
      8011306
   ],
   "8089072" : [
      8011343
   ],
   "8089073" : [
      8011113
   ],
   "8089083" : [
      8010404
   ],
   "8089100" : [
      8011167
   ],
   "8089113" : [
      8011041
   ],
   "8089117" : [
      8011901
   ],
   "8089165" : [
      8010403
   ],
   "8089168" : [
      8010041
   ],
   "8089181" : [
      8013477
   ],
   "8089182" : [
      8010036
   ],
   "8089184" : [
      8012666
   ],
   "8089185" : [
      8010255
   ],
   "8089186" : [
      8010053
   ],
   "8089187" : [
      8010341
   ],
   "8089188" : [
      8011003
   ],
   "8089190" : [
      8010405
   ],
   "8089197" : [
      8013487
   ],
   "8089201" : [
      8011201
   ],
   "8089205" : [
      8013470
   ],
   "8089207" : [
      8013483
   ],
   "8089295" : [
      8010184,
      8071738
   ],
   "8089390" : [
      8000191,
      8079041
   ],
   "8098044" : [
      8000044
   ],
   "8098096" : [
      8000096
   ],
   "8098105" : [
      8000105
   ],
   "8098147" : [
      8000147
   ],
   "8098160" : [
      8011160,
      8089021
   ],
   "8098193" : [
      8000193
   ],
   "8098205" : [
      8010205
   ],
   "8098261" : [
      8000261,
      8098262,
      8098263
   ],
   "8098262" : [
      8000261,
      8098261,
      8098263
   ],
   "8098263" : [
      8000261,
      8098261,
      8098262
   ],
   "8098349" : [
      8000348
   ],
   "8098549" : [
      8002549
   ],
   "8098553" : [
      8002553
   ],
   "8100102" : [
      8100545
   ],
   "8100545" : [
      8100102
   ],
   "8503310" : [
      8503340
   ],
   "8503340" : [
      8503310
   ],
   "8503428" : [
      8506152
   ],
   "8506110" : [
      8506308
   ],
   "8506111" : [
      8506307
   ],
   "8506112" : [
      8506121
   ],
   "8506113" : [
      8506306
   ],
   "8506121" : [
      8506112
   ],
   "8506133" : [
      8506162
   ],
   "8506134" : [
      8506160
   ],
   "8506135" : [
      8506159
   ],
   "8506136" : [
      8506157
   ],
   "8506137" : [
      8506155
   ],
   "8506152" : [
      8503428
   ],
   "8506155" : [
      8506137
   ],
   "8506157" : [
      8506136
   ],
   "8506159" : [
      8506135
   ],
   "8506160" : [
      8506134
   ],
   "8506162" : [
      8506133
   ],
   "8506306" : [
      8506113
   ],
   "8506307" : [
      8506111
   ],
   "8506308" : [
      8506110
   ],
   "8700074" : [
      8700464
   ],
   "8700464" : [
      8700074
   ],
   "8800004" : [
      8898004
   ],
   "8898004" : [
      8800004
   ],
   "901013" : [
      367072
   ]
}

share/xml2meta

0 → 100755
+45 −0
Original line number Diff line number Diff line
#!/usr/bin/env perl

use strict;
use warnings;
use 5.010;

use File::Slurp qw(read_file write_file);
use JSON;
use List::Util qw(any);
use XML::LibXML;

my $json_str = read_file('stations.json');
my %known_eva;
for my $station ( @{ JSON->new->utf8->decode($json_str) } ) {
	$known_eva{ $station->{eva} } = 1;
}

# Norddeich and Norddeich Mole are illegaly coupled in the backend (they are
# different stations with different departure times). Ignore their EVA IDs.
delete $known_eva{8007768};
delete $known_eva{8004449};

my $xml_str = read_file('stations.xml');
my $tree    = XML::LibXML->load_xml( string => $xml_str );

my %meta;

for my $station ( $tree->findnodes('//station') ) {
	my $eva  = $station->getAttribute('eva');
	my $meta = $station->getAttribute('meta');

	if ( $known_eva{$eva} and $meta ) {
		for my $ref ( split( qr{[|]}, $meta ) ) {
			if ( $known_eva{$ref} ) {
				push( @{ $meta{$eva} }, 0 + $ref );
			}
			else {
				say "Note: Ignoring $eva -> $ref (unknown)";
			}
		}
	}
}

my $json_out = JSON->new->utf8->canonical->pretty->encode( {%meta} );
write_file( 'meta.json', $json_out );