api-trenitalia
API di trenitalia messe a disposizione tramite il portale lefrecce.it
Un semplice wrapper per le API di Trenitalia messe a disposizione tramite il portale lefrecce.it
La versione 2.0 del progetto comprende ora molte più funzionalità legate all'account, nonché una rivisitazione del codice per renderlo più semplciemente utilizzabile e testabile.
Feature
- Cercare un viaggio di sola andata
- Autocompletamento
- Cercare maggiori dettagli su una soluzione
- Cercare informazioni sui prezzi delle soluzioni
- Login/Logout
- Dettagli account
- Storico acquisti
- Download di biglietti in PDF
Esempi di utilizzo
-
Esempio di ricerca
const Trenitalia = ;const moment = ;async {const t = ;const stations_from = await t;const station_from = stations_from0name;const stations_to = await t;const station_to = stations_to0name;const date = ;const solutions = await t;console;};JSON di risposta:
-
Cerca tutte le tratte dalla prima città autocompletata per "milano" fino a "bari, prende la prima soluzione e ne stampa alcuni dettagli
const Trenitalia = ;const moment = ;async {const t = ;const stations_from = await t;const station_from = stations_from0name;const stations_to = await t;const station_to = stations_to0name;console;const date = ;const solutions = await t;const firstSolution = solutions0;console;console;console;console;console;console;console;console;console;const priceDetail = await t;console;let result = '';for const service of priceDetailleglist0travelerlist0servicelistconst firstOffer = serviceofferlist0;result += `\t\t punti \t€\t posti disponibili \n`const secondOffer = serviceofferlist1;result += `\t\t punti \t€\t posti disponibili \n`;console;};Output:
Partenza da: MILANO ( TUTTE LE STAZIONI ), arrivo a: BARI ( TUTTE LE STAZIONI )=== Prima soluzione disponibile ===Treno da: Milano CentraleTreno a: Bari CentralePartenza: Fri Feb 28 2020 13:10:00 GMT+0100 (GMT+01:00)Arrivo: Fri Feb 28 2020 20:27:00 GMT+0100 (GMT+01:00)Prezzo minimo: 185.6Durata: 07:17Numero cambi: 1Treni: FRECCIAROSSA 9539, FRECCIABIANCA 8811=== Alcune possibilità dalla prima soluzione ===EXECUTIVE BASE 142.1 punti 120€ 8 posti disponibili- Economy 125 punti €102.9 6 posti disponibiliBUSINESS SALOTTINO BASE 92.1 punti 70€ 8 posti disponibili- Economy 72 punti €49.9 8 posti disponibiliWORKING AREA BASE 92.1 punti 70€ 3 posti disponibili- Economy 72 punti €49.9 3 posti disponibiliBUSINESS AREA SILENZIO BASE 92.1 punti 70€ 16 posti disponibili- Economy 77 punti €54.9 16 posti disponibiliBUSINESS BASE 92.1 punti 70€ 119 posti disponibili- Economy 72 punti €49.9 22 posti disponibiliPREMIUM BASE 79.1 punti 57€ 53 posti disponibili- Economy 65 punti €42.9 10 posti disponibiliSTANDARD AREA SILENZIO BASE 78.1 punti 56€ 68 posti disponibili- CONVENZIONI 0 punti €0 68 posti disponibiliSTANDARD BASE 78.1 punti 56€ 266 posti disponibili- CONVENZIONI 0 punti €0 266 posti disponibili -
Effettua il login, stampa informazioni relative all'utente, dettagli relativi ad un acquisto e ne scarica il biglietto in PDF
const Trenitalia = ;async {username = '<USERNAME ACCOUNT TRENITALIA>';password = '<PASSWORD ACCOUNT TRENITALIA>';const t = ;if await tconsole;let result = await t;console;console;result = await t;console;console;const idsales = result0idsalesresult = await t;console;console;// Download del biglietto in pdf come "biglietto.pdf"const fileName = 'biglietto.pdf';result = await t;await t;};Output:
Login riuscitoDettagli utente:{name: <rimosso>,surname: <rimosso>,email: <rimosso>,cfcode: <rimosso>,cftype: 'CARTAFRECCIA_ARGENTO',cfstatus: 'ACTIVE',cfdescription: 'CARTAFRECCIA ARGENTO',points: <rimosso>,nextcftype: 'Gold',nextpoints: <rimosso>,mobile: <rimosso>,loyaltyFault: false,customerkey: <rimosso>,birthdate: <rimosso>,period: <rimosso>,loyaltyProfile: <rimosso>,loyaltyProgram: <rimosso>,originalPlatform: <rimosso>,customerCategory: <rimosso>,customerType: <rimosso>,channelId: <rimosso>,userType: <rimosso>,pointsBalanceNotUpdated: <rimosso>,individualInvoice: <rimosso>,commercialCards: <rimosso>}Primo acqusito del 2019:{idsales: <rimosso>,traveldescription: <rimosso>,purchasedate: <rimosso>,departuredate: <rimosso>,type: 'Ticket',status: 'Purchased',tsstatus: <rimosso>,channel: 'APP',showmore: true,expiration: null,pnr: <rimosso>,travelName: 'Il mio viaggio <rimosso>',tsid: <rimosso>,departureDatetime: <rimosso>,arrivalDatetime: <rimosso>,origin: <rimosso>,destination: <rimosso>,mainTransportTypes: [ 'TRAIN' ],typeCodes: <rimosso>,closed: false}Dettagli acqusito:{totalprice: 91.25,idsales: <rimosso>,odlist: [{tsid: 2,origin: <rimosso>,destination: <rimosso>,deptime: <rimosso>,arrtime: <rimosso>,direction: 'A',adultno: 1,childno: 0,price: 40.5,leglist: [Array],availoperations: [Object],discountcodelist: [],discountCodeMessage: null,saleCompanyIds: [Array],date: null,quantity: 1},{tsid: 1,origin: <rimosso>,destination: <rimosso>,deptime: <rimosso>,arrtime: <rimosso>,direction: 'R',adultno: 1,childno: 0,price: 50.75,leglist: [Array],availoperations: [Object],discountcodelist: [],discountCodeMessage: null,saleCompanyIds: [Array],date: null,quantity: 1}],email: <rimosso>,pdfallowed: true,ticketless: true,expdate: null,smsallowed: true,invoicerequest: false,mailError: false,isssueCreditNoteError: false,electronicValues: [],serviceType: 'SEAT',legToBookingsConfirmeds: [],subscriptioncode: 0,seatNotAssigned: false,taxiSharingEnable: false,paymentNotAuthorized: false}
Ringraziamenti
Purtroppo sono API piuttosto convolute e poco intuitive, per questo ringrazio il fondamentale aiuto di questo progetto:
Trenitalia-API di SimoDax, una wiki sul loro funzionamento
Visitate pure il suo sito simodax.github.io e mostrategli un po' di affetto.
Chi sono io
Io sono Trintragula (Daniele), dal 2017. Non usate questo codice per scopi malvagi e rispettate il servizio offerto.
Potete trovarmi scrivendo a danielescarinci42 (at) gmail (dot) com