From 073c779109d502e474571f09a389c0eaf72189b1 Mon Sep 17 00:00:00 2001 From: Xavier Date: Thu, 27 Aug 2026 19:32:08 +0200 Subject: [PATCH] Modification openrouter image version payante --- modules/ai_media.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/modules/ai_media.py b/modules/ai_media.py index d1b6ba0..50078e8 100644 --- a/modules/ai_media.py +++ b/modules/ai_media.py @@ -67,21 +67,21 @@ def generer_image_huggingface(prompt: str) -> tuple: log_event("WARNING", "MEDIA", f"Échec HF : {e}") return None, f"Exception système : {str(e)}" -def generer_les_images(prompt: str, fichiers: list) -> tuple: +def generer_les_images(prompt: str, fichiers: list, premium: bool) -> tuple: trace = [] if fichiers: trace.append("🟢 Mode Image-to-Image") return f"*(BETA)* Le mode Image-to-Image est désactivé temporairement. \n\nFichiers : {', '.join(fichiers)}", "#ff9800", "Système", "En dev", trace - trace.append("🟢 Lancement Text-to-Image (OR + CF + HF)") + trace.append(f"🟢 Lancement Text-to-Image (Premium: {premium})") - # Exécution des TROIS API en parallèle + # Exécution en parallèle (OpenRouter n'est lancé QUE si premium est True) with concurrent.futures.ThreadPoolExecutor() as executor: - future_or = executor.submit(generer_image_openrouter, prompt) + future_or = executor.submit(generer_image_openrouter, prompt) if premium else None future_cf = executor.submit(generer_image_cloudflare, prompt) future_hf = executor.submit(generer_image_huggingface, prompt) - img_or, nom_modele_or = future_or.result() + img_or, nom_modele_or = future_or.result() if future_or else (None, None) img_cf = future_cf.result() img_hf, msg_hf = future_hf.result() @@ -92,7 +92,9 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple: fournisseurs_actifs = [] # Traitement OpenRouter - if img_or: + if future_or is None: + trace.append("⚪ OR : Ignoré (Mode Gratuit)") + elif img_or: nom_or = f"img_or_{int(time.time())}.png" with open(os.path.join(dossier_media, nom_or), 'wb') as f: f.write(img_or) reponse_md += f"### 🌐 OpenRouter ({nom_modele_or})\n![OpenRouter](/Media/{nom_or})\n" @@ -113,7 +115,7 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple: else: trace.append("🔴 CF : Échec") - # Traitement HuggingFace (Avec diagnostic intégré) + # Traitement HuggingFace if img_hf: nom_hf = f"img_hf_{int(time.time())}.png" with open(os.path.join(dossier_media, nom_hf), 'wb') as f: f.write(img_hf) @@ -127,14 +129,14 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple: reponse_md += f"### 🤗 HuggingFace (SDXL)\n*⚠️ Échec de la génération : {msg_hf}*\n\n" if not img_or and not img_cf and not img_hf: - return "*Échec critique : Aucune des 3 API n'a pu générer d'image.*", "#ff4444", "Système", "Erreur", trace + return "*Échec critique : Aucune API n'a pu générer d'image.*", "#ff4444", "Système", "Erreur", trace - return reponse_md, "#00e5ff", " + ".join(fournisseurs_actifs), "Moteur Triple-IA", trace + return reponse_md, "#00e5ff", " + ".join(fournisseurs_actifs) if fournisseurs_actifs else "Aucun", "Moteur Média", trace def router_media(prompt: str, type_media: str, premium: bool, fichiers: list) -> tuple: trace = [f"🟢 Routage Média : {type_media.upper()}"] if type_media == "image": - return generer_les_images(prompt, fichiers) + return generer_les_images(prompt, fichiers, premium) elif type_media == "video": return "*La génération vidéo nécessite une API payante.* \n\nPrompt : " + prompt, "#ff4444", "Système", "En attente API", trace return "Type de média non reconnu.", "#333", "Erreur", "Aucun", trace \ No newline at end of file