forked from TDTP/pantallas-led
Add files via upload
parent
c78b5e1251
commit
0d9f958762
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
sudo python3 testapi_full.py
|
||||
cd pantallas-led/GenPoster
|
||||
#docker build -t bus_poster .
|
||||
./run_container.sh
|
||||
cd example
|
||||
sleep 4
|
||||
feh poster.png
|
||||
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import requests
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
# 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)
|
||||
|
||||
# Estado de la respuesta
|
||||
if token.status_code == 200:
|
||||
# solicitud exitosa
|
||||
print('Respuesta de token exitosa!')
|
||||
else:
|
||||
# Error en la solicitud
|
||||
print('Error en la solicitud del token:', token.status_code, token.text)
|
||||
|
||||
token = token.json()['token']
|
||||
|
||||
print('-----------------------------------------------------')
|
||||
print('Token Obtenido: ' + token)
|
||||
print('-----------------------------------------------------')
|
||||
|
||||
#--------------------------------------------------------
|
||||
|
||||
# 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", #Aquí dejaron esta id por defecto....
|
||||
"KeyAuthorizacion": "token" #Autentificacion de mentira sisisi (la real está comenta después de esta variable
|
||||
}
|
||||
}
|
||||
|
||||
#Aquí se ingresa el token obtenido anteriormente
|
||||
headers_whoami = {
|
||||
'Authorization': f'Bearer {token}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
# Request
|
||||
response_whoami = requests.post(url_whoami, json=data_whoami, headers=headers_whoami)
|
||||
|
||||
# Estado de la respuesta
|
||||
if response_whoami.status_code == 200:
|
||||
# Solicitud exitosa
|
||||
print('Respuesta API "whoami" exitosa')
|
||||
else:
|
||||
# Error en la solicitud
|
||||
print('Error en la solicitud de API "whoami": ', response_whoami.status_code, response_whoami.text)
|
||||
|
||||
|
||||
Paradero = response_whoami.json()
|
||||
#print(json.dumps(Paradero, indent=4, ensure_ascii=False, sort_keys=True))
|
||||
|
||||
print('-----------------------------------------------------')
|
||||
|
||||
|
||||
# URL de la API para obtener los datos de los recorridos
|
||||
url_getinfodevice = 'https://transporte.hz.kursor.cl/api/dispositivos/getInfoDevice/'
|
||||
|
||||
# Datos para la solicitud
|
||||
data_getinfodevice = {
|
||||
"GetInfoDevice": {
|
||||
"idDispositivo": "00000000160f3b42b8:27:eb:0f:3b:42", #Para esta solicitud, pusieron la id del equipo que les dimos
|
||||
"KeyAuthorizacion": "tokenSinUso" #Autentificacion de mentira sisisi
|
||||
}
|
||||
}
|
||||
|
||||
#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)
|
||||
|
||||
# Estado de la respuesta
|
||||
if response_getinfodevice.status_code == 200:
|
||||
# Solicitud exitosa
|
||||
print('Respuesta API "GetInfoDevice" exitosa')
|
||||
else:
|
||||
# Error en la solicitud
|
||||
print('Error en la solicitud de API "GetInfoDevice": ', response_getinfodevice.status_code, response_getinfodevice.text)
|
||||
|
||||
info = response_getinfodevice.json()
|
||||
#print(json.dumps(info, indent=4, ensure_ascii=False, sort_keys=True))
|
||||
|
||||
print("----------------------------------------------------------")
|
||||
print("Cantidad de buses con llegada registrada en este paradero:", len(info["GetInfoDeviceResponse"]["DetalleLineas"]))
|
||||
print("----------------------------------------------------------")
|
||||
|
||||
#Haciendo una lista de todos los buses de este paradero
|
||||
|
||||
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)
|
||||
|
||||
#Cálculo del tiempo estimado de llegada para cada bus
|
||||
|
||||
data_time = sorted(data_main, key=lambda x: x['timeRemaining'])
|
||||
#data_time = data_main
|
||||
|
||||
print("Buses ordenados según hora de llegada:\n")
|
||||
print("Hora Actual (CL): ", datetime.now().strftime("%H:%M:%S"))
|
||||
print("Paradero N°", Paradero["WhoamiResponse"]["NroParadero"], Paradero["WhoamiResponse"]["NombreParadero"],"\n")
|
||||
|
||||
for n in data_time:
|
||||
#print(n)
|
||||
print("Recorrido:",n["route"],n["direction"],"| Patente:",n["patente"],"| Tiempo restante de llegada:", n["timeRemaining"],"minutos.")
|
||||
|
||||
print("--------------------------------------------------------------")
|
||||
|
||||
#Exportando datos
|
||||
|
||||
#def export_data():
|
||||
# data_x = (data_time[0],data_time[1])
|
||||
# return data_x
|
||||
|
||||
#data_x = (data_time[0],data_time[1])
|
||||
#print(data_x)
|
||||
|
||||
|
Loading…
Reference in New Issue