diff --git a/scripts/sounds/aviso_dalia.mp3 b/scripts/sounds/aviso_dalia.mp3
index 0825ce3..1eaee70 100644
Binary files a/scripts/sounds/aviso_dalia.mp3 and b/scripts/sounds/aviso_dalia.mp3 differ
diff --git a/videoclub/videoclub_buscador.py b/videoclub/videoclub_buscador.py
index a308691..a088dd2 100644
--- a/videoclub/videoclub_buscador.py
+++ b/videoclub/videoclub_buscador.py
@@ -228,8 +228,22 @@ def buscar_series(termino, items=None):
return grupos
+def trocear_texto(lineas, max_len=3500):
+ """Convierte lista de lineas en mensajes Telegram <= max_len sin partir lineas."""
+ mensajes, actual, long = [], [], 0
+ for linea in lineas:
+ if actual and long + len(linea) + 1 > max_len:
+ mensajes.append("\n".join(actual))
+ actual, long = [], 0
+ actual.append(linea)
+ long += len(linea) + 1
+ if actual:
+ mensajes.append("\n".join(actual))
+ return mensajes
+
+
def formatear_peliculas(resultados):
- """Formatea resultados de peliculas como lista numerada."""
+ """Formatea resultados de peliculas como lista de mensajes Telegram numerados."""
if not resultados:
return ["No se encontraron peliculas con ese termino."]
lineas = [f"๐ฌ Resultados ({len(resultados)}):", ""]
@@ -244,11 +258,11 @@ def formatear_peliculas(resultados):
lineas.append(f" descargar {enlace}")
lineas.append("")
lineas.append("Responde con el numero para descargar.")
- return [lineas]
+ return trocear_texto(lineas)
def formatear_series(grupos):
- """Formatea resultados de series como lista numerada por temporadas."""
+ """Formatea resultados de series como lista de mensajes Telegram numerados."""
if not grupos:
return ["No se encontraron series con ese termino."]
lineas = []
@@ -280,7 +294,7 @@ def formatear_series(grupos):
lineas.append("")
lineas.append("Responde con el numero de episodio para descargar.")
- return [lineas]
+ return trocear_texto(lineas)
def enlace_realdebrid(rd_id):
@@ -296,7 +310,7 @@ def enlace_realdebrid(rd_id):
return links[0] if links else None
-def generar_novedades(items=None):
+def generar_novedades(items=None, limite=20):
"""Devuelve listado de novedades recientes."""
if items is None:
items = fetch_catalogo()
@@ -304,7 +318,23 @@ def generar_novedades(items=None):
buenos = [it for it in normales if it["buena_calidad"]]
buenos.sort(key=lambda x: (int(x["year"] or 0), x["clean"] or ""),
reverse=True)
- return buenos[:20]
+ return buenos[:limite]
+
+
+def formatear_novedades(items):
+ """Formatea novedades como lista de mensajes Telegram numerados."""
+ if not items:
+ return ["No hay novedades recientes."]
+ lineas = [f"๐ฌ Ultimas novedades ({len(items)}):", ""]
+ for i, it in enumerate(items, 1):
+ y = f" ({it['year']})" if it["year"] else ""
+ tipo = "๐บ" if it["tipo"] == "serie" else "๐ฌ"
+ idioma = "cast." if it.get("castellano") else "ing."
+ enlace = it.get("enlace") or ""
+ lineas.append(f"{tipo} {i}. {it['clean']}{y} โ {idioma}")
+ if enlace:
+ lineas.append(f" descargar {enlace}")
+ return trocear_texto(lineas)
if __name__ == "__main__":
@@ -328,16 +358,18 @@ if __name__ == "__main__":
if cmd == "pelicula":
res = buscar_peliculas(arg)
- for line in formatear_peliculas(res):
- print(line)
+ for m in formatear_peliculas(res):
+ print(m)
+ print("---")
elif cmd == "serie":
res = buscar_series(arg)
- for line in formatear_series(res):
- print(line)
+ for m in formatear_series(res):
+ print(m)
+ print("---")
elif cmd == "novedades":
res = generar_novedades()
- for i, it in enumerate(res, 1):
- y = f" ({it['year']})" if it["year"] else ""
- print(f"{i}. {it['clean']}{y}")
+ for m in formatear_novedades(res):
+ print(m)
+ print("---")
else:
print(f"Comando desconocido: {cmd}")
diff --git a/vigilancia/pi_bot.py b/vigilancia/pi_bot.py
index b77b67d..5795ff6 100644
--- a/vigilancia/pi_bot.py
+++ b/vigilancia/pi_bot.py
@@ -362,38 +362,13 @@ def procesar_novedades(chat_id):
enviar("๐ฌ Consultando ultimas novedades...", chat_id)
try:
items = vcb.generar_novedades()
+ mensajes = vcb.formatear_novedades(items)
except Exception as e:
log(f"novedades error: {e}")
enviar(f"โ Error consultando el catรกlogo: {e}", chat_id)
return
- if not items:
- enviar("No hay novedades recientes.", chat_id)
- return
- lineas = [f"๐ฌ Ultimas novedades ({len(items)}):", ""]
- for i, it in enumerate(items, 1):
- y = f" ({it['year']})" if it["year"] else ""
- tipo = "๐บ" if it["tipo"] == "serie" else "๐ฌ"
- idioma = "cast." if it.get("castellano") else ""
- enlace = it.get("enlace") or ""
- lineas.append(f"{tipo} {i}. {it['clean']}{y} {idioma}")
- if enlace:
- lineas.append(f" descargar {enlace}")
- texto = "\n".join(lineas)
- # Trocear si es muy largo
- CHUNK = 3500
- partes = []
- actual = []
- long = 0
- for linea in lineas:
- if actual and long + len(linea) + 1 > CHUNK:
- partes.append("\n".join(actual))
- actual, long = [], 0
- actual.append(linea)
- long += len(linea) + 1
- if actual:
- partes.append("\n".join(actual))
- for parte in partes:
- enviar(parte, chat_id)
+ for m in mensajes:
+ enviar(m, chat_id)
def monitor_temperatura():