-
Notifications
You must be signed in to change notification settings - Fork 10
API del sistema Viaggiatreno
N.B. Queste note sono frutto di ricerca personale e non di fonti FS. Non se ne garantisce la completezza e la validità nel tempo.
Le API sono accessibili all'URL http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/NOMEFUNZIONE/PARAMETRI... (metodo HTTP GET)
modificato il 21/05/2022 http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/andamentoTreno/IDStazionePartenza/numeroTreno/timestamp (esempio: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/andamentoTreno/S04203/2102/1651788000000)
Specificare la stazione di partenza è necessario perché, contrariamente a quanto si potrebbe pensare, il numero del treno non è univoco (ad esempio, con riferimento all'orario valido a maggio 2022, il numero 2107 identifica sia un regionale Torino-Novi Ligure sia un Milano-Como). Il timestamp da indicare, in millisecondi, è quello della mezzanotte della data odierna, può essere ottenuto insieme all'ID della stazione di partenza usando l'API cercaNumeroTrenoTrenoAutocomplete oppure calcolato direttamente.
Il dato è disponibile solo per la giornata in corso (ciò signfica che non è possibile monitorare per intero il percorso dei treni notturni che viaggiano a cavallo della mezzanotte).
Output: JSON
Campi principali (gli orari sono espressi in timestamp UNIX con millisecondi e arrotondati ai 30 secondi per difetto, i ritardi sono in minuti interi arrotondati per eccesso):
- idOrigine e idDestinazione: codici delle stazioni di partenza e destinazione
- origine e destinazione: nomi delle stazioni di partenza e destinazione
- orarioPartenza e orarioArrivo: orari programmati di partenza da origine e arrivo a destinazione in timestamp
- compOrarioArrivo e compOrarioPartenza: orari programmati di partenza da origine e arrivo a destinazione in formato HH:MM
- compRitardo e compRitardoAndamento: descrizione testuale del ritardo in varie lingue
- oraUltimoRilevamento e stazioneUltimoRilevamento: orario in timestamp e nome della stazione dell'ultimo rilevamento, valgono rispettivamente null e "--" se il treno non è ancora partito oppure è stato soppresso
- origineEstera, destinazioneEstera, oraPartenzaEstera, oraArrivoEstera: valorizzati solo per treni internazionali
-
tipoTreno e provvedimento codificano lo stato del treno:
- tipoTreno vale 'PG' e provvedimento vale 0: treno regolare
- tipoTreno vale 'ST' e provvedimento vale 1: treno soppresso (in questo caso l'array fermate ha lunghezza 0)
- tipoTreno vale 'PP' oppure 'SI' oppure 'SF' e provvedimento vale 0 oppure 2: treno parzialmente soppresso (in questo caso uno o più elementi dell'array fermate hanno il campo actualFermataType uguale a 3)
- tipoTreno vale 'DV' e provvedimento vale 3: treno deviato (da approfondire)
- subTitle se il treno è parzialmente soppresso (tipoTreno in ('PP', 'SI', 'SF')) contiene una descrizione della tratta cancellata (ad esempio: Treno cancellato da NOVI LIGURE a ALESSANDRIA. Parte da ALESSANDRIA)
-
fermate: array, un elemento per ogni fermata, con i seguenti campi principali:
- id e stazione: codice e nome della stazione
- tipoFermata: 'P' (stazione di origine), 'A' (stazione di destinazione), 'F' (fermata intermedia)
- ritardoArrivo e ritardoPartenza: ritardo in minuti di arrivo e partenza alla stazione, in minuti interi
- ritardo: ritardo in partenza (se tipoFermata=='P') e di arrivo altrimenti, in minuti interi
- arrivoReale e partenzaReale: orari effettivi di arrivo e partenza nella stazione, in timestamp
- partenza_teorica e arrivo_teorico: orari teorici di partenza e arrivo nella stazione, in timestamp - sono presenti dal 12 marzo 2015
- programmata: orario programmato di partenza (se tipoFermata=='P') e di arrivo altrimenti, in timestamp
- programmataZero: di solito vale null, è valorizzato in caso di orario riprogrammato
-
actualFermataType:
- 1 fermata regolare
- 2 fermata non prevista
- 3 fermata soppressa (se tipoTreno in ('PP', 'SI', 'SF'))
- 0 Dato non disponibile (arrivoReale e/o partenzaReale valgono null, può essere perché il treno è ancora in viaggio e deve ancora arrivare nella fermata oppure perché il dato non è stato rilevato)
- partenzaTeoricaZero e arrivoTeoricoZero: da approfondire
Esempio d'uso: https://github.com/roughconsensusandrunningcode/TrainMonitor/blob/master/demo-trainstatus.py
http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/tratteCanvas/IDStazionePartenza/numeroTreno/timestamp (esempio: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/tratteCanvas/S04203/2102/1620770400000)
Output JSON simile all'array fermate visto sopra
Ricerca delle soluzioni di viaggio tra due stazioni: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/soluzioniViaggioNew/IDStazionePartenza/IDStazioneArrivo/data-ora
Output: JSON
Gli ID delle stazioni vanno specificati senza il prefisso S e gli 0 iniziali (228 anziché S00228) e l'orario desiderato di partenza va indicato in formato YYYY-MM-DDTHH:MM:SS (esempio: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/soluzioniViaggioNew/228/458/2015-01-26T00:00:00)
Ricavare la stazione di partenza dal numero del treno: modificato il 06/05/2022
http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/numeroTreno
Output: stringa di una o più righe
esempio: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/2102 restituisce una riga
2102 - NOVI LIGURE|2102-S04203-1620770400000 (2102 è il numero del treno, NOVI LIGURE è il nome della stazione di partenza, S04203 il codice stazione da usare nelle chiamate ad andamentoTreno e alle altre API, 1620770400000 è il timestamp della mezzanotte della data odierna, anch'esso da usare nelle chiamate alle API
Se il numero del treno non è univoco, l'output sarà di più righe nello stesso formato:
http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/2107
2107 - TORINO PORTA NUOVA|2107-S00219-1651788000000
2107 - MILANO NORD CADORNA|2107-N00001-1651788000000
Elenco stazioni: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/autocompletaStazione/STRINGA
Restituisce l'elenco delle stazioni che iniziano con STRINGA, formato NOME STAZIONE|CODICE (esempio: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/autocompletaStazione/T restituisce tutte le stazioni che iniziano per T, per prime le più importanti e le altre in ordine alfabetico)
esempio output:
TORINO P.NUOVA|S00219
TAGGIA ARMA|S04506
TAGLIACOZZO|S08522
TAINO ANGERA|S01122
TALAMONA|S01426
TALAMONE|S08002
TAORMINA|S12317
...
http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/cercaStazione/STRINGA restituisce le informazioni di autocompletaStazione arricchite e in formato JSON
Trovare la regione di appartenenza di una stazione: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/regione/IDStazione restituisce il codice numerico della regione (vedi elenco: https://github.com/sabas/trenitalia/blob/master/regioni.tsv)
Dettagli stazione, tra cui le coordinate geografiche: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/dettaglioStazione/IDStazione/CodiceRegione (occorre passare il codice regione ottenuto chiamando l'API precedente - esempio: http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/dettaglioStazione/S00462/3 - S00462=Asti, 3=Piemonte) output: JSON
In questo gist https://gist.github.com/roughconsensusandrunningcode/b73a5166085ad2a4df9e ho messo un dump completo dei dati delle stazioni in formati csv e geojson
Per la descrizione di altre funzioni, vedi https://github.com/sabas/trenitalia e https://github.com/Razorphyn/Informazioni-Treni-Italiani