From 76c927f0d507d368fa08de98aed447a6cf6d8b7e Mon Sep 17 00:00:00 2001 From: ChemaVX Date: Sat, 4 Jul 2026 20:19:50 +0000 Subject: [PATCH] =?UTF-8?q?fix(ghost):=20Accept-Encoding=20gzip=20expl?= =?UTF-8?q?=C3=ADcito=20en=20publish=5Fdraft=20y=20men=C3=BA=20SEO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blindaje contra el default de aiohttp: si algún día se reinstala un backend brotli, las sesiones sin Accept-Encoding volverían a anunciar br y el decode roto de aiohttp 3.14 rompería la lectura de respuestas de Ghost (duplicando drafts). Con el header fijado no puede regresar. Co-Authored-By: Claude Fable 5 --- src/generator/generator.py | 5 +++++ src/seo/autofill.py | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/generator/generator.py b/src/generator/generator.py index 9c532f8..364d899 100644 --- a/src/generator/generator.py +++ b/src/generator/generator.py @@ -481,6 +481,11 @@ class GhostPublisher: headers={ "Authorization": f"Ghost {token}", "Accept-Version": "v5.0", + # Explícito para no heredar el default de aiohttp: si algún + # día se reinstala un backend brotli, el default anunciaría + # br y el decode roto de aiohttp 3.14 duplicaba drafts + # (fallo al leer la respuesta de un POST ya aceptado). + "Accept-Encoding": "gzip, deflate", }, ) as resp: if resp.status not in (200, 201): diff --git a/src/seo/autofill.py b/src/seo/autofill.py index 3b95d43..a0b6568 100644 --- a/src/seo/autofill.py +++ b/src/seo/autofill.py @@ -94,6 +94,10 @@ async def fetch_published_menu(lang: str) -> list[dict]: headers={ "Authorization": f"Ghost {token}", "Accept-Version": "v5.0", + # Explícito: sin esto, un backend brotli instalado haría + # que aiohttp anuncie br y su decode roto tumbe el menú + # ("using empty menu") — ver publish_draft. + "Accept-Encoding": "gzip, deflate", }, ) as resp: if resp.status != 200: