Files

57 lines
1.9 KiB
Python

"""
tg_notify.py — Envia el resumen diario del videoclub SOLO al canal IDD de Telegram.
Reutiliza el mecanismo de idd_channel.py (bot API) para que los mensajes
vayan exclusivamente al canal IDD (-1003967773087), nunca a otros sitios.
"""
import json
import sys
from pathlib import Path
REPO_NEGOCIO = Path(r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\scripts")
sys.path.insert(0, str(REPO_NEGOCIO))
import idd_channel # noqa: E402
def _formatear(fecha, items, novedades):
g = {"pelicula": [], "serie": [], "adulto": [], "otro": []}
for it in items:
tipo = it["tipo"]
g.setdefault(tipo, []).append(it)
totales = {k: len(v) for k, v in g.items()}
lineas = [f"🎬 *Videoclub {fecha}*",
f"Disponibles: {len(items)} · "
f"Novedades: {len(novedades)}",
""]
if novedades:
lineas.append(f"✨ *Novedades ({len(novedades)})*")
lineas.append("")
for it in novedades[:20]:
marca = {"pelicula": "🎬", "serie": "📺", "adulto": "🔞", "otro": "📁"}.get(it["tipo"], "📁")
y = f" ({it['year']})" if it["year"] else ""
lineas.append(f"{marca} {it['clean']}{y}")
if len(novedades) > 20:
lineas.append(f"... y {len(novedades) - 20} más")
return "\n".join(lineas)
def enviar_novedades(fecha, items, novedades):
texto = _formatear(fecha, items, novedades)
# Limitar a 3500 caracteres (limite de Telegram)
if len(texto) > 3500:
texto = texto[:3450] + "\n"
return idd_channel.send_message(texto)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Uso: python tg_notify.py 'texto'")
sys.exit(1)
texto = sys.argv[1]
# Estructura mínima para reutilizar _formatear manualmente
# (normalmente se llama desde videoclub.py con datos reales)
r = idd_channel.send_message(texto)
print(f"Enviado a IDD: {'OK' if r else 'fallo'}")