1
0
Fork 0
paraderos_led/GenPoster/import_data.py

99 lines
3.5 KiB
Python
Raw Normal View History

2023-12-26 13:40:39 -03:00
#!/usr/bin/env python3
import requests
import json
from datetime import datetime, timedelta
def api_request():
# URL de la API para "autentificación"
url_auth = 'https://transporte.hz.kursor.cl/api/auth/'
# Datos para autentificar
auth = '''{
"username": "usuario1",
"password": "usuario1"
}'''
# Request
token = requests.post(url_auth, data=auth)
token = token.json()['token']
# URL de la API para info del paradero
url_whoami = 'https://transporte.hz.kursor.cl/api/dispositivos/whoami/'
# Datos de la solicitud
data_whoami = {
"whoami": {
"idDispositivo": "pled30-gtr",
"KeyAuthorizacion": "token"
}
}
#Aquí se ingresa el token obtenido anteriormente
headers_whoami = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response_whoami = requests.post(url_whoami, json=data_whoami, headers=headers_whoami) #Request
Paradero = response_whoami.json()
url_getinfodevice = 'https://transporte.hz.kursor.cl/api/dispositivos/getInfoDevice/' # URL de la API para obtener los datos de los recorridos
# Datos para la solicitud
data_getinfodevice = {
"GetInfoDevice": {
"idDispositivo": "00000000160f3b42b8:27:eb:0f:3b:42",
"KeyAuthorizacion": "tokenSinUso"
}
}
#Aquí se ingresa el token obtenido anteriormente
headers_getinfodevice = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
# Request
response_getinfodevice = requests.post(url_getinfodevice, json=data_getinfodevice, headers=headers_getinfodevice)
info = response_getinfodevice.json()
return info
#--------------------------------------------------------------------------------------------------------------------------
#Haciendo una lista de todos los buses de este paradero
def lista_buses(info):
data_main = []
hora_actual = datetime.now().time()
for i in range(len(info["GetInfoDeviceResponse"]["DetalleLineas"])):
data = info["GetInfoDeviceResponse"]["DetalleLineas"][i]
bus_info = {}
bus_info["distance"] = data["Llegadas"][0]["DistanciaGPS"] if data["Llegadas"][0]["DistanciaGPS"] is not None else "-"
bus_info["timeLabel"] = data["Llegadas"][0]["EstimadaGPS"] if data["Llegadas"][0]["EstimadaGPS"] is not None else "-"
bus_info["route"] = data["Descripcion"][:-1] if data["Descripcion"] is not None else "-"
bus_info["direction"] = data["Descripcion"][-1] if data["Descripcion"] is not None else "-"
bus_info["number_background_color"] = data["colorFondo"]
bus_info["letter_background_color"] = data["colorTexto"]
bus_info["patente"] = data["Llegadas"][0]["patente"]
diff = timedelta(hours = datetime.strptime(bus_info["timeLabel"], "%H:%M:%S").time().hour - hora_actual.hour,minutes = datetime.strptime(bus_info["timeLabel"], "%H:%M:%S").time().minute - hora_actual.minute,seconds=datetime.strptime(bus_info["timeLabel"], "%H:%M:%S").time().second - hora_actual.second)
bus_info["timeRemaining"] = int(abs(diff.total_seconds() // 60))
data_main.append(bus_info)
return data_main
#--------------------------------------------------------------------------------------------------------------------------------
#Exportando datos
def export_data():
X = api_request()
data_main = lista_buses(X)
data_time = sorted(data_main, key=lambda x: x['timeRemaining'],reverse=True)
data_x = (data_time[0],data_time[1])
return data_x