Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Screen Mirror Ligero para Android 7

Proyecto pensado para tu caso: TV RCA antiguo con Android 7 y PC en red local.

No usa VLC ni software comercial. Hace mirroring por navegador con latencia baja y setup simple.

Como funciona

  • La PC captura pantalla con mss.
  • Comprime cada frame a JPEG en memoria.
  • Sirve la transmision por HTTP MJPEG con Flask.
  • El TV abre una URL local desde su navegador y reproduce el stream.

Este enfoque suele ser mas compatible con Android 7 que opciones modernas mas pesadas.

Requisitos

  • Windows con Python 3.10 o superior.
  • PC y TV en la misma red (idealmente LAN o WiFi 5G).

Inicio rapido (1 clic)

  1. Ejecuta start_stream.bat.
  2. En la consola veras una URL como http://192.168.1.50:8080 si usas el espejo standalone.
  3. Abre esa URL en el navegador del TV.

Ajustes utiles de rendimiento

Edita el comando en start_stream.bat y cambia:

  • --fps 12 si quieres menos carga y mas estabilidad.
  • --quality 55 para ahorrar ancho de banda.
  • --max-width 1280 y --max-height 720 para limitar el tamaño de salida.
  • --monitor 2 si quieres transmitir otra pantalla.

Valores recomendados para Android 7:

  • fps: 10 a 18
  • quality: 50 a 70
  • max-width: 960 a 1280
  • max-height: 540 a 720

Solucion de problemas

  • Si no carga en el TV, prueba primero desde el movil con la misma URL.
  • Si se corta, usa 5 GHz o cable LAN.
  • Si hay congelamientos, reduce fps, quality o scale.
  • Permite Python en el Firewall de Windows cuando lo pida.

Nota tecnica

  • Es video sin audio, optimizado para mirroring ligero y compatible.
  • Si luego quieres audio, se puede extender con WebRTC o RTSP.

Modo Telegram + URL fija TV (nuevo)

Este modo es para reproducir links de YouTube en una URL local fija del televisor, sin recargar manualmente.

  • Servicio principal TV: http://IP_DE_TU_PC:8081
  • URL fija TV: http://IP_DE_TU_PC:8081
  • Auto-refresh: la pagina detecta nuevos videos sola cada pocos segundos.
  • Cola: acepta varios links y los reproduce en orden.
  • Control remoto por Telegram: pausa, siguiente, volumen, estado y cola.

Configuracion

  1. Crea tu bot con BotFather y copia el token.
  2. Copia .env.example a .env.
  3. Rellena TELEGRAM_BOT_TOKEN en .env.
  4. Opcional pero recomendado: define TELEGRAM_ALLOWED_CHAT_ID para restringir acceso.

Inicio rapido

  1. Ejecuta start_tvbot.bat.
  2. Deja abierta en la tele la URL fija que imprime la consola.
  3. Desde Telegram manda links de YouTube al bot.

Nota: al iniciar, el launcher limpia automaticamente procesos huertanos antiguos del servicio en el puerto 8081 para evitar estados viejos y errores 404 por version mezclada.

Inicio con ventana grafica (sin consola)

  1. Ejecuta start_tvbot_gui.bat.
  2. La GUI arranca con una pantalla animada de saludo, te pide elegir un usuario y te deja decidir si el servidor debe encenderse al entrar.
  3. La ventana principal usa CustomTkinter con sidebar y secciones separadas: Dashboard, Mirroring, Reproductor, Biblioteca y Configuración.
  4. Cada usuario guarda su propia base visual local en tvbot_ui_state_<usuario>.json y su selección en tvbot_profiles.json.
  5. El panel de Configuración concentra lo avanzado: .env, updates, import/export y logs.

Nuevo panel web de administracion

El proyecto también expone un panel web moderno para usarlo desde la red local sin mezclar control y consumo:

  1. Abre http://IP_DE_TU_PC:8081/admin para el panel admin.
  2. Usa http://IP_DE_TU_PC:8081/home como vista de consumo separada para la biblioteca.
  3. Usa http://IP_DE_TU_PC:8081/watch como salida TV fija.
  4. El panel admin agrupa Dashboard, Mirroring, Biblioteca y Configuración en una sola interfaz dinámica, y la administración de biblioteca ya vive dentro de ese mismo panel.
  5. La estética evita el negro puro y usa un fondo oscuro suave para cansar menos la vista.
  6. La ruta heredada http://IP_DE_TU_PC:8081/admin_library queda como alias para entrar directo a la sección de biblioteca dentro del panel central.

Novedades de la UI local:

  • El inicio muestra un saludo animado y un selector de usuario.
  • La base para encender o apagar el servidor aparece al inicio y también en cada usuario dentro de la ventana principal.
  • El dashboard local se centra en acciones rápidas: series/películas, reproducción, programación y cambio de usuario.
  • La selección de usuario modifica la base visual local sin tocar la lógica del servidor o la biblioteca.

Novedades recientes en GUI:

  • El bloque de entorno inicial (.env) ahora queda oculto por defecto cuando ya terminaste la configuración inicial (TV_FIRST_SETUP_DONE=1).
  • Los mensajes de error/estado (banner inferior) ahora se ven correctamente y no quedan tapados por el contenido.
  • El inicio de mirror hace reintentos cortos en segundo plano para evitar fallos por arranque tardío del servicio.

La primera vez, si falta .env, la app lo crea desde .env.example para que completes el token.

Ejecutable Windows

Para generar el programa como .exe:

  1. Ejecuta build_exe.bat.
  2. El binario final queda en dist\TVBotStudio.exe.
  3. start_tvbot_gui.bat usa ese .exe si ya existe.

La GUI puede minimizarse a la bandeja del sistema para seguir en segundo plano.

Mini programa siempre activo

Si quieres que la PC quede a la espera desde que prende Windows:

  1. Ejecuta install_listener_autostart.bat una sola vez.
  2. Eso deja el listener en la carpeta de inicio de Windows.
  3. Al arrancar la PC, el listener queda esperando comandos de Telegram.
  4. Si mandas /play desde Telegram, el listener despierta el servicio principal y lo deja listo para reproducir.

Para quitarlo del inicio, borra el acceso directo TVBot Listener.lnk de la carpeta de inicio de Windows.

Auto inicio robusto (Tarea Programada)

Para iniciar la GUI automaticamente al entrar a Windows (mas confiable que Startup en algunos equipos):

  1. Ejecuta install_tvbot_task_autostart.bat una sola vez.
  2. Verifica estado con install_tvbot_task_autostart.bat --status.
  3. Para quitarlo, usa install_tvbot_task_autostart.bat --remove.

Auto Smart en GUI (nuevo)

La GUI ahora tiene una caja para pegar una URL y dos rutas:

  • Auto Smart -> TV: intenta resolver stream directo en paralelo y lo inyecta al TVBot.
  • Fallback mirror: abre la pagina en tu PC y usa mirroring para mostrarla en la TV.

Auto Smart multinivel:

  • Nivel 1: yt-dlp agresivo (cookies navegador, user-agent moderno, fallback chrome/firefox).
  • Nivel 2: requests + BeautifulSoup para detectar streams en HTML y scripts inline.
  • Nivel 3: Playwright headless para capturar .m3u8/.mp4 desde tráfico de red.

Si falla, la GUI muestra un diagnóstico por nivel con motivo exacto y sugerencia. Si falta Playwright, aparece banner con botón Instalar ahora.

Recomendacion:

  • Usa Auto Smart -> TV como opcion por defecto.
  • Si falla por DRM/anti-bot, usa Fallback mirror.

Reproductor y Cola (nuevo)

  • Puedes reordenar la cola desde la GUI arrastrando una tarjeta y soltándola sobre otra posición.
  • El orden se sincroniza con el servidor usando el mismo flujo que /mover A B.
  • Si prefieres Telegram, los comandos de cola siguen disponibles (/cola, /borrar N, /mover A B, /limpiar).

Control movil y metricas (nuevo)

Usando la misma URL base de TV:

  • http://IP_DE_TU_PC:8081/remote -> control movil con panel Ahora / Siguiente / Despues.
  • http://IP_DE_TU_PC:8081/metrics -> tablero de metricas en vivo.

API nueva:

  • GET /api/metrics
  • GET /api/diagnostic
  • POST /api/control/export_config (localhost)
  • POST /api/control/import_config (localhost)
  • POST /api/control/update/check (localhost)
  • POST /api/control/update/apply (localhost)

Biblioteca personal (nuevo)

Se agregó un módulo adicional y aislado para ver series/películas en la misma LAN sin logins ni PINes.

  • GET /home -> pantalla principal con salas, continuidad y reproductor HTML5.
  • GET / -> redirige a la pantalla principal de la biblioteca.
  • GET /admin_library -> alias heredado que redirige a /admin?section=library.
  • GET /api/library/state -> estado completo de la biblioteca.
  • POST /api/library/series -> crear serie.
  • POST /api/library/series/<series_id>/episodes -> agregar episodio.
  • POST /api/library/rooms/<room_id>/play -> reproducir y guardar progreso de la sala.
  • POST /api/library/rooms/<room_id>/progress -> heartbeat de progreso.
  • GET /library/stream/<episode_id> -> salida de reproducción para episodio local o YouTube resuelto.

Estado nuevo:

  • my_library.json

Notas:

  • Las tres salas quedan fijas como Sala 1, Sala 2 y Sala 3.
  • Sala 1 sigue siendo la base TV fija en /watch.
  • El progreso de cada sala se guarda de forma independiente.
  • La vista principal usa CSS/JS embebidos y no recarga al cambiar de sala o sección.

Comandos de Telegram

  • /estado
  • /cola
  • /pausar
  • /play
  • /siguiente
  • /volumen 80
  • /calidad auto|baja|media|alta
  • /directo URL (intenta primario y luego secundario)
  • /autosmart URL (prueba estrategias en paralelo)
  • /playlist URL [inicio]
  • /borrar N
  • /mover A B
  • /off [segundos|episodio|cola]
  • /canceloff
  • /ayuda
  • /diagnostico
  • /limpiar

Comando adicional en servicio principal:

  • /detener (apaga el servicio y vuelve a modo listener)

La calidad por defecto es auto (adaptativa). Puedes fijar el arranque en .env con TV_QUALITY_MODE=auto|baja|media|alta.

Persistencia y recuperacion:

  • El estado de sesion se guarda en tvbot_state.json (cola, actual, calidad, volumen).
  • Al reiniciar el servicio, la sesion se restaura automaticamente.
  • Si un stream del video actual expira, el servidor intenta renovar el link automaticamente; si falla, salta al siguiente.

Playlist con inicio:

  • Puedes enviar una playlist de YouTube con /playlist URL [inicio].
  • Ejemplo: /playlist https://www.youtube.com/playlist?list=XXXX 5
  • Importa en bloque comenzando desde ese indice (limite de carga por comando: 25).

Listener liviano (activar desde el telefono)

Si quieres tener solo un proceso minimo siempre activo, usa el listener:

  1. Ejecuta start_listener.bat.
  2. En Telegram usa /activar para encender el servicio completo.
  3. El listener cede el token al bot principal automaticamente.
  4. Para volver a listener, usa /detener desde el bot principal.

Comandos del listener:

  • /activar
  • /detenerpc
  • /estadopc
  • /off [segundos]
  • /canceloff

Observaciones

  • Las URLs directas generadas por yt-dlp pueden expirar tras unas horas.
  • Si un video falla por expiracion, vuelve a mandarlo al bot y se renueva.

Mirror health endpoint

El servidor stream_mirror.py expone:

  • GET /health

Campos principales:

  • fps_actual
  • frames_dropped
  • queue_size
  • latency_ms

Notas de mirror integrado en TV Bot:

  • Endpoint de control en servicio principal: POST /api/control/mirror/start y POST /api/control/mirror/stop.
  • Si el mirror no puede arrancar, ahora devuelve error real (por ejemplo monitor inválido o timeout de captura) para mostrar diagnóstico claro en GUI.

About

Alternativa para televisores con android 7, Despliega un servidor local para lanzar videos o peliculas, optimizado para yotuube y otros sitios aun no se logra solucionar para otras paginas

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages