Update analyze_bob_hf.py
Browse files- analyze_bob_hf.py +44 -20
analyze_bob_hf.py
CHANGED
|
@@ -10,6 +10,7 @@ import torch
|
|
| 10 |
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
|
| 11 |
from datetime import datetime
|
| 12 |
import re
|
|
|
|
| 13 |
|
| 14 |
# Bootstrap environnement portable
|
| 15 |
try:
|
|
@@ -514,27 +515,50 @@ def analyze_files_hf(transcriptions_dir: Path, input_dir: Path, output_file: Pat
|
|
| 514 |
progress_fn(i, total)
|
| 515 |
log("")
|
| 516 |
|
|
|
|
| 517 |
if results:
|
| 518 |
-
|
| 519 |
-
|
| 520 |
-
|
| 521 |
-
|
| 522 |
-
|
| 523 |
-
|
| 524 |
-
f
|
| 525 |
-
|
| 526 |
-
|
| 527 |
-
|
| 528 |
-
|
| 529 |
-
|
| 530 |
-
|
| 531 |
-
|
| 532 |
-
|
| 533 |
-
|
| 534 |
-
|
| 535 |
-
|
| 536 |
-
|
| 537 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 538 |
else:
|
| 539 |
log("Aucune analyse réussie, pas de fichier de résumé généré")
|
| 540 |
return {"success": False, "count": total, "ok": 0}
|
|
|
|
| 10 |
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
|
| 11 |
from datetime import datetime
|
| 12 |
import re
|
| 13 |
+
import traceback
|
| 14 |
|
| 15 |
# Bootstrap environnement portable
|
| 16 |
try:
|
|
|
|
| 515 |
progress_fn(i, total)
|
| 516 |
log("")
|
| 517 |
|
| 518 |
+
# Version améliorée avec plus de debug :
|
| 519 |
if results:
|
| 520 |
+
try:
|
| 521 |
+
log(f"💾 Tentative de création du fichier: {output_file}")
|
| 522 |
+
log(f"📁 Dossier parent existe: {output_file.parent.exists()}")
|
| 523 |
+
|
| 524 |
+
# Créer le dossier parent
|
| 525 |
+
output_file.parent.mkdir(parents=True, exist_ok=True)
|
| 526 |
+
log(f"📁 Dossier parent créé/vérifié: {output_file.parent}")
|
| 527 |
+
|
| 528 |
+
# Écrire le fichier
|
| 529 |
+
with open(output_file, 'w', encoding='utf-8') as f:
|
| 530 |
+
f.write(f"# RÉSUMÉ DES BOB - {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}\n")
|
| 531 |
+
f.write(f"# Format: Auteur | Qualification | Titre | Durée\n")
|
| 532 |
+
f.write("# Qualification: P=papier, P+S=papier+son, QR=question-réponse\n")
|
| 533 |
+
f.write("# Durée: format MMss (ex: 1min04 = 104)\n")
|
| 534 |
+
f.write("# " + "="*70 + "\n\n")
|
| 535 |
+
for r in results:
|
| 536 |
+
line = f"{r['auteur']} | {r['qualification']} | {r['titre']} | {r['duree']}"
|
| 537 |
+
f.write(line + "\n")
|
| 538 |
+
|
| 539 |
+
log(f"✅ Fichier écrit avec succès: {output_file}")
|
| 540 |
+
log(f"📄 Contenu du fichier:")
|
| 541 |
+
with open(output_file, 'r', encoding='utf-8') as f:
|
| 542 |
+
content = f.read()
|
| 543 |
+
for line in content.split('\n')[:10]: # Afficher les 10 premières lignes
|
| 544 |
+
if line.strip():
|
| 545 |
+
log(f" {line}")
|
| 546 |
+
|
| 547 |
+
log("=" * 60)
|
| 548 |
+
log("RÉSUMÉ GÉNÉRÉ")
|
| 549 |
+
log("=" * 60)
|
| 550 |
+
log(f"Fichiers analysés: {total}")
|
| 551 |
+
log(f"Analyses réussies: {success_count}")
|
| 552 |
+
log(f"Analyses échouées: {total - success_count}")
|
| 553 |
+
log(f"Fichier de résumé: {output_file}")
|
| 554 |
+
log(f"📁 Contenu final du dossier output: {list(output_file.parent.iterdir())}")
|
| 555 |
+
|
| 556 |
+
return {"success": True, "count": total, "ok": success_count, "results": results}
|
| 557 |
+
|
| 558 |
+
except Exception as write_error:
|
| 559 |
+
log(f"❌ Erreur lors de l'écriture du fichier: {write_error}")
|
| 560 |
+
log(f"Traceback: {traceback.format_exc()}")
|
| 561 |
+
return {"success": False, "error": f"Erreur d'écriture: {write_error}"}
|
| 562 |
else:
|
| 563 |
log("Aucune analyse réussie, pas de fichier de résumé généré")
|
| 564 |
return {"success": False, "count": total, "ok": 0}
|