From 37dd1153a8b1f0017ef81b3d65e5d49531ef1ba9 Mon Sep 17 00:00:00 2001 From: rafa Date: Wed, 26 Aug 2026 14:16:07 -0400 Subject: [PATCH] fix(tts): sync_audio_to_prod.py respeta fea_audio_skip (issue #190) sync_one() solo comprobaba fea_audio_done, ignorando fea_audio_skip. El guard de #190 se anadio a tts_produce.py (generacion) pero nunca a este script (subida a prod), asi que cualquier post con audio local obsoleto de antes del hotfix (ej. #18036, pagina de cuentas/donaciones) volvia a publicarse en cuanto entrara en el cluster de una carta. Paso hoy con la carta 741: sync_audio_to_prod.py --carta 56290 restauro el mp3 de 3h27 en produccion. Revertido manualmente; este commit cierra el hueco. Tambien documenta el alcance correcto del TTS (solo ES, un mp3 por articulo, nunca multimedia) en la guia de Inma. Co-authored-by: rafa Signed-off-by: rafa --- docs/guia-tts-traduccion-inma.md | 9 +++++++++ scripts/sync_audio_to_prod.py | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/docs/guia-tts-traduccion-inma.md b/docs/guia-tts-traduccion-inma.md index dfdaa18..9305c6a 100644 --- a/docs/guia-tts-traduccion-inma.md +++ b/docs/guia-tts-traduccion-inma.md @@ -87,6 +87,15 @@ FEA_TTS_CARTAS="" python3 scripts/tts_produce.py Reanudable (no repite lo ya hecho, meta `fea_audio_done`) y con freno automático si la cuota de MiniMax se agota (para tras fallos seguidos, no se queda colgado). +**Alcance del TTS — qué NO llevar a audio (confusión real en la carta 741, 2026-08-26):** +- **Solo el artículo original en español.** Las traducciones (EN/FR/IT/PT) nunca llevan audio + propio — no meter los posts de traducción en la cola (`FEA_TTS_IDS`/`FEA_TTS_CARTAS`). +- **Un audio por artículo, nunca uno combinado de toda la carta.** `tts_produce.py` es correcto + (genera un mp3 por post). No usar `scripts/tts_carta.py` (legacy, concatena todos los artículos + de la carta en un único audio) — no es el flujo que se usa hoy. +- **Nunca la categoría `multimedia`** (término `multimedia`, id 1649 — ver + `scripts/aplicar_clasificacion_a_bd.py`). Esas piezas no se locutan. + **Publicar el audio en prod** (el paso anterior solo escribe en el WordPress local): ```bash python3 scripts/sync_audio_to_prod.py --carta diff --git a/scripts/sync_audio_to_prod.py b/scripts/sync_audio_to_prod.py index b7f8e08..74db05c 100644 --- a/scripts/sync_audio_to_prod.py +++ b/scripts/sync_audio_to_prod.py @@ -187,6 +187,13 @@ def save_state(state: dict) -> None: # ── Sync ───────────────────────────────────────────────────────────────────── def sync_one(post_id: int, state: dict, *, dry_run: bool) -> str: + # issue #190: páginas de cuentas/donaciones (ej. #18036 "numeros") llevan + # fea_audio_skip=1 desde el hotfix del 3-ago, pero pueden conservar un + # fea_audio_done=1 y un mp3 locales obsoletos de antes del guard. Sin este + # chequeo, cualquier --carta cuyo cluster las incluya vuelve a publicar el + # audio improcedente en prod (nos pasó el 26-ago con la carta 741). + if local_meta(post_id, "fea_audio_skip") == "1": + return "excluido (fea_audio_skip)" if local_meta(post_id, "fea_audio_done") != "1": return "sin-audio-local" if not (LOCAL_TTS_DIR / f"{post_id}.mp3").exists():