From 62b68b5010326115fe081fe6388135e17a2b710a Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 4 Jan 2020 18:48:46 +0100 Subject: map ICE train numbers to names where possible --- lib/Travelynx.pm | 241 ++++++++++++++++++++++++++++++++++++++++++++++ templates/_wagons.html.ep | 8 +- 2 files changed, 248 insertions(+), 1 deletion(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 8a86fd4..bd0ba52 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -274,6 +274,247 @@ sub startup { } ); +# https://de.wikipedia.org/wiki/Liste_nach_Gemeinden_und_Regionen_benannter_IC/ICE-Fahrzeuge#Namensgebung_ICE-Triebz%C3%BCge_nach_Gemeinden +# 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; + } + ); + $self->attr( station_by_eva => sub { my %map; diff --git a/templates/_wagons.html.ep b/templates/_wagons.html.ep index 8918273..bfb1b7b 100644 --- a/templates/_wagons.html.ep +++ b/templates/_wagons.html.ep @@ -1,5 +1,11 @@ % for my $wagongroup (@{$wagongroups // []}) { - Wagenverbund <%= $wagongroup->{name} %> von <%= $wagongroup->{from} %> nach <%= $wagongroup->{to} %> als <%= $journey->{type} %> <%= $wagongroup->{no} %>
+ Wagenverbund <%= $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 %>“ + % } + als <%= $journey->{type} %> <%= $wagongroup->{no} %> + von <%= $wagongroup->{from} %> nach <%= $wagongroup->{to} %>
% for my $wagon (@{$wagongroup->{wagons}}) { % if (length($wagon->{id}) == 12) { <%= substr($wagon->{id}, 0, 2) %><%= substr($wagon->{id}, 2, 2) %><%= substr($wagon->{id}, 4, 1) %><%= substr($wagon->{id}, 5, 3) %><%= substr($wagon->{id}, 8, 3) %><%= substr($wagon->{id}, 11) %> -- cgit v1.2.3