Razorphyn / Informazioni-Treni-Italiani

Come ottenere informazioni dei treni trenitalia da ViaggiaTreno
22 stars 5 forks source link

Arrivi e partenze da stazione #1

Open roberto-arista opened 7 years ago

roberto-arista commented 7 years ago

Ciao! Prima di tutto grazie per aver pubblicato questo materiale, c'è veramente poco o niente online.

Sto tentando di scaricare dei dati relativi ad arrivi e partenze di una determinata stazione. Quello che non mi torna è il formato data che hai indicato nel file README.md: [FORMATO: Wed Jan 07 2015 18:58:25 GMT+0100 (ora solare Europa occidentale)]

Come lo trasformo in URL per scaricare i dati? Potresti fare un esempio funzionante?

Grazie

Razorphyn commented 7 years ago

Ciao, sono un po' arrugginito, perché è da tanto che non faccio nulla in ambito di programmazione e di questo "progetto" ricordo poco o nulla, però ho recuperato il codice che usavo inizialmente e questo è il formato data che invio: treni.zip

2017-02-16T09:30:00 codice per generare l'url: $url='http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/soluzioniViaggioNew/'.urlencode($_POST['staP']).'/'.urlencode($_POST['staA']).'/'.urlencode($_POST['dataP']); risultato: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/soluzioniViaggioNew/1700/5014/2017-02-16T09%3A30%3A00

roberto-arista commented 7 years ago

Thanks, you made my day :)

roberto-arista commented 7 years ago

Quindi se capisco bene, la query per le partenze di domani mattina dalle 9:30 dalla stazione di Alessandria dovrebbe essere: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/partenze/S00470/2017-02-03T09%3A30%3A00

In compenso ottengo come messaggio: Error 400: Unable to extract parameter from http request: javax.ws.rs.PathParam("orario") value is '2017-02-03T09:30:00' for public java.util.List it.trenitalia.viaggiatreno.service.ViaggiaTrenoService.getPartenze(java.lang.String,java.util.Date)

Ho interpretato male i tuoi appunti o è stato cambiato qualcosa nelle API di viaggiatreno dai tempi del tuo studio? Forse come input bisogna dare un intervallo di tempo invece che un orario specifico?

Nel php (lavoro in Python solitamente, quindi lo interpreto con molta fatica), mi sembra di capire che c'è anche un attributo tz $dateS=date('D M d Y H:i:s ').$_POST['tz']; da agganciare alla query. È per caso una timezone? Potrebbe essere quello l'errore?

roberto-arista commented 7 years ago

Sì, è chiaro. L'ho già messo online e provato. Il problema è che non c'è risultato per arrivi e partenza da una stazione.

Arrivano dati in merito alla ricerca dei nomi stazione, ma nessuno relativo ad arrivi e partenze.

screenshot 2017-02-03 10 25 04

Le soluzioni di viaggio invece funzionano senza problemi.

Razorphyn commented 7 years ago

Ok, scusa, non avevo capito a cosa ti stessi riferendo esattamente: da js passo come parametri la stazione e la timezone(tz) ricavata dal pc, invece in php attacco la data e ora attuale in questo formato: Wed Jan 07 2015 18:58:25 GMT+0100 (ora solare Europa occidentale)

$dateS=date('D M d Y H:i:s ').$_POST['tz']; Reference: Date php Quindi risultato: ..../viaggiatrenonew/resteasy/viaggiatreno/partenze/S00470/Fri%20Feb%2003%202017%2010:37:21%20GMT+0100%20(ora%20solare%20Europa%20occidentale) Inoltre mi sono accorto che c'è un url diverso: ...viaggiatrenonew/resteasy/viaggiatreno/partenze/...

roberto-arista commented 7 years ago

thanks, ti faccio sapere se riesco! ––– Roberto Arista ಠ_ಠ ––– Mobile (IT): +39 366 45 37 413 ––– My public PGP key is here http://projects.robertoarista.it/robertoArista_publicKey.txt –––

Il giorno 03/feb/2017, alle ore 10:51, Luca Grandi notifications@github.com ha scritto:

Ok, scusa, non avevo capito a cosa ti stessi riferendo esattamente: da js passo come parametri la stazione e la time zone ricavata dal pc, invece in php attacco la data e ora attuale in questo formato poi allegare all'url: Wed Jan 07 2015 18:58:25 GMT+0100 (ora solare Europa occidentale)

$dateS=date('D M d Y H:i:s ').$_POST['tz']; Reference: Date php https://secure.php.net/manual/it/function.date.php Quindi risultato: ..../viaggiatrenonew/resteasy/viaggiatreno/partenze/S00470/Fri%20Feb%2003%202017%2010:37:21%20GMT+0100%20(ora%20solare%20Europa%20occidentale) Inoltre mi sono accorto che c'è un url diverso: ...viaggiatrenonew/resteasy/viaggiatreno/partenze/...

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Razorphyn/Informazioni-Treni-Italiani/issues/1#issuecomment-277206864, or mute the thread https://github.com/notifications/unsubscribe-auth/ACHa2PepJ3MFFvqkZwGyVX40SMD6kCKJks5rYviEgaJpZM4L1TOn.

Razorphyn commented 7 years ago

Stavo riguardando il codice, che schifo, è pieno di errori, sistemo e ti invio tutto di nuovo

Razorphyn commented 7 years ago

Fatto, la risposta la vedi nella console e l'url viene stampatao nel file: php/url(così puoi controllare da web la risposta), treni.zip

roberto-arista commented 7 years ago

"Partenze e arrivi" ancora non mi funziona e l'url stampato nel file 'url' mi da come risultato [] Però se aggiusto la data dell'esempio che hai postato un paio di commenti più sopra in questo modo http://viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/partenze/S00470/Sat%20Feb%2004%202017%2012:00:00%20GMT+0100%20(ora%20solare%20Europa%20occidentale) funziona!

Razorphyn commented 7 years ago

Il rpoblema è come gestisco il codice stazione: index.php riga 195: var staP=$(this).parent().parent().parent().find('select.stazionePartenza').val().replace(/^\s*|\s*$/gmi, ''), In pratica ho rimosso .replace(/[\D]/gmi, '')

php/call.php riga 67-68

$urlArrivi='http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/partenze/'.rawurlencode ($_POST['staP']).'/'.rawurlencode ($dateS);
$urlPartenze='http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/arrivi/'.rawurlencode ($_POST['staP']).'/'.rawurlencode ($dateS);

In pratica da js tiravo via S e facevo un parseInt e quindi il codice stazione cambiava in modo "ignoto"(bisogna controllare il numero di cifre e aggiungere S e nel caso 0, troppo lungo per una demo).

Questo funziona: /partenze/S00470/Sat%20Feb%2004%202017%2011%3A36%3A18%20GMT%2B0100

umbriacato commented 7 years ago

Ciao Scusate se intervengo, ma per quanto riguarda i treni italotreno si riesce ad avere delle API? Grazie