Die Anzahl der Anfragen scheint auch begrenzt zu sein. Ich habe das
jetzt vielleicht 10x hintereinander gemacht und dann kommt:
Netzwerkfehler: HTTPSConnectionPool(host='v6.db.transport.rest',
port=443): Read timed out. (read timeout=10)
Christoph M. schrieb:> Die Anzahl der Anfragen scheint auch begrenzt zu sein. Ich habe> das> jetzt vielleicht 10x hintereinander gemacht und dann kommt:
Doku:
API status
..
Also, the new underlying APIs seem to have a much lower rate limit than
the old HAFAS API. ⚠️
....
No API Key
You can just use the API without authentication. There's a rate limit of
100 requests/minute set up.
Christoph M. schrieb:> Frank D. schrieb:>> https://v6.db.transport.rest/getting-started.html>> Danke, die API funktioniert.
Die "schiene"-Library [1] ist offenbar seit einiger Zeit nicht mehr
gepflegt worden. Der letzte Commit ist zwar erst neun Monate her, hat
aber lediglich den Sponsor "focsec" zur README.md und dessen Banner-PNG
hinzugefügt.
Ein weiterer Blick in den Quellcode der Library zeigt, daß dort nicht
die Bahn-API, sondern Web Scraping mit BeautifulSoup verwendet wird.
Klar, das kann man natürlich machen, aber sobald der Betreiber einer
solchen Website seinen HTML-Code ändert, funktioniert die
Datenextraktion oft nicht mehr.
> Sie scheint aber wesentlich komplizierter als die ursprüngliche> "schiene" Library.
Dann schreib' Dir halt was zur Vereinfachung; die APIs der Bahn sind
aber ein bisschen... sagen wir, unhandlich. Aber wenn Du eine
langfristig benutzbare Software entwickeln willst, wirst Du um deren
APIs kaum herum kommen.
[1] https://github.com/kennell/schiene
Matthias S. schrieb:> Ein T. schrieb:>> wirst Du um deren APIs kaum herum kommen>> Und auch die werden alle paar Jahre geändert werden.
Wow, man merkt: da spricht der "Fachmann". Äh, nicht. Denn die benutzen
diese APIs für ihre eigenen Informationssysteme und für externe Partner,
die sie bei Änderungen alle gleichzeitig updaten müßten, um nichts
kaputt zu machen. Darum sind die APIs natürlich versioniert, so daß
veraltete Versionen der APIS auch dann weiterhin funktionieren, wenn es
neue gibt. So macht man das nämlich, und die OpenAPI-Angebote der Bahn
sind unhandlich, lassen aber erkennen, daß sich dort jemand viele
Gedanken über Themen wie Langzeitstabilität gemacht hat.
Aber jetzt, lieber Matthias, habe ich eine Frage an Dich. Nämlich: wie
kommt man dazu, was zu einem Thema zu sagen, von dem man ganz
offensichtlich keine Ahnung und das man sich auch keinen
Sekundenbruchteil lang angesehen hat?
Ein T. schrieb:> kaputt zu machen. Darum sind die APIs natürlich versioniert, so daß> veraltete Versionen der APIS auch dann weiterhin funktionieren, wenn es> neue gibt.
Die Versionierung ist aber scheisse umgesetzt. Versionsnummer in den
Hostnamen ist ein nogo, technisch ist das nicht mal mehr RESTful.
Frank D. schrieb:> Die Versionierung ist aber scheisse umgesetzt. Versionsnummer in den> Hostnamen ist ein nogo, technisch ist das nicht mal mehr RESTful.
Möglicherweise wird es deshalb auch nicht über den Hostname gemacht.
In den JSON-Docs wird ein einheitlicher Hostname ohne Versionsnummer
angegeben. Die Versionsnummern stehen im Pfad, wie bei anderen
REST-Apis.
Christoph M. schrieb:> # Find connections from Mannheim Hbf to Stuttgart Hbf> connections = s.connections('Berlin Hbf', 'Hannover Hbf')
Wenn du von Mannheim nach Stuttgart willst, solltest du nicht nach
Verbindungen von Berlin nach Hannover suchen ;-)
Rolf M. schrieb:> Christoph M. schrieb:>> # Find connections from Mannheim Hbf to Stuttgart Hbf>> connections = s.connections('Berlin Hbf', 'Hannover Hbf')>> Wenn du von Mannheim nach Stuttgart willst, solltest du nicht nach> Verbindungen von Berlin nach Hannover suchen ;-)
PEP8: Comments that contradict the code are worse than no comments.
Always make a priority of keeping the comments up-to-date when the code
changes!
Christoph M. schrieb:> Noch besser: gar keine Kommentare und der Code muss so lesbar wie ein> Buch sein.
Findet man nur selten.
Oft gibt es eine ellenlange Lizenz am Anfang, aber überhaupt keinen
Hinweis darauf, was der Code eigentlich überhaupt machen soll.
Weil jemand meinte, daß der Code ja "so leicht lesbar wie ein Buch" sei.
Einbuchstabige Variablennamen inklusive, und damit meine ich nicht i und
p.
Harald K. schrieb:> Einbuchstabige Variablennamen inklusive, und damit meine ich nicht i und> p.
Ich nenne meine Variablen auch lieber "hans" und "joachim" und deren
Summe natürlich hans_joachim. Dann freuen sich die Kollegen, so haben
sie gleich einen persönlichen Bezug zu den beiden. :-)