summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohann1502023-06-10 14:56:56 +0200
committerstuebinm2023-06-18 00:13:00 +0200
commit128198f070d76325551c484a9a98d346b5ba53c0 (patch)
tree3f67451c4b45d4b62ae10bf8dfc174b4f86c89eb
parenta7823fc059de2de007a5ac14cf6ae81269ba5a7f (diff)
add Leitpunkte
(by johann150, with some modification by stuebinm)
-rw-r--r--data/README.md7
-rw-r--r--data/leitpunkte.csv649
-rw-r--r--src/bahnhofname.gleam53
3 files changed, 696 insertions, 13 deletions
diff --git a/data/README.md b/data/README.md
new file mode 100644
index 0000000..f4d3c3c
--- /dev/null
+++ b/data/README.md
@@ -0,0 +1,7 @@
+## data sources
+
+- `leitpunkte.csv` from <https://assets.static-bahn.de/dam/jcr:0024ef49-e411-4ceb-8326-8317760ec52e/6)%20Leitpunktkuerzel.pdf> (published 11.12.2022)
+ The relevant information was extracted from the PDF manually.
+ More curent versions may be listed at <https://www.bahn.de/agb> as "Leitpunktkürzel" in the section "Entfernungswerk des Deutschlandtarifs".
+
+ The RL100-Code combination was added manually and is not guaranteed to be accurate. Some places do not have a one-to-one mapping between Leitpunkt and RL100.
diff --git a/data/leitpunkte.csv b/data/leitpunkte.csv
new file mode 100644
index 0000000..fb2a665
--- /dev/null
+++ b/data/leitpunkte.csv
@@ -0,0 +1,649 @@
+Leitpunktkürzel;Tarifpunkt;DS100
+A;Augsburg Hbf;MA
+AA;Aalen Hbf;TA
+AB;Aschaffenburg Hbf;NAH
+ABG;Altenburg;LA
+AC;Aachen Hbf;KA
+ACH;Achern;RAH
+ACSG;Aachen Süd(Gr);KXA
+ADE;Adelebsen;HADB
+AIC;Aichach;MAI
+ALL;Allersberg(Rothsee);NALB
+ALT;Altenbeken;HA
+AN;Ansbach;NAN
+AND;Andernach;KAND
+ANG;Angermünde;WA
+APO;Apolda;UAP
+ARD;Arnsdorf(Dresden);DAF
+ARN;Arnstadt Hbf;UA
+ASCH;Ascheberg(Holst);AAG
+ASL;Aschersleben;LAL
+AU;Aue(Sachs);DAU
+AUL;Aulendorf;TAU
+AUS;Au(Sieg);KAU
+AZ;Alzey;FALZ
+B;Berlin Friedrichstr;BFRI
+BA;Bamberg;NBA
+BAAL;Baalberge;LBB
+BAB;Babenhausen(Hess);FBA
+BACK;Backnang;TB
+BAD;Baden-Baden;RBB
+BALI;Bad Liebenwerda;BBLW
+BAS;Basel Bad Bf;RB
+BB;Böblingen;TBO
+BBG;Bernburg Hbf;LBG
+BCH;Berlin-Charlottenbg.;BCHB
+BEB;Bebra;FB
+BED;Bedburg(Erft);KBE
+BEGR;Bad Bentheim(Gr);HXB
+BELZ;Bad Belzig;BBIG
+BENS;Bensheim;FBH
+BENT;Bad Bentheim;HBTH
+BER;Bernau(b Berlin);BBRN
+BETZ;Betzdorf(Sieg);EBZ
+BF;Steinfurt-Burgstein.;EBFT
+BGS;Berlin Gesundbrunnen;BGS
+BHBF;Berlin Hbf;BL
+BHS;Berlin-Hohenschönh.;BHSH
+BHV;Bremerhaven Hbf;HBH
+BI;Bielefeld Hbf;EBIL
+BIET;Bietigheim-Bissingen;TBM
+BILL;Billerbeck;EBB
+BIN;Bingen(Rhein) Hbf;FBGK
+BIW;Bischofswerda;DBW
+BIZ;Biederitz;LBZ
+BKH;Berlin-Karlshorst;BKH
+BKL;Bad Kleinen;WK
+BLAM;Blankenberg(Meckl);WBL
+BLF;Blankenf(Teltow-Fl);BBF
+BLG;Bad Blankenburg(Th);UBL
+BLH;Blankenheim(Sangerh);FBLA
+BLI;Berlin-Lichtenberg;BLO
+BN;Bonn Hbf;KB
+BNBE;Bonn-Beuel;KBB
+BNG;Burg-u.Ndr Gemünden;FBNG
+BNGO;Bonn-Bad Godesberg;KBBG
+BO;Bochum Hbf;EBO
+BOB;Berlin Ostbahnhof;BHF
+BOH;Bocholt;EBCH
+BOK;Berlin Ostkreuz;BOK
+BOP;Boppard Hbf;KBOP
+BOR;Borken(Westf);EBK
+BORS;Borsdorf(Sachs);LBOR
+BOT;Bottrop Hbf;EBTH
+BR;Bruchsal;RBR
+BRAC;Bielefeld-Brackwede;EBWE
+BRB;Brandenburg Hbf;LB
+BRE;Bretleben;UBR
+BRI;Brilon Wald;EBRW
+BRIT;Britz;WBR
+BROI;Lengede-Broistedt;HBST
+BRT;Bretten;RBT
+BRV;Bremervörde;ABV
+BS;Braunschweig Hbf;HBS
+BSFL;Flgh. BER T5 Schöne;BFHS
+BSK;Berlin Südkreuz;BPAF
+BSP;Berlin-Spandau;BSPD
+BSU;Bad Schandau;DAS
+BT;Bayreuth Hbf;NBY
+BTF;Bitterfeld;LBT
+BUCH;Buchholz(Nordheide);ABLZ
+BUE;Büchen;ABCH
+BUEN;Bünde(Westf);HBDE
+BUEZ;Bützow;WB
+BULL;Bullay(DB);SBY
+BULO;Buchloe;MBU
+BUT;Buttstädt;UBU
+BWA;Berlin-Wannsee;BWS
+BWK;Berlin Westkreuz;BWKR
+BZ;Bautzen;DBZ
+BZG;Berlin Zoolg. Garten;BZOO
+C;Chemnitz Hbf;DC
+CA;Calau(Nl);BC
+CALO;Calbe(Saale) Ost;LCBO
+CALW;Calbe(Saale) West;LCBW
+CAMB;Camburg(Saale);UCB
+CB;Cottbus Hbf;BCS
+CE;Celle;HC
+CO;Coburg;NC
+COC;Cochem(Mosel);SCOC
+COE;Coesfeld(Westf);ECMF
+COEL;Cölbe;FCOE
+CON;Coburg Nord;NCN
+COS;Coswig(Anh);LCW
+COSD;Coswig(b Dresden);DCW
+CR;Crailsheim;TC
+CW;Calw;TCW
+D;Düsseldorf Hbf;KD
+DA;Darmstadt Hbf;FD
+DD;Dresden Hbf;DH
+DDN;Dresden-Neustadt;DN
+DE;Dessau Hbf;LD
+DEL;Delmenhorst;HD
+DERN;Derneburg(Han);HDBG
+DFL;Düsseldorf Flugh.;KDF
+DH;Diepholz;HDIP
+DIL;Dillenburg;FDIL
+DILL;Dillingen(Saar);SDL
+DL;Döbeln Hbf;DDE
+DN;Düren;KDN
+DO;Dortmund Hbf;EDO
+DOD;Dortmund-Dorstfeld;EDDP
+DOKI;Doberlug-Kirchhain;BDKO
+DON;Donauwörth;MDT
+DOWH;Dortmund Signal Idu.;EDWH
+DOWW;Dortmund-Wickede W;EDWW
+DS;Donaueschingen;RDO
+DU;Duisburg Hbf;EDG
+DUED;Dürrröhrsdorf;DRR
+DUEL;Dülmen;EDUL
+DZ;Delitzsch;LDL
+E;Essen Hbf;EE
+EALT;Essen-Altenessen;EEAL
+EB;Eilenburg;LEG
+EBB;Eberbach;REA
+EF;Erfurt Hbf;UE
+EGID;St Egidien;DEG
+EICH;Eichenberg;HEBG
+EIL;Lutherstadt Eisleben;LEL
+EILS;Eilsleben(Magdeb);LEI
+ELMS;Elmshorn;AEL
+ELW;Elsterwerda;BEW
+ELXL;Elxleben;UEX
+ELZE;Elze(Han);HELZ
+EMD;Emden Hbf;HE
+EMM;Emmerich;EEM
+EMMG;Emmerich(Gr);EXEM
+ENG;Engers;KENR
+ER;Erlangen;NER
+ERK;Erkelenz;KERZ
+ESA;Eisenach;UEI
+ESW;Eschwege-Niederhone;FONH
+ESWE;Eschwege;FEG
+EU;Euskirchen;KEU
+EUTG;Eutingen im Gäu;TET
+EW;Eberswalde Hbf;WE
+F;Frankfurt(Main)Hbf;FF
+FB;Friedberg(Hess);FFG
+FBE;Falkenberg(Elster);ILF
+FD;Fulda;FFU
+FDS;Freudenstadt Hbf;TFS
+FF;Frankfurt(Oder);BFP
+FFMF;Frankfurt(M)Flugh.;FFLF
+FFMN;Frankfurt-Niederrad;FNI
+FFMS;Frankfurt(Main)Süd;FFS
+FG;Freiberg(Sachs);DFR
+FH;Frankfurt-Höchst;FHOE
+FIN;Finnentrop;EFP
+FINK;Finkenkrug;BFIN
+FIW;Finsterwalde(Nl);BFW
+FKB;Frankenberg(Eder);FFRK
+FL;Flensburg;AF
+FLOE;Flöha;DFL
+FN;Friedrichshafen St.;TFS
+FOER;Förderstedt;LFD
+FOFR;Forbach(fr);XFFB
+FOR;Forst(Lausitz);BFO
+FR;Freiburg(Brsg)Hbf;RF
+FREI;Freilassing;MFL
+FRIJ;Bad Friedrichsh Hbf;TBF
+FROE;Fröndenberg;EFOE
+FROS;Frose;LFE
+FRT;Frankenthal Hbf;RFT
+FRW;Bad Freienwalde;WFW
+FS;Freising;MFR
+FSTD;Frankfurt(M)Stadion;FSP
+FUB;Fürstenberg(Havel);WF
+FUE;Fürth(Bay)Hbf;NF
+FUGR;Furth im Wald(Gr);NXFU
+FW;Fürstenwalde(Spree);BFUW
+G;Gera Hbf;UG
+GAI;Gaimersheim;MGH
+GAM;Gammertingen;TGMT
+GAP;Garmisch-Partenk.;MGP
+GC;Glauchau(Sachs);DGL
+GE;Gelsenkirchen Hbf;EG
+GEES;Geestgottberg;LGG
+GELN;Gelnhausen;FGEL
+GELT;Geltendorf;MGE
+GEM;Gemünden(Main);NGM
+GER;Germersheim;RGE
+GERO;Gerolstein;SGR
+GERS;Gerstungen;UGT
+GF;Gifhorn;HGI
+GG;Groß Gerau;FGER
+GHA;Geithain;LGH
+GHCB;Großenhain Cottb Bf;DGC
+GHW;Gensingen-Horrweiler;FGHO
+GI;Gießen;FG
+GLA;Gladbeck West;EGBW
+GLK;Geilenkirchen;KGEK
+GNT;Genthin;LGN
+GODE;Riedstadt-Goddelau;FGE
+GOE;Göttingen;HG
+GOES;Gößnitz;DGZ
+HAUS;Hausach;RHA
+HB;Bremen Hbf;HB
+HBS;Halberstadt;LHB
+HCH;Hechingen;THCH
+HD;Heidelberg Hbf;RHA
+HDL;Haldensleben;LHL
+HDO;Holzdorf(Elster);LHZ
+HE;Helmstedt;HHLM
+HEBO;Herborn(Dillkr);FHRB
+HEI;Heide(Holst);AHI
+HENN;Hennigsdorf(b Bln);BHND
+HER;Herne;EHER
+HERB;Herbertingen;THT
+HERL;Herlasgrün;DHN
+HERP;Hersbruck(r Pegnitz);NHR
+HERS;Bad Hersfeld;FBHF
+HERV;Hervest-Dorsten;EHDT
+HERZ;Herzogenrath;KHEZ
+HESE;Hesepe;HHES
+HET;Hettstedt;LHE
+HF;Herford;EHFD
+HH;Hamburg-Sternschanze;ASTZ
+HHAL;Hamburg-Altona;AA
+HHBD;Hamburg-Bergedorf;ABG
+HHDA;Hamburg Dammtor;ADF
+HHH;Hamburg Hbf;AH
+HI;Hildesheim Hbf;HHI
+HIDH;Hiddenh.-Schweicheln;HHIS
+HL;Lübeck Hbf;AL
+HM;Hameln;HHM
+HML;HannoverMesseLaatzen;HHML
+HN;Heilbronn Hbf;TH
+HNB;Herrnburg;WHB
+HO;Hof Hbf;NHO
+HOCK;Hockeroda;UHR
+HOE;Höchst(Odenw);FHT
+HOLT;Holthusen;WHO
+HOLZ;Holzminden;HHZM
+HOM;Homburg(Saar)Hbf;SHO
+HOR;Horb;THB
+HORK;Horka;BHR
+HORR;Horrem;KHR
+HOS;Hosena;BHC
+HOSP;Hochspeyer;SHY
+HRB;Herrenberg;THE
+HRO;Rostock Hbf;WR
+HST;Stralsund Hbf;WSR
+HU;Hanau Hbf;FH
+HUS;Husum;AHM
+HY;Hoyerswerda;BHW
+HZ;Herzberg(Harz);HHB
+IBB;Ibbenbüren;HI
+IGGR;Igel(Gr);SXIG
+IMM;Immendingen;RIM
+IN;Ingolstadt Hbf;MIH
+IS;Iserlohn;EIL
+IZ;Itzehoe;AIZ
+JB;Jüterbog;BJUE
+JE;Jessen(Elster);LJN
+JP;Jena Paradies;UJP
+JS;Jena Saalbf;UJS
+JUEB;Jübek;AJ
+JW;Jena West;UJW
+K;Köln Hbf;KK
+KA;Karlsruhe Hbf;RK
+KADU;Karlsruhe-Durlach;RKDU
+KAHL;Kahl(Main);FKLM
+KALD;Kaldenkirchen;KKAK
+KAM;Kamen;EKAM
+KAMZ;Kamenz(Sachs);DKA
+KAUF;Kaufering;MKFG
+KB;Korbach Hbf;FKOB
+KBFL;Köln/Bonn Flughafen;KFKB
+KBR;Königsbrück;DKB
+KDEU;Köln Messe/Deutz;KKDZ
+KE;Kempten(Allgäu)Hbf;MKP
+KEGR;Kehl(Gr);RXKL
+KEHL;Kehl;RKL
+KEHR;Köln-Ehrenfeld;KKER
+KF;Kaufbeuren;MKFB
+KH;Bad Kreuznach;SBKN
+KI;Kiel Hbf;AK
+KL;Kaiserslautern Hbf;SKL
+KLB;Kirchenlaibach;NKL
+KLE;Kleve;KKLV
+KLG;Kißlegg;TKG
+KO;Koblenz Hbf;KKO
+KOEB;Koblenz-Ehrenbreit.;KKOE
+KOEN;Königsbach(Baden);TKB
+KOET;Köthen;LK
+KOLZ;Koblenz-Lützel;KKOL
+KON;Könnern;LKO
+KR;Krefeld Hbf;KKR
+KREI;Kreiensen;HK
+KREU;Kreuztal;EKT
+KS;Kassel-Wilhelmshöhe;FKW
+KSHB;Kassel Hbf;FK
+KTW;Kettwig;EKG
+KUF;Kufstein;XAKN
+KW;Königs Wusterhausen;BKW
+L;Leipzig Hbf;LL
+LA;Landshut(Bay)Hbf;MLA
+LAA;Laage(Meckl);WLA
+LAGE;Lage(Lippe);ELAG
+LAUD;Lauda;TL
+LAUT;Lauterbach(Hess)Nord;FLAU
+LAWL;Langwedel;HLGW
+LB;Ludwigsburg;TLU
+LBB;Lübbenau(Spreewald);BLN
+LBG;Velbert-Langenberg;ELBG
+LCH;Laucha(Unstrut);ULCH
+LD;Landau(Pfalz)Hbf;RLA
+LEES;Leese-Stolzenau;HLST
+LEHR;Lehrte;HLER
+LEIF;Leinefelde;UL
+LER;Leer(Ostfriesl);HLEE
+LETM;Letmathe;ELE
+LEUT;Leutkirch;TLK
+LEVM;Leverkusen Mitte;KLMI
+LG;Lüneburg;ALBG
+LHFL;Leipzig/Halle Flugh;LFLU
+LI;Lindau-Insel;MLI
+LIF;Lichtenfels;NLF
+LIPP;Lippstadt;ELPP
+LIRE;Lindau-Reutin;MLIR
+LLEU;Leipzig-Leutzsch;LLEL
+LM;Limburg(Lahn);FL
+LMS;Limburg Süd;FLIS
+LN;Lübben(Spreewald);BLB
+LOEB;Löbau(Sachs);DL
+LOEH;Löhne(Westf);HL
+LOH;Lohmen;DLO
+LOLL;Lollar;FLOL
+LOW;Löwenberg(Mark);WLO
+LPLA;Leipzig-Plagwitz;LLP
+LSZ;Bad Langensalza;ULS
+LU;Ludwigshafen(Rh)Hbf;RL
+LUEN;Lünen Hbf;ELUE
+LUF;Ludwigsfelde;BLF
+LWL;Ludwigslust;WL
+M;München Hbf;MH
+MA;Mannheim Hbf;RM
+MAK;Marktredwitz;NMR
+MALS;Malsfeld;FMFH
+MARG;Markkleeberg-Großst;LMAG
+MCK;Mühlacker;TM
+MD;Magdeburg Hbf;LM
+MDR;Magdeburg-Rothensee;LMR
+MEHL;Mehltheuer;DMEH
+MEI;Meißen;DME
+MELL;Mellingen(Thür);UMEN
+MER;Merseburg Hbf;LMG
+MERK;Merklingen - S. Alb;TMKL
+MET;Mellrichstadt Bf;NME
+MG;Mönchengladbach Hbf;KM
+MH;Mülheim(Ruhr)Hbf;EMLR
+MI;Minden(Westf);HM
+MIDO;Michendorf;BMIP
+MIL;Miltenberg;NM
+MIN;Mindelheim;MMH
+MIW;Mittweida;DMW
+MM;Memmingen;MM
+MOST;München Ost;MOP
+MPAS;München-Pasing;MP
+MR;Marburg(Lahn);FMBG
+MS;Münster(Westf)Hbf;EMST
+MT;Montabaur;FMT
+MUE;Mühldorf(Oberbay);MMF
+MZ;Mainz Hbf;FMZ
+MZBI;Mainz-Bischofsheim;FMB
+N;Nürnberg Hbf;NN
+NAU;Nauen;BNAU
+NB;Neubrandenburg;WN
+NDD;Neudietendorf;UND
+NDF;Narsdorf;LNA
+NDH;Nordhausen;UN
+NE;Neuss Hbf;KN
+NEA;Neustadt(Aisch)Bahnh;NNA
+NECK;Mosbach-Neckarelz;RNZ
+NENN;Bad Nenndorf;HNDF
+NEUD;Neustadt(Dosse);WNS
+NEUF;Neufahrn(Niederbay);MNFR
+NEUK;Neukieritzsch;LNK
+NEUS;Neustadt(Sachs);DNE
+NEUZ;Neuzelle;BNZ
+NFS;Nürnberg Frankensta;NSTD
+NGM;Neckargemünd;RNM
+NHM;Bad Nauheim;FBNA
+NI;Nienburg(Weser);HNBG
+NIDA;Nidderau;FHWD
+NIDD;Nidda;FND
+NIDH;Niedernhausen(Ts);FNSD
+NILA;Niederlahnstein;KNL
+NK;Neunkirchen(Saar)Hbf;SNK
+NKN;Neukirchen(b Sulzb);NNS
+NMB;Naumburg(Saale)Hbf;UNM
+NMK;Neumark(Sachs);DNM
+NMO;Neumarkt(Oberpf);NNT
+NMS;Neumünster;AN
+NMV;Neumarkt-St Veit;MNR
+NMW;Neuenmarkt-Wirsberg;NNE
+NOE;Nördlingen;MNL
+NOM;Northeim(Han);HN
+NOR;Norden;HNN
+NP;Neuruppin West;WNRW
+NR;Neuwied;KNE
+NST;Nordstemmen;HNOS
+NW;Neustadt(Weinstr)Hbf;RN
+NWAL;Niederwalgern;FNL
+NZ;Neustrelitz Hbf;WNT
+OB;Oberhausen Hbf;EOB
+OBRO;Rödermark-Ob.Roden;FORD
+OD;Bad Oldesloe;AO
+OEB;Oebisfelde;LOE
+OERL;Oerlinghausen;EOER
+OEYN;Bad Oeynhausen;HOY
+OF;Offenbach(Main)Hbf;FO
+OG;Offenburg;RO
+OHA;Osterode a. H. Mitte;HOTM
+OKZ;Oberkotzau;NOKP
+OL;Oldenburg(Oldb)Hbf;HOLD
+OLD;Oldenburg(Holst);AOL
+OO;Oberoderwitz;DOZ
+OR;Oranienburg;BOR
+ORTR;Ortrand;BORT
+OS;Osnabrück Hbf;HO
+OST;Osterburken;TO
+OZ;Oschatz;DOT
+P;Potsdam Hbf;BPD
+PA;Passau Hbf;NPA
+PB;Paderborn Hbf;EPD
+PE;Peine;HP
+PEG;Pegnitz;NPZ
+PEGA;Pegau;LPG
+PF;Pforzheim Hbf;TPH
+PIR;Pirna;DPI
+PL;Plauen(Vogtl) ob Bf;DP
+PLA;Plaaz;WPZ
+PLAT;Plattling;NPL
+PLO;Plochingen;TP
+PLTH;Plaue(Thür);UPL
+PPIR;Potsdam Pirschheide;BPDP
+PRIB;Priemerburg;WPI
+PRIE;Priestewitz;DPR
+PRO;Probstzella;UPR
+PRWK;Pritzwalk;WPR
+PS;Pirmasens Nord;SPSN
+PULS;Pulsnitz;DPUL
+PUMS;Puttgarden(MS);AXP
+PUTT;Puttgarden;APU
+PW;Pasewalk;WP
+PZ;Prenzlau;WPL
+QFT;Querfurt;LQ
+QLB;Quedlinburg;LQB
+R;Regensburg Hbf;NRH
+RA;Rastatt;RRA
+RAT;Ratingen Ost;KRAO
+RCOL;Reichenbach(Ol);DRCH
+RCVO;Reichenbach(V) o Bf;DRC
+RD;Rendsburg;AR
+RDW;Radebeul-Kötzschenb;DRBK
+RE;Recklinghausen Hbf;ERE
+REM;Remagen;KRE
+RENN;Renningen;TRX
+RHED;Rheda-Wiedenbrück;ERDW
+RHEI;Rheine;HR
+RHH;Rheinhausen;KRH
+RIE;Riesa;DR
+RN;Rathenow;LRW
+RO;Rosenheim;MRO
+ROBL;Röblingen am See;LRN
+ROHR;Rohrbach(Saar);SRO
+ROIL;Rohrbach(Ilm);MRBI
+RONN;Ronneburg(Thür);DRON
+ROTT;Rottenbach;URTB
+ROW;Rotenburg(Wümme);AROG
+RS;Remscheid Hbf;KR
+RSL;Roßlau(Elbe);LR
+RT;Reutlingen Hbf;TRE
+RU;Rudolstadt(Thür);UR
+RUHL;Ruhland;BRU
+RW;Rottweil;TR
+RY;Rheydt Hbf;KRY
+S;Stuttgart Hbf;TS
+SAD;Schwandorf;NSCH
+SALZ;Salzburg Hbf;XASB
+SAW;Salzwedel;LSW
+SB;Saarbrücken Hbf;SSH
+SBC;Stuttgart-Bad Cannst;TSC
+SBG;Strasburg(Uckerm);WSB
+SBK;Schönebeck(Elbe);LSB
+SCHG;Schöna(Gr);DSN
+SCHH;Schaffhausen;XSS
+SCHL;Schlüchtern;FSUE
+SCHM;Schwelm;KSWE
+SCHW;Schwerte(Ruhr);ESRT
+SDH;Sondershausen;USH
+SDL;Stendal Hbf;LS
+SECK;Seckach;RSE
+SEES;Seesen;HSSN
+SFB;Senftenberg;BSN
+SFT;Staßfurt;LSF
+SG;Solingen Hbf;KSO
+SGH;Sangerhausen;USG
+SGM;Schwäbisch Gmünd;TSG
+SHA;Schwäb.Hall-Hessent;TSHT
+SHL;Suhl;USL
+SHS;Schönhausen(Elbe);LSH
+SI;Siegen Hbf;ESIE
+SIF;Schifferstadt;RSD
+SIG;Sigmaringen;TSIG
+SIGB;Siegburg/Bonn;KSIB
+SIHA;Siershahn;KSIH
+SIMB;Simbach(Inn);MSBI
+SIN;Singen(Hohentwiel);RSI
+SINS;Sinsheim(Elsenz) Hbf;RSM
+SLB;Sandersleben(Anh);LSL
+SLF;Saalfeld(Saale);US
+SLN;Schmölln(Thür);DSM
+SLZ;Bad Salzungen;USZ
+SM;Schmalkalden;USM
+SN;Schwerin Hbf;WS
+SO;Soest;ESOT
+SOEM;Sömmerda;USD
+SOL;Soltau(Han);HSO
+SON;Sonneberg(Thür)Hbf;USO
+SPAI;Spaichingen;TSP
+SR;Straubing;NST
+STD;Stade;AST
+STEI;Steinach(b Rothenb);NSTN
+STF;Straußfurt;USF
+STHM;Glauburg-Stockheim;FSTM
+STOL;Stolpen;DSTL
+SW;Schweinfurt Hbf;NS
+SWAA;Schwaan;WSN
+SWB;Schwarzenberg(Erzg);DSC
+SZRI;Salzgitter-Ringelh.;HSRI
+TANG;Tantow(Gr);WXT
+TBZ;Treuenbrietzen;BTZN
+TEL;Teltow;BTL
+TEU;Teuchern;UTEU
+THEM;Themar;UTH
+THH;Thalheim(Erzgeb);DTAL
+TP;Templin;WT
+TR;Trier Hbf;STR
+TREU;Treuchtlingen;MTL
+TREY;Treysa;FTS
+TRIP;Triptis;UTR
+TROI;Troisdorf;KT
+TS;Traunstein;MTS
+TUE;Tübingen Hbf;TT
+TUEH;Türkheim(Bay)Bf;MTHB
+TUEM;Türkismühle;STM
+TUT;Tuttlingen;TTU
+UCKR;Luckau-Uckro;BUK
+UE;Uelzen;HU
+UL;Ulm Hbf;TU
+UN;Unna;EUN
+VAI;Vaihingen(Enz);TV
+VER;Verden(Aller);HV
+VIE;Viersen;KV
+VIEN;Vienenburg;HVBG
+VK;Völklingen;SVL
+VS;Villingen(Schwarzw);RVL
+W;Wuppertal Hbf;KW
+WAB;Wabern(Bz Kassel);FWAB
+WAF;Warendorf;EWAF
+WAL;Wallau(Lahn);FWA
+WALK;Walkenried;HWKD
+WAN;Wanne-Eickel Hbf;EWAN
+WAR;Warburg(Westf);HWAR
+WB;Luth. Wittenberg Hbf;LW
+WBE;Wittenberge;WW
+WBG;Wiesenburg(Mark);BWG
+WBR;Wüstenbrand;DWD
+WDA;Werdau;DWR
+WDH;Waldheim;DWA
+WE;Weimar;UWM
+WEB;Westerburg;FWBG
+WEET;Weetzen;HWEZ
+WEID;Weida;UWE
+WEIL;Weil der Stadt;TW
+WEIN;Weinheim(Bergstr)Hbf;RWE
+WEL;Weilburg;FWG
+WEN;Weiden(Oberpf);NWDO
+WERH;Werder(Havel);BWE
+WERL;Werl;EWER
+WERN;Werneuchen;BWER
+WERT;Wertheim;TWT
+WES;Wesel;EWES
+WEST;Westerland(Sylt);AWLA
+WETZ;Wetzlar;FWR
+WF;Wolfenbüttel;HWOL
+WHSN;Wernshausen;UWH
+WI;Wiesbaden Hbf;FW
+WIBI;Wiesbaden-Biebrich;FWB
+WINN;Winnweiler;SWNW
+WIT;Witten Hbf;EWIT
+WITT;Wittingen;HWTT
+WIWA;Wiesloch-Walldorf;RWS
+WK;Wittstock(Dosse);WWK
+WM;Weilheim(Oberbay);MWH
+WN;Waiblingen;TWN
+WO;Worms Hbf;FWOR
+WOB;Wolfsburg Hbf;HWOB
+WOE;Wörth(Rhein);RWRT
+WRN;Waren(Müritz);WWR
+WSF;Weißenfels;UW
+WTH;Wilthen;DWT
+WTL;Wittlich Hbf;SWIH
+WUE;Würzburg Hbf;NWH
+WUED;Wünschendorf;DRF
+WUM;Wustermark;BWUS
+WUN;Wunsiedel-Holenbrunn;NHOB
+WUNS;Wunstorf;HWUN
+WWI;Weilerswist;KWES
+WZN;Wriezen;BWRZ
+Z;Zwickau(Sachs)Hbf;DZW
+ZE;Zerbst/Anhalt;LZE
+ZEUL;Zeulenroda unt Bf;UZU
+ZGGR;Zgorzelec(Gr);XPZG
+ZI;Zittau;DZ
+ZME;Zella-Mehlis;UZL
+ZS;Zossen;BZO
+ZZ;Zeitz;LZ
diff --git a/src/bahnhofname.gleam b/src/bahnhofname.gleam
index d75a8f6..3b9bbc3 100644
--- a/src/bahnhofname.gleam
+++ b/src/bahnhofname.gleam
@@ -4,6 +4,7 @@ import gleam/http.{Get}
import gleam/bit_builder.{BitBuilder}
import gleam/erlang/process
import gleam/erlang/atom
+import gleam/erlang/file
import gleam/io
import gleam/int
import gleam/string
@@ -129,6 +130,7 @@ fn lookup_station(
request: Request(t),
stations: Map(String, String),
ds100s: Map(String, String),
+ leitpunkte: Map(String, String),
baseurl: String,
fuzzy: fn (String) -> List(String)
) -> Response(BitBuilder) {
@@ -140,13 +142,29 @@ fn lookup_station(
200,
"ds100 → Name: " <> baseurl <> "/NN\n" <> "Name → ds100: " <> baseurl <> "/Nürnberg Hbf",
)
+ Request(method: Get, path: "/ds100/" <> path, ..) ->
+ path
+ |> unpercent
+ |> string.uppercase
+ |> lookup_exact(ds100s)
+ Request(method: Get, path: "/name/" <> path, ..) ->
+ path
+ |> unpercent
+ |> lookup_by_name(stations, ds100s, fuzzy)
+ Request(method: Get, path: "/leitpunkt/" <> path, ..) ->
+ path
+ |> unpercent
+ |> string.uppercase
+ |> lookup_exact(leitpunkte)
Request(method: Get, path: "/" <> path, ..) -> {
let path = unpercent(path)
let by_ds100 = lookup_exact(path, ds100s)
+ let by_lp = lookup_exact(path, leitpunkte)
- case by_ds100.0 {
- 200 -> by_ds100
+ case #(by_ds100.0, by_lp.0) {
+ #(200, _) -> by_ds100
+ #(_, 200) -> by_lp
_ -> lookup_by_name(path, stations, ds100s, fuzzy)
}
}
@@ -183,26 +201,25 @@ fn fetch_data() -> Result(String, hackney.Error) {
Ok(string.replace(response.body, "�", "ü"))
}
-fn read_csv() -> List(#(String, String)) {
- // let assert Ok(contents) = file.read(path)
- let assert Ok(contents) = fetch_data()
+fn read_csv(contents) -> List(List(String)) {
contents
// the file doesn't use quotes, so this is fine
|> string.split(on: "\n")
// drop CSV header
|> list.drop(1)
|> list.map(fn(a) { string.split(a, on: ";") })
- |> list.filter_map(fn(fields) {
- case fields {
- [_, ds100, name, ..] -> Ok(#(name, ds100))
- _ -> Error(fields)
- }
- })
}
pub fn main() {
+ let assert Ok(bahn_ril100) = fetch_data()
let baseurl = "https://bahnhof.name"
- let stations = read_csv()
+ let stations = read_csv(bahn_ril100)
+ |> list.filter_map(fn(fields) {
+ case fields {
+ [_, ds100, name, ..] -> Ok(#(name, ds100))
+ _ -> Error(fields)
+ }
+ })
let stationmap =
stations
|> map.from_list
@@ -220,6 +237,16 @@ pub fn main() {
-> map.from_list([#("id", ds100), #("name", name)]
)}}))
+ let assert Ok(leitpunkte_raw) = file.read("data/leitpunkte.csv")
+ let leitpunkte =
+ read_csv(leitpunkte_raw)
+ |> list.filter_map(fn(fields) {
+ case fields {
+ [lp, _, ds100] -> Ok(#(lp, ds100))
+ _ -> Error(fields)
+ }
+ })
+ |> map.from_list
let fuzzy = fn(searchterm: String) -> List(String) {
let query = query_new()
@@ -259,7 +286,7 @@ pub fn main() {
let _ = mist.run_service(
2345,
- fn(req) { lookup_station(req, stationmap, ds100map, baseurl, fuzzy) },
+ fn(req) { lookup_station(req, stationmap, ds100map, leitpunkte, baseurl, fuzzy) },
max_body_limit: 100,
)
process.sleep_forever()