04-ago: [videoclub] comando 'serie <nombre>' (temporadas/capitulos con enlaces) + filtros ampliados (peliculas sin limite de anio, series con subs ES/EN) + lecciones 43-48

This commit is contained in:
juanjo
2026-08-04 01:04:45 +02:00
parent 46af244e56
commit 35264ac8e5
3 changed files with 226 additions and 18 deletions

View File

@@ -180,6 +180,25 @@ def procesar(texto, chat_id):
else "❌ No se pudo añadir al NAS", chat_id)
elif t in ("pelis", "/pelis"):
procesar_pelis(chat_id)
elif t in ("series", "/series"):
procesar_series(chat_id)
elif t.startswith("serie ") or t.startswith("/serie "):
nombre = texto.split(" ", 1)[1].strip()
try:
import pelis
except Exception as e:
log(f"serie import error: {e}")
enviar("❌ No se pudo cargar el modulo pelis", chat_id)
return
enviar("🔎 Buscando la serie en el catálogo...", chat_id)
try:
mensajes, encontrada = pelis.buscar_serie(nombre)
except Exception as e:
log(f"serie buscar error: {e}")
enviar(f"❌ Error consultando el catálogo: {e}", chat_id)
return
for m in mensajes:
enviar(m, chat_id)
elif t in ("ayuda", "/ayuda", "help", "/help"):
enviar("Comandos:\n"
"<b>estado</b> — estado de la Pi\n"
@@ -189,6 +208,8 @@ def procesar(texto, chat_id):
"<b>youtube &lt;URL&gt;</b> — reproduce YouTube y apaga al terminar\n"
"<b>descargar &lt;enlace&gt;</b> — añade a Download Station del NAS\n"
"<b>pelis</b> — novedades en castellano con comando listo\n"
"<b>series</b> — series en castellano con comando listo\n"
"<b>serie &lt;nombre&gt;</b> — temporadas/capitulos de una serie con enlaces\n"
"<b>panorama</b> — fotos de las cámaras\n"
"<b>limpieza</b> — limpia procesos atascados de la Pi\n"
"<b>reboot</b> — reinicia la Pi (necesita confirmar con /confirmar-reboot)\n"
@@ -212,6 +233,44 @@ def procesar(texto, chat_id):
sh("echo 'raspberry' | sudo -S reboot")
def procesar_series(chat_id):
"""Comando 'series': series con buena calidad en castellano del catalogo,
con el comando 'descargar <url>' listo. Adultos efimeros (5 min)."""
try:
import pelis
except Exception as e:
log(f"series import error: {e}")
enviar("❌ No se pudo cargar el modulo pelis", chat_id)
return
try:
enviar("📺 Consultando series del catálogo...", chat_id)
mensajes, adultos = pelis.generar_series()
except Exception as e:
log(f"series generar error: {e}")
enviar(f"❌ Error consultando el catálogo: {e}", chat_id)
return
for m in mensajes:
enviar(m, chat_id)
if adultos:
lineas = [f"🔞 Contenido adulto ({len(adultos)} novedades) — se borrará en 5 min:"]
for it in adultos[:30]:
y = f" ({it['year']})" if it["year"] else ""
enlace = it.get("enlace") or ""
linea = f"{it['clean']}{y}"
if enlace:
linea += f"\n<code>descargar {enlace}</code>"
lineas.append(linea)
if len(adultos) > 30:
lineas.append(f"... y {len(adultos) - 30} más")
texto = "\n".join(lineas)
for parte in pelis.trocear_efimero(texto, adultos):
mid = enviar(parte, chat_id)
if mid:
threading.Timer(300, borrar, args=(chat_id, mid)).start()
def procesar_pelis(chat_id):
"""Comando 'pelis': novedades con buena calidad en castellano, con el
comando 'descargar <url>' listo para copiar. Los adultos se envian en