nerrixde/DSBApi

Crash in fetch_api() wegen fehlgeschlagenem Login

Closed this issue · 6 comments

Hi,

Bei folgendem Code

import dsbapi
dsbapi.DSBApi("213061", "dsbgak").fetch_api()

gibt es einen Error.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/kangalioo/.local/lib/python3.7/site-packages/dsbapi/__init__.py", line 26, in fetch_entries
    timetable = self.fetch_api()
  File "/home/kangalioo/.local/lib/python3.7/site-packages/dsbapi/__init__.py", line 23, in fetch_api
    return json.loads(gzip.decompress(base64.b64decode(json.loads(timetable_data.text)["d"])))["ResultMenuItems"][0]["Childs"][0]["Root"]["Childs"][0]["Childs"][0]["Detail"]
IndexError: list index out of range

Ich habe herausgefunden, dass der Server als Antwort an die POST Request folgendes sendet:

{
    "Resultcode": 1,
    "ResultStatusInfo": "Login fehlgeschlagen",
    "StartIndex": -1,
    "ResultMenuItems": [],
    "ChannelType": 0,
    "MandantId": ""
}

Das heißt, der Login schlägt fehl. Die Nutzerdaten (Benutzername 213061, Passwort dsbgak) sind jedoch richtig.

Die haben wieder was geändert, ich schau mir das heute an...

Richtig ätzend, das zerschießt mir die gesamte Statistik

Ich schau mir das auch an.

Möglicherweise ist es zukünftig eine gute Idee, sowohl die Android-, als auch die Web-API zu unterstützen, um eine Fallback API zu haben. Falls eine der APIs geändert wird, könnte man auf die andere zurückfallen.

@kangalioo Habs behoben, pushe jetzt das Update

So, jetzt kann das Update via PiP oder vom Source gezogen werden.

Nice, scheint grundsätzlich zu funktionieren. Es gibt immer noch einen Crash, ich mache dafür eine neue Issue auf