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

add ICE name list (via bahn.expert) and group->designation accessor

parent ecda72f5
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -151,14 +151,10 @@ print $wr->direction == 100 ? '>' : '<';
print "\n\n";

for my $group ( $wr->groups ) {
	if ( $group->has_sectors ) {
		printf( "%s (%s)\n",
	printf( "%s%s%s\n",
		$group->description || 'Zug',
			join( q{}, $group->sectors ) );
	}
	else {
		say $group->description || 'Zug';
	}
		$group->designation ? '' . $group->designation . ''          : q{},
		$group->has_sectors ? ' (' . join( q{}, $group->sectors ) . ')' : q{} );
	printf( "%s %s  → %s\n\n",
		$group->train_type, $group->train_no, $group->destination );

+270 −1
Original line number Diff line number Diff line
@@ -11,9 +11,274 @@ use List::Util qw(uniq);
our $VERSION = '0.16';

Travel::Status::DE::DBWagenreihung::Group->mk_ro_accessors(
	qw(name train_no train_type description desc_short destination has_sectors model series start_percent end_percent)
	qw(designation name train_no train_type description desc_short destination has_sectors model series start_percent end_percent)
);

# {{{ ICE designations

# Courtesy of https://github.com/marudor/bahn.expert
# cat src/server/coachSequence/TrainNames.ts | perl -nE 'if (m{(\d+): ''([^'']+)''}) { say "$1 => ''$2''," }' | xclip -i

my %ice_name = (
	101  => 'Gießen',
	102  => 'Jever',
	103  => 'Neu-Isenburg',
	104  => 'Fulda',
	105  => 'Offenbach am Main',
	106  => 'Itzehoe',
	107  => 'Plattling',
	108  => 'Lichtenfels',
	110  => 'Gelsenkirchen',
	111  => 'Nürnberg',
	112  => 'Memmingen',
	113  => 'Frankenthal/Pfalz',
	114  => 'Friedrichshafen',
	115  => 'Regensburg',
	116  => 'Pforzheim',
	117  => 'Hof',
	119  => 'Osnabrück',
	120  => 'Lüneburg',
	152  => 'Hanau',
	153  => 'Neumünster',
	154  => 'Flensburg',
	155  => 'Rosenheim',
	156  => 'Heppenheim/Bergstraße',
	157  => 'Landshut',
	158  => 'Gütersloh',
	159  => 'Bad Oldesloe',
	160  => 'Mülheim an der Ruhr',
	161  => 'Bebra',
	162  => 'Geisenheim/Rheingau',
	166  => 'Gelnhausen',
	167  => 'Garmisch-Partenkirchen',
	168  => 'Crailsheim',
	169  => 'Worms',
	171  => 'Heusenstamm',
	172  => 'Aschaffenburg',
	173  => 'Basel',
	174  => 'Zürich',
	175  => 'Nürnberg',
	176  => 'Bremen',
	177  => 'Rendsburg',
	178  => 'Bremerhaven',
	180  => 'Castrop-Rauxel',
	181  => 'Interlaken',
	182  => 'Rüdesheim am Rhein',
	183  => 'Timmendorfer Strand',
	184  => 'Bruchsal',
	185  => 'Freilassing',
	186  => 'Chur',
	187  => 'Mühldorf a. Inn',
	188  => 'Hildesheim',
	190  => 'Ludwigshafen am Rhein',
	201  => 'Rheinsberg',
	202  => 'Wuppertal',
	203  => 'Cottbus/Chóśebuz',
	204  => 'Bielefeld',
	205  => 'Zwickau',
	206  => 'Magdeburg',
	207  => 'Stendal',
	208  => 'Bonn',
	209  => 'Riesa',
	210  => 'Fontanestadt Neuruppin',
	211  => 'Uelzen',
	212  => 'Potsdam',
	213  => 'Nauen',
	214  => 'Hamm (Westf.)',
	215  => 'Bitterfeld-Wolfen',
	216  => 'Dessau',
	217  => 'Bergen auf Rügen',
	218  => 'Braunschweig',
	219  => 'Hagen',
	220  => 'Meiningen',
	221  => 'Lübbenau/Spreewald',
	222  => 'Eberswalde',
	223  => 'Schwerin',
	224  => 'Saalfeld (Saale)',
	225  => 'Oldenburg (Oldb)',
	226  => 'Lutherstadt Wittenberg',
	227  => 'Ludwigslust',
	228  => 'Altenburg',
	229  => 'Templin',
	230  => 'Delitzsch',
	231  => 'Brandenburg an der Havel',
	232  => 'Frankfurt (Oder)',
	233  => 'Ulm',
	234  => 'Minden',
	235  => 'Görlitz',
	236  => 'Jüterbog',
	237  => 'Neustrelitz',
	238  => 'Saarbrücken',
	239  => 'Essen',
	240  => 'Bochum',
	241  => 'Bad Hersfeld',
	242  => 'Quedlinburg',
	243  => 'Bautzen/Budyšin',
	244  => 'Koblenz',
	301  => 'Freiburg im Breisgau',
	302  => 'Hansestadt Lübeck',
	303  => 'Dortmund',
	304  => 'München',
	305  => 'Baden-Baden',
	306  => 'Nördlingen',
	307  => 'Oberhausen',
	308  => 'Murnau am Staffelsee',
	309  => 'Aalen',
	310  => 'Wolfsburg',
	311  => 'Wiesbaden',
	312  => 'Montabaur',
	313  => 'Treuchtlingen',
	314  => 'Bergisch Gladbach',
	315  => 'Singen (Hohentwiel)',
	316  => 'Siegburg',
	317  => 'Recklinghausen',
	318  => 'Münster (Westf.)',
	319  => 'Duisburg',
	320  => 'Weil am Rhein',
	321  => 'Krefeld',
	322  => 'Solingen',
	323  => 'Schaffhausen',
	324  => 'Fürth',
	325  => 'Ravensburg',
	326  => 'Neunkirchen',
	327  => 'Siegen',
	328  => 'Aachen',
	330  => 'Göttingen',
	331  => 'Westerland/Sylt',
	332  => 'Augsburg',
	333  => 'Goslar',
	334  => 'Offenburg',
	335  => 'Konstanz',
	336  => 'Ingolstadt',
	337  => 'Stuttgart',
	351  => 'Herford',
	352  => 'Mönchengladbach',
	353  => 'Neu-Ulm',
	354  => 'Mittenwald',
	355  => 'Tuttlingen',
	357  => 'Esslingen am Neckar',
	358  => 'St. Ingbert',
	359  => 'Leverkusen',
	360  => 'Linz am Rhein',
	361  => 'Celle',
	362  => 'Schwerte (Ruhr)',
	363  => 'Weilheim i. OB',
	1101 => 'Neustadt an der Weinstraße',
	1102 => 'Neubrandenburg',
	1103 => 'Paderborn',
	1104 => 'Erfurt',
	1105 => 'Dresden',
	1107 => 'Pirna',
	1108 => 'Berlin',
	1109 => 'Güstrow',
	1110 => 'Naumburg (Saale)',
	1111 => 'Hansestadt Wismar',
	1112 => 'Freie und Hansestadt Hamburg',
	1113 => 'Hansestadt Stralsund',
	1117 => 'Erlangen',
	1118 => 'Plauen/Vogtland',
	1119 => 'Meißen',
	1125 => 'Arnstadt',
	1126 => 'Leipzig',
	1127 => 'Weimar',
	1128 => 'Reutlingen',
	1129 => 'Kiel',
	1130 => 'Jena',
	1131 => 'Trier',
	1132 => 'Wittenberge',
	1151 => 'Elsterwerda',
	1152 => 'Travemünde',
	1153 => 'Ilmenau',
	1154 => 'Sonneberg',
	1155 => 'Mühlhausen/Thüringen',
	1156 => 'Waren (Müritz)',
	1157 => 'Innsbruck',
	1158 => 'Falkenberg/Elster',
	1159 => 'Passau',
	1160 => 'Markt Holzkirchen',
	1161 => 'Andernach',
	1162 => 'Vaihingen an der Enz',
	1163 => 'Ostseebad Binz',
	1164 => 'Rödental',
	1165 => 'Bad Oeynhausen',
	1166 => 'Bingen am Rhein',
	1167 => 'Traunstein',
	1168 => 'Ellwangen',
	1169 => 'Tutzing',
	1170 => 'Prenzlau',
	1171 => 'Oschatz',
	1172 => 'Bamberg',
	1173 => 'Halle (Saale)',
	1174 => 'Hansestadt Warburg',
	1175 => 'Villingen-Schwenningen',
	1176 => 'Coburg',
	1177 => 'Rathenow',
	1178 => 'Ostseebad Warnemünde',
	1180 => 'Darmstadt',
	1181 => 'Horb am Neckar',
	1182 => 'Mainz',
	1183 => 'Oberursel (Taunus)',
	1184 => 'Kaiserslautern',
	1190 => 'Wien',
	1191 => 'Salzburg',
	1192 => 'Linz',
	1501 => 'Eisenach',
	1502 => 'Karlsruhe',
	1503 => 'Altenbeken',
	1504 => 'Heidelberg',
	1505 => 'Marburg/Lahn',
	1506 => 'Kassel',
	1520 => 'Gotha',
	1521 => 'Homburg/Saar',
	1522 => 'Torgau',
	1523 => 'Hansestadt Greifswald',
	1524 => 'Hansestadt Rostock',
	2853 => 'Nationalpark Sächsische Schweiz',
	2865 => 'Remstal',
	2868 => 'Nationalpark Niedersächsisches Wattenmeer',
	2871 => 'Leipziger Neuseenland',
	2874 => 'Oberer Neckar',
	2875 => 'Magdeburger Börde',
	4103 => 'Allgäu',
	4111 => 'Gäu',
	4114 => 'Dresden Elbland',
	4117 => 'Mecklenburgische Ostseeküste',
	4601 => 'Europa/Europe',
	4602 => 'Euregio Maas-Rhein',
	4603 => 'Mannheim',
	4604 => 'Brussel/Bruxelles',
	4607 => 'Hannover',
	4610 => 'Frankfurt am Main',
	4611 => 'Düsseldorf',
	4651 => 'Amsterdam',
	4652 => 'Arnhem',
	4680 => 'Würzburg',
	4682 => 'Köln',
	4683 => 'Limburg an der Lahn',
	4684 => 'Forbach-Lorraine',
	4685 => 'Schwäbisch Hall',
	4712 => 'Dillingen a.d. Donau',
	4710 => 'Ansbach',
	4717 => 'Paris',
	8007 => 'Rheinland',
	8022 => 'Waldecker Land',
	9006 => 'Martin Luther',
	9018 => 'Freistaat Bayern',
	9025 => 'Nordrhein-Westfalen',
	9026 => 'Zürichsee',
	9028 => 'Freistaat Sachsen',
	9041 => 'Baden-Württemberg',
	9046 => 'Female ICE',
	9050 => 'Metropole Ruhr',
	9202 => 'Schleswig-Holstein',
	9212 => 'Fan-Hauptstadt Hamburg',
	9237 => 'Spree',
	9457 => 'Bundesrepublik Deutschland',
	9481 => 'Rheinland-Pfalz'
);

# }}}

# {{{ Rolling Stock Models

my %model_name = (
@@ -89,6 +354,10 @@ sub new {
		train_no    => $json{transport}{number},
	};

	if ( $ref->{name} =~ m{ ^ ICE 0* (\d+) $ }x and exists $ice_name{$1} ) {
		$ref->{designation} = $ice_name{$1};
	}

	$ref->{train} = $ref->{train_type} . ' ' . $ref->{train_no};

	$ref->{sectors} = [