Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'NoneType' object has no attribute 'is_visible' #16

Open
jroman opened this issue Jun 3, 2024 · 8 comments
Open

'NoneType' object has no attribute 'is_visible' #16

jroman opened this issue Jun 3, 2024 · 8 comments
Assignees
Labels
bug Something isn't working

Comments

@jroman
Copy link

jroman commented Jun 3, 2024

Hola,

al rato de solicitar una búsqueda obtengo los siguientes dos mensajes:

Algo ha fallado, info:

'NoneType' object has no attribute 'is_visible'

Y en la consola:

La búsqueda ha fallado

Todo ello recién actualizado:

git pull
Updating ee6a967....
Fast-forward
 requirements.txt   |  4 ++--
 scraper/parser.py  | 10 +++++++---
 scraper/scraper.py | 45 +++++++++++++++++++++------------------------
 watcher/watcher.py |  2 +-
 4 files changed, 31 insertions(+), 30 deletions(-)

Saludos!

@emartinez-dev
Copy link
Owner

Hola. Acabo de arreglarlo, he visto que introduje un bug bastante tonto en la última versión. ¿Podrías probar ahora?
Si sigue sin funcionar, envíame los detalles de la búsqueda para que pueda debuggearlo más a fondo.

Un saludo!

@emartinez-dev emartinez-dev self-assigned this Jun 3, 2024
@emartinez-dev emartinez-dev added the bug Something isn't working label Jun 3, 2024
@jroman
Copy link
Author

jroman commented Jun 3, 2024

Te cuento:
Sin filtrar los resultados (hora, precio...)? (S/N)
OK, me devuelve rápidamente un montón de trenes.

Si filtro, porque me está mezclando AVEs con media distancia:

¿Quieres filtrar los resultados (hora, precio...)? (S/N)
S

💵 ¿Precio máximo? (introduce 0 si no quieres filtrar por precio)

32

⏳ ¿Duración máxima del trayecto? (introduce 0 si no quieres filtrar por duración)

1,5

🕒 ¿A partir de qué hora quieres salir? (hh:mm)

09:00

🕒 ¿Y llegar a tu destino? (hh:mm)

11:00

🕒 ¿A partir de qué hora quieres volver? (hh:mm)

19:00

🕒 ¿Y llegar a tu destino? (hh:mm)

20:00

🔎 Buscando billetes...

⚠️ (hasta que la aplicación esté terminada, esta búsqueda no te dejará volver a interactuar con el bot hasta que encuentre billetes o falle)

Algo ha fallado, info:

A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: message text is empty

Y en la consola:

Ya estoy corriendo! Corre a Telegram e interactúa conmigo
Búsqueda completada
No valid trains for the given filters
No valid trains for the given filters
La búsqueda ha fallado

Dudas:

  • el formato para duración ¿es correcto si pongo 1,5? (hora y media)

@jroman
Copy link
Author

jroman commented Jun 3, 2024

Lo que estoy viendo es que los trenes que me da el bot, luego miro en la aplicación de renfe y dice "Tren completo".
Entendía que este superbot sólo te avisaba de los trenes en los que había plaza...
Lo mismo tengo que pasar por la fase RFM... :)

@emartinez-dev
Copy link
Owner

Así funcionaba hasta que Renfe cambió la página jajaja, ahora está todo muy cogido con pinzas, de hecho el campo de duración no está haciendo nada, aunque debería ir en formato 1.5, utilizando punto en lugar de coma.

Respecto al problema de que notifica trenes que no tienen plazas, a veces en la web de Renfe ocurren cosas como esta. Aquí tenemos el tren de Schrödinger que está completo e incompleto a la vez. Probablemente si intentases comprar el que está disponible, no podrías. No puedo hacer mucho en este sentido, creo que es algo que deberían arreglar.

image

Ahora viajo más en avión que en tren y el bot está un poco abandonado, aunque me encantaría seguir manteniéndolo.

Quiero hacerle un refactor completo ahora que voy teniendo más conocimientos, si tienes alguna idea sobre cómo podría estructurar el proyecto para que sea más robusto, estaría encantado de escuchar tanto tu caso de uso como alguna idea de arquitectura, ya que entiendo que tú también desarrollas software y yo soy bastante junior.

Muchas gracias por tu tiempo!

@jroman
Copy link
Author

jroman commented Jun 4, 2024

notifica trenes que no tienen plazas:

Creo que es un problema del bot. Invariablemente me da todos los trenes y desdes la aplicación de renfe compruebo que algunos están "tren completo"

refactor completo

Si de verdad quieres divertirte te propondría que:

  • dejaras el campo de entrada "libre"
  • pasaras lo que diga el usuario por una IA que te saque los parámetros de la consulta
  • y ya conectaras con lo que tienes hecho (asegurando que el bot sólo avisa cuando hay tren disponible)

Saludos!

@jroman
Copy link
Author

jroman commented Jun 4, 2024

Otro caso de uso, buscando un tren de ida, filtrando por hora de salida 09:00 y hora de llegada 09:00 (hay un "tren completo" que sale a las 9:16)

En la consola:

Ya estoy corriendo! Corre a Telegram e interactúa conmigo
Búsqueda completada
No valid trains for the given filters
La búsqueda ha fallado

Y los mensajes del bot:

Algo ha fallado, info:

A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: message text is empty

@emartinez-dev
Copy link
Owner

Creo que es un problema del bot. Invariablemente me da todos los trenes y desdes la aplicación de renfe compruebo que algunos están "tren completo"

En este caso, es posible que no se esté devolviendo la misma información a través de la web que a través de la App. Si el bot te notifica de que un tren está disponible y haces el proceso de compra desde la web, es imposible que en el listado te aparezca el cartel de 'tren completo', probablemente te notifique de que está lleno una vez comiences el proceso de compra del billete.

buscando un tren de ida, filtrando por hora de salida 09:00 y hora de llegada 09:00 (hay un "tren completo" que sale a las 9:16)

En este caso en concreto no sé si se trata de una errata en tu mensaje ya que la hora de llegada es "Hora de llegada máxima", por lo que no encuentra un tren que salga a las 9 y llegue como muy tarde a las 9. Ese mensaje de error (No valid trains for the given filters) aparece cuando se introduce un filtro incoherente o para el que no hay trayectos planificados. Por ejemplo un horario para el que no hay trenes programados (si los hubiera pero estuvieran llenos, continuaría buscando hasta encontrar asiento) o entre un origen y destino que no están conectados.

Me apunto la idea para extraer los parámetros usando lenguaje natural, ya que el cuestionario que hay ahora mismo no es muy práctico ni agradable de usar.

Un saludo y gracias!

@jroman
Copy link
Author

jroman commented Jun 5, 2024

Esto es lo que sale hoy:
Exception: Origin or destination not found. Input: MADRID - ATOCHA CERCANÍAS - MANZANARES
aunque he visto que las dos estaciones están en estacionesEstaticas.js

  • Entendido lo del filtro hora llegada
  • Sugerencia: no trasladar las incomodidades de la página a tu desarrollo.
  • ¿Cada cuánto tiempo repite la consulta caso de que todos los trenes estén llenos?
  • ¿Posibilidad de filtrar por ID-tren?
  • Por si te da alguna idea: autogpt-telegram-chatbot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants