nerrixde / DSBApi

API für die in Deutschland verbreitete DSBmobile App für Vertretungspläne an Bildungseinrichtungen
GNU General Public License v3.0
35 stars 6 forks source link

Crash in fetch_api() wegen fehlgeschlagenem Login #2

Closed kangalio closed 4 years ago

kangalio commented 4 years ago

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.

nerrixde commented 4 years ago

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

nerrixde commented 4 years ago

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

kangalio commented 4 years ago

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.

nerrixde commented 4 years ago

@kangalioo Habs behoben, pushe jetzt das Update

nerrixde commented 4 years ago

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

kangalio commented 4 years ago

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