diff options
| -rwxr-xr-x | lib/Travelynx.pm | 238 | ||||
| -rwxr-xr-x | share/ice_names.json | 233 | ||||
| -rw-r--r-- | templates/_wagons.html.ep | 2 | 
3 files changed, 238 insertions, 235 deletions
| diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 1769076..7d762c8 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -1,6 +1,7 @@  package Travelynx;  use Mojo::Base 'Mojolicious'; +use Mojo::JSON qw(decode_json);  use Mojo::Pg;  use Mojo::Promise;  use Mojolicious::Plugin::Authentication; @@ -9,6 +10,7 @@ use Crypt::Eksblowfish::Bcrypt qw(bcrypt en_base64);  use DateTime;  use DateTime::Format::Strptime;  use Encode qw(decode encode); +use File::Slurp qw(read_file);  use Geo::Distance;  use JSON;  use List::Util; @@ -278,240 +280,8 @@ sub startup {  # via https://github.com/marudor/BahnhofsAbfahrten/blob/master/src/server/Reihung/ICENaming.ts  	$self->attr(  		ice_name => sub { -			my %id_to_name = ( -				4712 => 'Dillingen a.d. Donau', -				4601 => 'Europa/Europe', -				1183 => 'Oberursel (Taunus)', -				363  => 'Weilheim i. OB', -				187  => 'Mühldorf a. Inn', -				101  => 'Gießen', -				331  => 'Westerland/Sylt', -				357  => 'Esslingen am Neckar', -				333  => 'Goslar', -				4717 => 'Paris', -				102  => 'Jever', -				4604 => 'Brussel/Bruxelles', -				175  => 'Nürnberg', -				173  => 'Basel', -				177  => 'Rendsburg', -				118  => 'Gelnhausen', -				320  => 'Weil am Rhein', -				186  => 'Chur', -				354  => 'Mittenwald', -				1155 => 'Mühlhausen/Thüringen', -				355  => 'Tuttlingen', -				308  => 'Murnau am Staffelsee', -				353  => 'Neu-Ulm', -				1505 => 'Marburg/Lahn', -				104  => 'Fulda', -				172  => 'Aschaffenburg', -				182  => 'Rüdesheim', -				1174 => 'Hansestadt Warburg', -				1168 => 'Ellwangen', -				180  => 'Castrop-Rauxel', -				1170 => 'Prenzlau', -				1164 => 'Rödental', -				1175 => 'Villingen-Schwenningen', -				1166 => 'Bingen am Rhein', -				327  => 'Siegen', -				362  => 'Schwerte (Ruhr)', -				1151 => 'Elsterwerda', -				360  => 'Linz am Rhein', -				1163 => 'Ostseebad Binz', -				103  => 'Neu-Isenburg', -				352  => 'Mönchengladbach', -				1167 => 'Traunstein', -				1169 => 'Tutzing', -				1162 => 'Vaihingen an der Enz', -				1157 => 'Innsbruck', -				1161 => 'Andernach', -				1158 => 'Falkenberg/Elster', -				225  => 'Oldenburg (Oldb)', -				228  => 'Altenburg', -				215  => 'Bitterfeld-Wolfen', -				359  => 'Leverkusen', -				171  => 'Heusenstamm', -				1152 => 'Travemünde', -				361  => 'Celle', -				160  => 'Mülheim an der Ruhr', -				237  => 'Neustrelitz', -				1192 => 'Linz', -				1154 => 'Sonneberg', -				154  => 'Flensburg', -				211  => 'Uelzen', -				156  => 'Heppenheim/Bergstraße', -				185  => 'Freilassing', -				323  => 'Schaffhausen', -				309  => 'Aalen', -				188  => 'Hildesheim', -				315  => 'Singen (Hohentwiel)', -				358  => 'St. Ingbert', -				335  => 'Konstanz', -				1190 => 'Wien', -				181  => 'Interlaken', -				213  => 'Nauen', -				1172 => 'Bamberg', -				183  => 'Timmendorfer Strand', -				326  => 'Neunkirchen', -				324  => 'Fürth', -				1153 => 'Ilmenau', -				157  => 'Landshut', -				1178 => 'Ostseebad Warnemünde', -				1160 => 'Markt Holzkirchen', -				222  => 'Eberswalde', -				236  => 'Jüterbog', -				4685 => 'Schwäbisch Hall', -				4684 => 'Forbach-Lorraine', -				1522 => 'Torgau', -				1182 => 'Mainz', -				1191 => 'Salzburg', -				1523 => 'Hansestadt Greifswald', -				1521 => 'Homburg/Saar', -				1181 => 'Horb am Neckar', -				1520 => 'Gotha', -				1180 => 'Darmstadt', -				1176 => 'Coburg', -				1173 => 'Halle (Saale)', -				4683 => 'Limburg an der Lahn', -				314  => 'Bergisch Gladbach', -				312  => 'Montabaur', -				1524 => 'Hansestadt Rostock', -				1184 => 'Kaiserslautern', -				169  => 'Worms', -				4680 => 'Würzburg', -				1177 => 'Rathenow', -				1156 => 'Waren (Müritz)', -				351  => 'Herford', -				1165 => 'Bad Oeynhausen', -				4682 => 'Köln', -				1171 => 'Oschatz', -				210  => 'Fontanestadt Neuruppin', -				167  => 'Garmisch-Partenkirchen', -				106  => 'Itzehoe', -				174  => 'Zürich', -				107  => 'Plattling', -				162  => 'Geisenheim/Rheingau', -				201  => 'Rheinsberg', -				117  => 'Hof', -				220  => 'Meiningen', -				217  => 'Bergen auf Rügen', -				238  => 'Saarbrücken', -				114  => 'Friedrichshafen', -				113  => 'Frankenthal/Pfalz', -				1111 => 'Hansestadt Wismar', -				1108 => 'Berlin', -				1128 => 'Reutlingen', -				168  => 'Crailsheim', -				230  => 'Delitzsch', -				313  => 'Treuchtlingen', -				1159 => 'Passau', -				110  => 'Gelsenkirchen', -				307  => 'Oberhausen', -				1132 => 'Wittenberge', -				227  => 'Ludwigslust', -				205  => 'Zwickau', -				108  => 'Lichtenfels', -				158  => 'Gütersloh', -				124  => 'Hanau', -				116  => 'Pforzheim', -				1117 => 'Erlangen', -				224  => 'Saalfeld (Saale)', -				243  => 'Bautzen/Budyšin', -				1131 => 'Trier', -				231  => 'Brandenburg an der Havel', -				242  => 'Quedlinburg', -				1125 => 'Arnstadt', -				325  => 'Ravensburg', -				221  => 'Lübbenau/Spreewald', -				1118 => 'Plauen/Vogtland', -				159  => 'Bad Oldesloe', -				302  => 'Hansestadt Lübeck', -				115  => 'Regensburg', -				112  => 'Memmingen', -				190  => 'Ludwigshafen am Rhein', -				241  => 'Bad Hersfeld', -				235  => 'Görlitz', -				336  => 'Ingolstadt', -				334  => 'Offenburg', -				1110 => 'Naumburg (Saale)', -				321  => 'Krefeld', -				178  => 'Bremerhaven', -				1119 => 'Meißen', -				305  => 'Baden-Baden', -				319  => 'Duisburg', -				4651 => 'Amsterdam', -				223  => 'Schwerin', -				1102 => 'Neubrandenburg', -				214  => 'Hamm (Westf.)', -				209  => 'Riesa', -				105  => 'Offenbach am Main', -				153  => 'Neumünster', -				120  => 'Lüneburg', -				184  => 'Bruchsal', -				316  => 'Siegburg', -				219  => 'Hagen', -				161  => 'Bebra', -				317  => 'Recklinghausen', -				1503 => 'Altenbeken', -				318  => 'Münster (Westf.)', -				240  => 'Bochum', -				328  => 'Aachen', -				322  => 'Solingen', -				202  => 'Wuppertal', -				1101 => 'Neustadt an der Weinstraße', -				1103 => 'Paderborn', -				234  => 'Minden', -				1109 => 'Güstrow', -				232  => 'Frankfurt (Oder)', -				119  => 'Osnabrück', -				1107 => 'Pirna', -				1113 => 'Hansestadt Stralsund', -				1501 => 'Eisenach', -				155  => 'Rosenheim', -				244  => 'Koblenz', -				4652 => 'Arnhem', -				212  => 'Potsdam', -				4603 => 'Mannheim', -				301  => 'Freiburg im Breisgau', -				310  => 'Wolfsburg', -				330  => 'Göttingen', -				1127 => 'Weimar', -				207  => 'Stendal', -				304  => 'München', -				4607 => 'Hannover', -				1105 => 'Dresden', -				1502 => 'Karlsruhe', -				1506 => 'Kassel', -				208  => 'Bonn', -				311  => 'Wiesbaden', -				1126 => 'Leipzig', -				216  => 'Dessau', -				176  => 'Bremen', -				4611 => 'Düsseldorf', -				203  => 'Cottbus/Chóśebuz', -				1504 => 'Heidelberg', -				303  => 'Dortmund', -				1130 => 'Jena', -				226  => 'Lutherstadt Wittenberg', -				206  => 'Magdeburg', -				1104 => 'Erfurt', -				332  => 'Augsburg', -				1129 => 'Kiel', -				239  => 'Essen', -				337  => 'Stuttgart', -				233  => 'Ulm', -				204  => 'Bielefeld', -				218  => 'Braunschweig', -				1112 => 'Freie und Hansestadt Hamburg', -				4610 => 'Frankfurt am Main', -				9006 => 'Martin Luther', -				9018 => 'Freistaat Bayern', -				9025 => 'Nordrhein-Westfalen', -				9026 => 'Zürichsee', -				152  => 'Hanau', -				166  => 'Gelnhausen', -			); -			return \%id_to_name; +			my $id_to_name = decode_json( read_file('share/ice_names.json') ); +			return $id_to_name;  		}  	); diff --git a/share/ice_names.json b/share/ice_names.json new file mode 100755 index 0000000..18bf252 --- /dev/null +++ b/share/ice_names.json @@ -0,0 +1,233 @@ +{ +"4712" : "Dillingen a.d. Donau", +"4601" : "Europa/Europe", +"1183" : "Oberursel (Taunus)", +"363"  : "Weilheim i. OB", +"187"  : "Mühldorf a. Inn", +"101"  : "Gießen", +"331"  : "Westerland/Sylt", +"357"  : "Esslingen am Neckar", +"333"  : "Goslar", +"4717" : "Paris", +"102"  : "Jever", +"4604" : "Brussel/Bruxelles", +"175"  : "Nürnberg", +"173"  : "Basel", +"177"  : "Rendsburg", +"118"  : "Gelnhausen", +"320"  : "Weil am Rhein", +"186"  : "Chur", +"354"  : "Mittenwald", +"1155" : "Mühlhausen/Thüringen", +"355"  : "Tuttlingen", +"308"  : "Murnau am Staffelsee", +"353"  : "Neu-Ulm", +"1505" : "Marburg/Lahn", +"104"  : "Fulda", +"172"  : "Aschaffenburg", +"182"  : "Rüdesheim", +"1174" : "Hansestadt Warburg", +"1168" : "Ellwangen", +"180"  : "Castrop-Rauxel", +"1170" : "Prenzlau", +"1164" : "Rödental", +"1175" : "Villingen-Schwenningen", +"1166" : "Bingen am Rhein", +"327"  : "Siegen", +"362"  : "Schwerte (Ruhr)", +"1151" : "Elsterwerda", +"360"  : "Linz am Rhein", +"1163" : "Ostseebad Binz", +"103"  : "Neu-Isenburg", +"352"  : "Mönchengladbach", +"1167" : "Traunstein", +"1169" : "Tutzing", +"1162" : "Vaihingen an der Enz", +"1157" : "Innsbruck", +"1161" : "Andernach", +"1158" : "Falkenberg/Elster", +"225"  : "Oldenburg (Oldb)", +"228"  : "Altenburg", +"215"  : "Bitterfeld-Wolfen", +"359"  : "Leverkusen", +"171"  : "Heusenstamm", +"1152" : "Travemünde", +"361"  : "Celle", +"160"  : "Mülheim an der Ruhr", +"237"  : "Neustrelitz", +"1192" : "Linz", +"1154" : "Sonneberg", +"154"  : "Flensburg", +"211"  : "Uelzen", +"156"  : "Heppenheim/Bergstraße", +"185"  : "Freilassing", +"323"  : "Schaffhausen", +"309"  : "Aalen", +"188"  : "Hildesheim", +"315"  : "Singen (Hohentwiel)", +"358"  : "St. Ingbert", +"335"  : "Konstanz", +"1190" : "Wien", +"181"  : "Interlaken", +"213"  : "Nauen", +"1172" : "Bamberg", +"183"  : "Timmendorfer Strand", +"326"  : "Neunkirchen", +"324"  : "Fürth", +"1153" : "Ilmenau", +"157"  : "Landshut", +"1178" : "Ostseebad Warnemünde", +"1160" : "Markt Holzkirchen", +"222"  : "Eberswalde", +"236"  : "Jüterbog", +"4685" : "Schwäbisch Hall", +"4684" : "Forbach-Lorraine", +"1522" : "Torgau", +"1182" : "Mainz", +"1191" : "Salzburg", +"1523" : "Hansestadt Greifswald", +"1521" : "Homburg/Saar", +"1181" : "Horb am Neckar", +"1520" : "Gotha", +"1180" : "Darmstadt", +"1176" : "Coburg", +"1173" : "Halle (Saale)", +"4683" : "Limburg an der Lahn", +"314"  : "Bergisch Gladbach", +"312"  : "Montabaur", +"1524" : "Hansestadt Rostock", +"1184" : "Kaiserslautern", +"169"  : "Worms", +"4680" : "Würzburg", +"1177" : "Rathenow", +"1156" : "Waren (Müritz)", +"351"  : "Herford", +"1165" : "Bad Oeynhausen", +"4682" : "Köln", +"1171" : "Oschatz", +"210"  : "Fontanestadt Neuruppin", +"167"  : "Garmisch-Partenkirchen", +"106"  : "Itzehoe", +"174"  : "Zürich", +"107"  : "Plattling", +"162"  : "Geisenheim/Rheingau", +"201"  : "Rheinsberg", +"117"  : "Hof", +"220"  : "Meiningen", +"217"  : "Bergen auf Rügen", +"238"  : "Saarbrücken", +"114"  : "Friedrichshafen", +"113"  : "Frankenthal/Pfalz", +"1111" : "Hansestadt Wismar", +"1108" : "Berlin", +"1128" : "Reutlingen", +"168"  : "Crailsheim", +"230"  : "Delitzsch", +"313"  : "Treuchtlingen", +"1159" : "Passau", +"110"  : "Gelsenkirchen", +"307"  : "Oberhausen", +"1132" : "Wittenberge", +"227"  : "Ludwigslust", +"205"  : "Zwickau", +"108"  : "Lichtenfels", +"158"  : "Gütersloh", +"124"  : "Hanau", +"116"  : "Pforzheim", +"1117" : "Erlangen", +"224"  : "Saalfeld (Saale)", +"243"  : "Bautzen/Budyšin", +"1131" : "Trier", +"231"  : "Brandenburg an der Havel", +"242"  : "Quedlinburg", +"1125" : "Arnstadt", +"325"  : "Ravensburg", +"221"  : "Lübbenau/Spreewald", +"1118" : "Plauen/Vogtland", +"159"  : "Bad Oldesloe", +"302"  : "Hansestadt Lübeck", +"115"  : "Regensburg", +"112"  : "Memmingen", +"190"  : "Ludwigshafen am Rhein", +"241"  : "Bad Hersfeld", +"235"  : "Görlitz", +"336"  : "Ingolstadt", +"334"  : "Offenburg", +"1110" : "Naumburg (Saale)", +"321"  : "Krefeld", +"178"  : "Bremerhaven", +"1119" : "Meißen", +"305"  : "Baden-Baden", +"319"  : "Duisburg", +"4651" : "Amsterdam", +"223"  : "Schwerin", +"1102" : "Neubrandenburg", +"214"  : "Hamm (Westf.)", +"209"  : "Riesa", +"105"  : "Offenbach am Main", +"153"  : "Neumünster", +"120"  : "Lüneburg", +"184"  : "Bruchsal", +"316"  : "Siegburg", +"219"  : "Hagen", +"161"  : "Bebra", +"317"  : "Recklinghausen", +"1503" : "Altenbeken", +"318"  : "Münster (Westf.)", +"240"  : "Bochum", +"328"  : "Aachen", +"322"  : "Solingen", +"202"  : "Wuppertal", +"1101" : "Neustadt an der Weinstraße", +"1103" : "Paderborn", +"234"  : "Minden", +"1109" : "Güstrow", +"232"  : "Frankfurt (Oder)", +"119"  : "Osnabrück", +"1107" : "Pirna", +"1113" : "Hansestadt Stralsund", +"1501" : "Eisenach", +"155"  : "Rosenheim", +"244"  : "Koblenz", +"4652" : "Arnhem", +"212"  : "Potsdam", +"4603" : "Mannheim", +"301"  : "Freiburg im Breisgau", +"310"  : "Wolfsburg", +"330"  : "Göttingen", +"1127" : "Weimar", +"207"  : "Stendal", +"304"  : "München", +"4607" : "Hannover", +"1105" : "Dresden", +"1502" : "Karlsruhe", +"1506" : "Kassel", +"208"  : "Bonn", +"311"  : "Wiesbaden", +"1126" : "Leipzig", +"216"  : "Dessau", +"176"  : "Bremen", +"4611" : "Düsseldorf", +"203"  : "Cottbus/Chóśebuz", +"1504" : "Heidelberg", +"303"  : "Dortmund", +"1130" : "Jena", +"226"  : "Lutherstadt Wittenberg", +"206"  : "Magdeburg", +"1104" : "Erfurt", +"332"  : "Augsburg", +"1129" : "Kiel", +"239"  : "Essen", +"337"  : "Stuttgart", +"233"  : "Ulm", +"204"  : "Bielefeld", +"218"  : "Braunschweig", +"1112" : "Freie und Hansestadt Hamburg", +"4610" : "Frankfurt am Main", +"9006" : "Martin Luther", +"9018" : "Freistaat Bayern", +"9025" : "Nordrhein-Westfalen", +"9026" : "Zürichsee", +"152"  : "Hanau", +"166"  : "Gelnhausen" +} diff --git a/templates/_wagons.html.ep b/templates/_wagons.html.ep index bfb1b7b..106709e 100644 --- a/templates/_wagons.html.ep +++ b/templates/_wagons.html.ep @@ -1,5 +1,5 @@  % for my $wagongroup (@{$wagongroups // []}) { -	Wagenverbund <%= $wagongroup->{name} %> +	<%= $wagongroup->{name} %>  	% my ($wagon_number) = ($wagongroup->{name} =~ m{ ^ ICE 0* (\d+) $ }x);  	% if ($wagon_number and my $group_name = app->ice_name->{$wagon_number}) {  		„<%= $group_name %>“ | 
