jacopo-j / TrenitaliaAPI

Reverse engineering dell'API dell'app di Trenitalia
https://blog.jacopojannone.com/2018/09/24/trenitalia-app-reversed.html
MIT License
38 stars 6 forks source link

c'è una difformità nella funzione _parse_date #1

Closed claudiofrancesconi closed 5 years ago

claudiofrancesconi commented 6 years ago

ho dovuto aggiungere il comando: string = string[:-3] + "00" perché praticamente il fuso veniva formato come "+xx:xx" anziché "+xxxx"

jacopo-j commented 6 years ago

Se ti riferisci agli orari inviati dal client: il server dovrebbe parsare correttamente il fuso orario nel formato +HH:MM, è ciò che gli manda l'applicazione. Se invece hai problemi a parsare una risposta del server probabilmente è perché non stai usando Python 3.7 ma una versione precedente.

claudiofrancesconi commented 6 years ago

uso python 3.7 e ho problemi lato client. boh. sarà forse che sono su mac

jacopo-j commented 6 years ago

Potresti postare il traceback dell'errore?

claudiofrancesconi commented 6 years ago

ok. scusami ma oggi è il classico giorno che impazzisco con pip... su osx è sempre un delirio... comunque era un mismatch sul tzinfo, appena posso lo rilancio e lo posto

albianto-polimi commented 5 years ago

File "/Users/Alberto/Downloads/TrenitaliaAPI-master/trenitalia.py", line 136, in _parse_date return datetime.strptime(string, "%Y-%m-%dT%H:%M:%S%z") TypeError: strptime() argument 1 must be str, not dict

Anche a me lo da su mac

jacopo-j commented 5 years ago

@albianto potresti postare il traceback completo e, se possibile, il codice che provoca questo errore? È riproducibile sempre?

albianto-polimi commented 5 years ago

Si, sempre. Ad esempio facendo: print(tb.timetable(station_id="830001701", ttype="arrival"))

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    print(tb.timetable(station_id="830001701", ttype="arrival"))      
  File "/Users/Alberto/Downloads/TrenitaliaAPI-master/trenitalia.py", line 444, in timetable
    chkpdate = self._parse_date(train["LastReachedCheckPointBase"])
  File "/Users/Alberto/Downloads/TrenitaliaAPI-master/trenitalia.py", line 136, in _parse_date
    return datetime.strptime(string, "%Y-%m-%dT%H:%M:%S%z")
TypeError: strptime() argument 1 must be str, not dict
jacopo-j commented 5 years ago

Con 1e5806fc14e2acb1e155ab34465e91a091592fe4 ho risolto il bug segnalato da @albianto, che comunque è diverso rispetto a quello originariamente segnalato da @claudiofrancesconi. Siccome il bug originale continua ad essere non riproducibile, chiudo comunque questo issue.