06-sep: [videoclub] flujo unificado torrents/bajar en novedades+pelicula+serie, sin URLs, /limpiar borra todo el chat (IDD+OpenCode), parental CAROLINA con fallback MAC en vivo
This commit is contained in:
@@ -252,20 +252,29 @@ def formatear_peliculas(resultados):
|
||||
calidad = "4K" if "4k" in (it.get("name") or "").lower() or \
|
||||
"2160p" in (it.get("name") or "").lower() else "HD"
|
||||
idioma = "cast." if it.get("castellano") else "ing."
|
||||
enlace = it.get("enlace") or ""
|
||||
lineas.append(f"<b>{i}.</b> {it['clean']}{y} — {calidad}, {idioma}")
|
||||
if enlace:
|
||||
lineas.append(f" <code>descargar {enlace}</code>")
|
||||
lineas.append("")
|
||||
lineas.append("Responde con el <b>numero</b> para descargar.")
|
||||
lineas.append("Responde <b>/torrents NUMERO</b> para ver opciones y descargar.")
|
||||
return trocear_texto(lineas)
|
||||
|
||||
|
||||
def aplanar_series(grupos):
|
||||
"""Devuelve lista plana de episodios en el mismo orden de visualizacion
|
||||
(grupos ordenados, episodios ordenados). La usa el bot para que el numero
|
||||
elegido con /torrents coincida con lo mostrado."""
|
||||
planos = []
|
||||
for base in sorted(grupos, key=lambda x: x.lower()):
|
||||
for it in grupos[base]:
|
||||
planos.append(it)
|
||||
return planos
|
||||
|
||||
|
||||
def formatear_series(grupos):
|
||||
"""Formatea resultados de series como lista de mensajes Telegram numerados."""
|
||||
if not grupos:
|
||||
return ["No se encontraron series con ese termino."]
|
||||
lineas = []
|
||||
num_global = 1
|
||||
for base in sorted(grupos, key=lambda x: x.lower()):
|
||||
eps = grupos[base]
|
||||
temp_max = max(parsear_episodio(e["name"])[0] for e in eps)
|
||||
@@ -273,7 +282,6 @@ def formatear_series(grupos):
|
||||
lineas.append("")
|
||||
|
||||
temp_actual = 0
|
||||
num_global = 1
|
||||
for it in eps:
|
||||
temp, cap = parsear_episodio(it["name"])
|
||||
if temp != temp_actual:
|
||||
@@ -282,18 +290,15 @@ def formatear_series(grupos):
|
||||
lineas.append(f"<b>Temporada {temp}:</b>")
|
||||
resto = _limpiar_titulo_ep(it["name"][SERIE_EP_RE.search(it["name"]).end():]) \
|
||||
if SERIE_EP_RE.search(it["name"]) else it["clean"]
|
||||
enlace = it.get("enlace") or ""
|
||||
if temp > 0:
|
||||
etiqueta = f"S{temp:02d}E{cap:02d}"
|
||||
else:
|
||||
etiqueta = it["clean"]
|
||||
lineas.append(f" <b>{num_global}.</b> {etiqueta} — {resto}")
|
||||
if enlace:
|
||||
lineas.append(f" <code>descargar {enlace}</code>")
|
||||
num_global += 1
|
||||
lineas.append("")
|
||||
|
||||
lineas.append("Responde con el <b>numero</b> de episodio para descargar.")
|
||||
lineas.append("Responde <b>/torrents NUMERO</b> de episodio para ver opciones y descargar.")
|
||||
return trocear_texto(lineas)
|
||||
|
||||
|
||||
@@ -330,10 +335,9 @@ def formatear_novedades(items):
|
||||
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} <b>{i}.</b> {it['clean']}{y} — {idioma}")
|
||||
if enlace:
|
||||
lineas.append(f" <code>descargar {enlace}</code>")
|
||||
lineas.append("")
|
||||
lineas.append("Responde <b>/torrents NUMERO</b> para ver opciones y descargar.")
|
||||
return trocear_texto(lineas)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user