Skip to content
jrromePublic

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Repository files navigation

Bot Renfe

Este proyecto es un bot automatizado que busca trenes en tu abono de Renfe y los selecciona por ti. El bot se encarga de refrescar la página y seleccionar el tren deseado, ahorrándote tiempo y esfuerzo.

Descripción

El bot está diseñado para ayudarte a encontrar y reservar trenes en tu abono de Renfe sin tener que estar constantemente refrescando la página. Una vez que inicias sesión y seleccionas el abono, podrás seleccionar una fecha y un trayecto (ida o vuelta) y los viajes (horas) que mejor te convengan. El bot intentará cogerlos indefinidamente hasta que consiga uno de ellos.

Requisitos

Tener Playwright junto con sus navegadores.

Para ejecutar este proyecto, necesitas tener instaladas las siguientes librerías de Python:

  • PyQt6
  • playwright

Puedes instalar todas las dependencias utilizando el archivo requirements.txt:

pip install -r requirements.txt

Instalación de Playwright

Después de instalar las dependencias, debes instalar los navegadores de Playwright:

playwright install chromium

Uso

Método recomendado (nuevo)

python main.py

Método legacy (todavía funciona)

python login.py

Nota: Este método mostrará una advertencia de deprecación pero seguirá funcionando correctamente.

Simplemente sigue las instrucciones en la interfaz gráfica.

Consideraciones

Renfe posiblemente solicite un captcha al iniciar sesión, por lo que se recomienda usar el inicio de sesión manual.

Arquitectura del Proyecto

El proyecto ha sido refactorizado desde un archivo monolítico (login.py con 1144 líneas) a una arquitectura modular:

botRenfe/
├── constants.py              # URLs, selectores CSS, timeouts, mensajes
├── config.py                 # Gestión de credenciales (carga/guarda)
├── models/
│   └── abono.py              # Clase AbonoInfo (datos de abonos)
├── browser/
│   ├── worker.py             # BrowserWorker (automatización con Playwright)
│   └── thread.py             # BrowserThread (gestión del event loop asyncio)
├── ui/
│   ├── dialogs.py            # LoginDialog (diálogo de inicio de sesión manual)
│   └── main_window.py        # RenfeBot (ventana principal)
├── main.py                   # Punto de entrada de la aplicación
└── login.py                  # Punto de entrada legacy (redirige a main.py)

Beneficios de la nueva arquitectura

  • Mantenibilidad: Cada módulo tiene una responsabilidad clara
  • Testabilidad: Componentes aislados, fácil de probar
  • Reutilización: BrowserWorker puede usarse sin la UI
  • Escalabilidad: Fácil añadir nuevas funcionalidades en los módulos apropiados
  • Organización: De 1 archivo → 12 archivos bien estructurados

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages