summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlib/Travelynx.pm238
-rwxr-xr-xshare/ice_names.json233
-rw-r--r--templates/_wagons.html.ep2
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 %>“