URL-Parameter der neuen Fahrplanauskunft? (Allgemeines Forum)
Bisher konnte man die alte Reiseauskunft so aufrufen:
reiseauskunft.bahn.de/bin/query.exe/d?S=Berlin%21&Z=Hamburg...
Die neue Auskunft dagegen braucht offenbar soid und zoid, um Verbindungen anzuzeigen
https://www.bahn.de/buchung/fahrplan/suche#sts=true
so=BERLIN
zo=HAMBURG
kl=2
r=13:16:KLASSENLOS:1
soid=A%3D1%40O%3DBERLIN%40X%3D13386988%40Y%3D52520501%40U%3D81%40L%3D8096003%40B%3D1%40p%3D1702322185%40
zoid=A%3D1%40O%3DHAMBURG%40X%3D9997434%40Y%3D53557110%40U%3D81%40L%3D8096009%40B%3D1%40p%3D1702322185%40
sot=ST
zot=ST
soei=8096003
zoei=8096009
hd=2023-12-14T16:12:55
hza=D
ar=false
s=true
d=false
hz=%5B%5D
fm=false
bp=false
– wenn man die aus der URL weglässt, kommt eine Fehlermeldung.
Das ist schade, denn offenbar kann man nun nicht mehr einen Link zu einer Verbindungssuche selbst bauen, so wie das noch bei der alten Reiseauskunft ging (PDF).
Oder hat jemand von Euch doch ein Idee, wie man nur den Bahnhofsnamen mitgeben kann und gleich ein Ergebnis erhält?
Ich würde nämlich gern weiterhin Verbindungssuchen vom Suchtool Trovu aus ermöglichen.
URL-Parameter der neuen Fahrplanauskunft?
Oder hat jemand von Euch doch ein Idee, wie man nur den Bahnhofsnamen mitgeben kann und gleich ein Ergebnis erhält?
Das dürfte nicht funktionieren.
soid und zoid müssen URLdecoded werden, z.B. hiermit:
https://www.urldecoder.org/
Beispiel für soid (=Startpunkt):
A%3D1%40O%3DBERLIN%40X%3D13386988%40Y%3D52520501 %40U%3D81%40L%3D8096003%40B%3D1%40p%3D1702322185%40
decodiert:
A=1@O=BERLIN@X=13386988@Y=52520501@U=81@L=8096003@B=1@p=1702322185@
Parameter "L" ist die IBNR (Bahnhofsnummer).
IBNR siehe hier:
https://de.wikipedia.org/wiki/Interne_Bahnhofsnummer
Die IBNR ist auch das einzig relevante. Wenn Du also alles auf "Berlin" lässt, aber die IBNR von Hamburg im Parameter L von soid einträgst, wird eine Verbindung ab Hamburg angezeigt, obwohl Berlin obendrüber steht.
Also wäre folgendes zu tun:
- Liste mit IBNR organisieren oder API, die IBNR für Bahnhofsnamen zurückgibt.
- IBNR für Abfahrtsbahnhof und IBNR für Ziel ermitteln
- Encodieren als soid und zoid
- Aufruf an bahn.de codieren
Bye. Flo.
IBNR API
API, die IBNR für Bahnhofsnamen zurückgibt.
Ich quote mich mal selbst und verweise auf die folgende API der Bahn:
Beispiel: Budenheim
https://www.bahn.de/web/api/reiseloesung/orte?suchbegriff=Budenheim&typ=ALL&lim...
Die gibt dann gleich alles zurück, was man als soid/zoid für die Fahrplanauskunft braucht.
Funktioniert auch in die Gegenrichtung, also Bahnhof zu IBNR finden:
Beispiel: 8001237
https://www.bahn.de/web/api/reiseloesung/orte?suchbegriff=8001237&typ=ALL&limit=10
Bye. Flo.
IBNR API
Vielen Dank für Deine Erläuterungen und Deinen Lösungsansatz!
Leider kann meine bestehende Infrastruktur bislang nicht einen vorherigen API-Call machen, das würde auch etwas den Rahmen der aktuellen Umsetzung sprengen. (Das Suchtool kann bislang eben nur Platzhalter in der URL befüllen und zu dieser dann umleiten.)
Aber vielleicht finde ich ja noch etwas in den bestehenden APIs. Du hast ja diesen Link angegeben:
https://www.bahn.de/web/api/reiseloesung/orte?suchbegriff=Budenheim&typ=ALL&lim...
Woher hattest Du den diesen API-Link? Wenn ich danach google, finde ich keine Ergebnisse. Vllt. finde ich ja noch etwas hilfreiches in den anderen APIs.
(Und sonst wundert mich auch, dass die DB offenbar wirklich die Möglichkeit abschaffen will, per einfacher Form ein Anreise-Widget auf die eigene Homepage zu setzen. Das dort verlinkte http://bahn.de/anreise führt nämlich zu einer 404.)
IBNR API
Leider kann meine bestehende Infrastruktur bislang nicht einen vorherigen API-Call machen, das würde auch etwas den Rahmen der aktuellen Umsetzung sprengen.
Da fällt mir grad auch nichts besseres ein. Du könntest noch JavaScript ausliefern, das die beiden Calls macht... Im Prinzip ists ja auch richtig, dass eine Fahrplanauskunft einen eindeutigen Start- und Endpunkt via IBNR bekommt.
Woher hattest Du den diesen API-Link?
Nachdem ich bei den offiziellen APIs nichts gefunden habe, hab ich geschaut, welche Requests die Webseite bahn.de macht. :)
(Und sonst wundert mich auch, dass die DB offenbar wirklich die Möglichkeit abschaffen will,
Ich glaube eher, dass die DB es einfach noch nicht geschafft hat, so ein Frontend auch für das neue System wieder bereitzustellen.
Bye. Flo.
IBNR API
Durch einen Hinweis von jemand anderem habe ich jetzt doch einen Weg gefunden:
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DHamburg
Leider klappt das aber offenbar nicht für alle Bahnhöfe, zB
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DBraunschweig
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DPotsdam
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DErfurt
Mit diesen aber geht es:
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DHamburg
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DKöln
Auch interessant ist, dass die von früher bekannte Eingabe mit Autokennzeichen klappt:
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3Dbs
Daher nehme ich an, dass "Braunschweig" evtl. nicht "eindeutig" genug ist (das Autokennzeichen aber schon). Aber "Hamburg" und "Köln" gehen, da die Auskunft sie auch als "HAMBURG" und "KÖLN" führt.
Man müsste also einen Weg finden, diese Eindeutigkeit herzustellen. Früher ging das ja mit Anhängen eines Ausrufezeichens. Leider nicht hier:
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DPotsdam!
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DPotsdam%21
Vielleicht kennst Du noch einen Weg, wie man die Eingabe für solche Stationen ermöglichen kann.
IBNR API
Leider klappt das aber offenbar nicht für alle Bahnhöfe, zB
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DBraunschweig
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DPotsdam
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DErfurt
Das liegt daran, dass weder "Braunschweig", noch "Potsdam", noch "Erfurt" Bahnhöfe sind. Berlin freilich auch nicht, da gibts aber ja den "Sammelsuchpunkt", der "Berlin" heißt. Mit "Potsdam-Babelsberg" und "Braunschweig-Gliesmarode" funktionierts aber freilich.
--
Weg mit dem 4744!
IBNR API
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DBraunschweig
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DPotsdam
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DErfurt
Vielleicht kennst Du noch einen Weg, wie man die Eingabe für solche Stationen ermöglichen kann.
Cool. Die "O="-Syntax kannte ich nicht. Vielleicht gibts ja da auch noch anderes außer dem "O"!?
Die Antworten hat JeDi ja schon gegeben. Hier klickbar:
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DBraunschweig%20Hbf
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DPotsdam%20Hbf
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3DBerlin&zoid=O%3DErfurt%20Hbf
Bye. Flo.
IBNR API
Genau. Aber meine Aufgabe ist damit noch nicht gelöst – ich möchte die neue URL eben in mein Suchtool Trovu integrieren.
Das heißt, ich möchte eine URL definieren nach den Muster:
https://www.bahn.de/buchung/fahrplan/suche#soid=O%3D<Start>&zoid=O%3D<Ziel>und den Nutzern ermöglichen, nicht unbedingt "Erfurt Hbf", sondern auch nur "Erfurt" einzugeben.
"ef" als Autokennzeichen klappt ja erfreulicherweise schon, also gehe ich davon aus, dass diese Eingabe intern von bahn.de irgendwie verarbeitet wird.
Daher kam ja auch meine Annahme, dass das Ausrufezeichen helfen könnte – was es aber leider nicht tut.
Wenn Euch dazu was einfällt, würde ich mir das sehr helfen. Gab es neben dem Ausrufezeichen noch andere "Tricks" in der alten Reiseauskunft?