From 391d9acae165b9c81e7fb2bb561806974ea5bd4e Mon Sep 17 00:00:00 2001 From: Xavier Date: Mon, 24 Aug 2026 19:44:44 +0200 Subject: [PATCH] =?UTF-8?q?D=C3=A9ploiement=20serveur=20pour=20test=20de?= =?UTF-8?q?=20g=C3=A9n=C3=A9ration=20multim=C3=A9dia=20(HuggingFace=20+=20?= =?UTF-8?q?Cloudflare)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/ai_media.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/modules/ai_media.py b/modules/ai_media.py index 5041cdb..362d939 100644 --- a/modules/ai_media.py +++ b/modules/ai_media.py @@ -2,10 +2,11 @@ import os import requests import time import concurrent.futures +import base64 # <-- NOUVEL IMPORT POUR DECODER L'IMAGE from modules.logger import log_event def generer_image_cloudflare(prompt: str) -> bytes: - """Appel à l'API Cloudflare Workers AI""" + """Appel à l'API Cloudflare Workers AI avec décodage Base64""" account_id = os.getenv("CLOUDFLARE_ACCOUNT_ID") api_token = os.getenv("CLOUDFLARE_API_TOKEN") if not account_id or not api_token: return None @@ -15,11 +16,22 @@ def generer_image_cloudflare(prompt: str) -> bytes: try: resp = requests.post(url, headers=headers, json={"prompt": prompt}, timeout=120) - if resp.status_code == 200: return resp.content + if resp.status_code == 200: + # On vérifie si Cloudflare nous répond en texte (JSON) + if "application/json" in resp.headers.get("Content-Type", ""): + data = resp.json() + if data.get("success") and "result" in data: + # On transforme le texte Base64 en véritable fichier image binaire + return base64.b64decode(data["result"]) + else: + # S'il répond nativement en binaire (parfois le cas selon la requête) + return resp.content except Exception as e: log_event("WARNING", "MEDIA", f"Échec Cloudflare : {e}") return None +# ... (le reste du fichier reste identique) + def generer_image_huggingface(prompt: str) -> bytes: """Appel à l'API HuggingFace""" api_key = os.getenv("HUGGINGFACE_API_KEY")