ajout du control denvoi de message et interface up

This commit is contained in:
gpatruno
2025-07-20 04:34:00 +02:00
parent 75d9a65cc4
commit baefddd6b3
32 changed files with 3759 additions and 219 deletions
+129
View File
@@ -0,0 +1,129 @@
#!/usr/bin/env python3
"""
Script de test pour simuler l'API de traitement manuel des sous-titres
"""
import subprocess
import os
import json
from datetime import datetime
def process_subtitles_manual():
"""Simuler le traitement manuel des sous-titres"""
print("🧪 Test du traitement manuel des sous-titres")
print("=" * 50)
# Vérifier que le dossier record existe
record_dir = "record"
if not os.path.exists(record_dir):
print(f"❌ Dossier record non trouvé: {record_dir}")
return False
# Trouver les fichiers audio
audio_files = [f for f in os.listdir(record_dir) if f.endswith('.mp3')]
if not audio_files:
print(f"❌ Aucun fichier audio trouvé dans {record_dir}")
return False
print(f"{len(audio_files)} fichiers audio trouvés")
subtitles_created = 0
subtitles_data = {}
# Traiter chaque fichier audio (limiter à 2 pour le test)
for audio_file in audio_files[:2]:
audio_path = os.path.join(record_dir, audio_file)
print(f"🎵 Traitement de: {audio_file}")
try:
# Lancer Whisper
command = [
'whisper',
'--language', 'fr',
audio_path,
'--device', 'cuda',
'--model', 'large-v3'
]
print(f"📝 Commande: {' '.join(command)}")
result = subprocess.run(command, capture_output=True, text=True, timeout=60)
if result.returncode == 0:
# Lire le fichier .txt généré
txt_file = audio_file.replace('.mp3', '.txt')
if os.path.exists(txt_file):
with open(txt_file, 'r', encoding='utf-8') as f:
content = f.read().strip()
print(f"📝 Contenu brut: {content}")
# Nettoyer le contenu
content = content.replace("'", "").replace('"', "").replace("\n", " ").replace(",", "")
# Supprimer les répétitions de mots
words = content.split()
seen = set()
result_words = []
for word in words:
if word not in seen:
result_words.append(word)
seen.add(word)
cleaned_content = " ".join(result_words)
print(f"🧹 Contenu nettoyé: {cleaned_content}")
# Sauvegarder dans le stockage
current_time = datetime.now().strftime('%H:%M:%S')
subtitles_data[current_time] = cleaned_content
# Sauvegarder dans le fichier de stockage
storage_dir = "storage"
if not os.path.exists(storage_dir):
os.makedirs(storage_dir)
subtitle_file = os.path.join(storage_dir, "subtitle_data.json")
try:
with open(subtitle_file, 'r', encoding='utf-8') as f:
existing_data = json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
existing_data = {}
existing_data[current_time] = cleaned_content
with open(subtitle_file, 'w', encoding='utf-8') as f:
json.dump(existing_data, f, indent=4, ensure_ascii=False)
subtitles_created += 1
print(f"✅ Sous-titre créé et sauvegardé")
# Nettoyer les fichiers temporaires
os.remove(txt_file)
os.remove(audio_path) # Supprimer le fichier audio traité
print(f"🧹 Fichiers temporaires nettoyés")
else:
print(f"⚠️ Aucun fichier .txt généré pour {audio_file}")
else:
print(f"❌ Erreur Whisper: {result.stderr}")
except subprocess.TimeoutExpired:
print(f"⏰ Timeout pour {audio_file}")
continue
except Exception as e:
print(f"❌ Erreur pour {audio_file}: {e}")
continue
print(f"\n📊 Résumé: {subtitles_created} sous-titre(s) créé(s)")
print("📝 Sous-titres générés:")
for time_key, text in subtitles_data.items():
print(f" {time_key}: {text}")
return subtitles_created > 0
if __name__ == '__main__':
success = process_subtitles_manual()
if success:
print("\n✅ Test réussi ! Le traitement manuel fonctionne.")
else:
print("\n❌ Test échoué !")