helltrain/main.py

88 lines
2.8 KiB
Python

#!/usr/bin/python3
import requests
import sys
import json
import time
from datetime import datetime
from dateutil import tz
from prettytable import PrettyTable as pt
trains = [ '18847', '18687', '18853', '18689', '18859', '18691' ]
ENDPOINT_TRAIN_METADATA = 'http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/'
ENDPOINT_TRAIN_DETAILS = 'http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/andamentoTreno/'
table = pt()
table.field_names = ['train', 'departure', 'destination', 'departed', 'delay']
for train in trains:
r = requests.get(ENDPOINT_TRAIN_METADATA + '/' + train)
if r.status_code != 200:
sys.exit(1)
metadata = None
try:
metadata = str(r.text).split('|')[1]
except:
pass
if metadata is not None:
splits = metadata.split('-')
from_station_number = splits[1]
today_timestamp = splits[2]
query = (ENDPOINT_TRAIN_DETAILS + '/' + from_station_number + '/' + train + '/' + today_timestamp).strip()
train_details = requests.get(query).text
train_json = json.loads(train_details)
# print(train_json)
current_timestamp = int(time.time()) # UTC
ultima = 'Vergate sul Membro'
partito = True
partenza_human = None
for fermata in train_json['fermate']:
effettiva = fermata['effettiva'] # orario di partenza effettivo (?)
stazione = fermata['stazione']
ritardo = fermata['ritardo']
progressivo = fermata['progressivo']
ultima = fermata['stazione']
if progressivo == 1 and effettiva == None:
partito = False
if stazione == 'CALENZANO':
partenza_utc = fermata['partenza_teorica'] / 1000
partenza_utc = datetime.utcfromtimestamp(partenza_utc)
partenza_utc = partenza_utc.replace(tzinfo=tz.gettz('UTC'))
partenza_local = partenza_utc.astimezone(tz.gettz('Europe/Rome'))
partenza_human = partenza_local.strftime('%H:%M')
ritardo = train_json['ritardo']
row = [ train, partenza_human, ultima, partito, ritardo ]
table.add_row(row)
else:
row = [ train, None, None, None, None ]
table.add_row(row)
# print('train:', train, 'departure:' , partenza_human, 'to:', ultima, 'departed:', partito, 'delay:', train_json['ritardo'], 'min')
"""
# stazione di partenza
if fermata['progressivo'] == 1:
programmata = fermata['programmata'] # UNIX timestamp seconds, UTC
effettiva = fermata['effettiva']
# l'unica vera stazione importante che ci interessa
if fermata['stazione'] == "CALENZANO":
programmata = fermata['programmata']
pass
"""
print(table)