- Implemented main.py to orchestrate the analysis of Jules Berton's letters collection. - Added read_excel_metadata.py to read and analyze the Excel file containing letter metadata. - Included functions for reading Excel files, analyzing structure, extracting letter information, and saving data to JSON. - Added error handling and user feedback for file operations and analysis steps. - Provided a summary of the analysis results and instructions for further usage.
123 lines
3.9 KiB
Python
123 lines
3.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Script principal pour analyser la collection des lettres de Jules Berton.
|
|
Ce script orchestre l'ensemble du processus d'analyse et de génération de documentation.
|
|
|
|
Auteur: Assistant IA
|
|
Date: Septembre 2025
|
|
"""
|
|
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def run_script(script_name, description):
|
|
"""
|
|
Exécute un script Python et affiche les résultats.
|
|
|
|
Args:
|
|
script_name (str): Nom du script à exécuter
|
|
description (str): Description de l'action
|
|
"""
|
|
print(f"\n🔄 {description}")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
# Utiliser l'interpréteur Python de l'environnement virtuel
|
|
python_path = Path(__file__).parent / ".venv" / "bin" / "python"
|
|
script_path = Path(__file__).parent / script_name
|
|
|
|
result = subprocess.run(
|
|
[str(python_path), str(script_path)],
|
|
capture_output=True,
|
|
text=True,
|
|
cwd=Path(__file__).parent
|
|
)
|
|
|
|
if result.returncode == 0:
|
|
print(result.stdout)
|
|
print(f"✅ {description} terminé avec succès")
|
|
else:
|
|
print(f"❌ Erreur lors de l'exécution:")
|
|
print(result.stderr)
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"❌ Erreur: {e}")
|
|
return False
|
|
|
|
return True
|
|
|
|
def main():
|
|
"""Fonction principale qui orchestre l'analyse complète."""
|
|
|
|
print("📚 ANALYSE COMPLÈTE DE LA COLLECTION JULES BERTON")
|
|
print("=" * 70)
|
|
print("Ce script va analyser le fichier Excel et générer une documentation complète.")
|
|
print()
|
|
|
|
base_path = Path(__file__).parent
|
|
excel_file = base_path / "Jules Berton - lettres, dates et lieux.xlsx"
|
|
|
|
# Vérifier la présence du fichier Excel
|
|
if not excel_file.exists():
|
|
print(f"❌ Le fichier Excel '{excel_file.name}' n'a pas été trouvé.")
|
|
print(f" Assurez-vous qu'il soit présent dans le répertoire: {base_path}")
|
|
return
|
|
|
|
print(f"✓ Fichier Excel trouvé: {excel_file.name}")
|
|
|
|
# Étape 1: Lecture des métadonnées Excel
|
|
success = run_script(
|
|
"read_excel_metadata.py",
|
|
"ÉTAPE 1: Lecture et analyse du fichier Excel"
|
|
)
|
|
if not success:
|
|
print("❌ Impossible de continuer sans les métadonnées Excel.")
|
|
return
|
|
|
|
# Étape 2: Génération du README
|
|
success = run_script(
|
|
"generate_readme.py",
|
|
"ÉTAPE 2: Génération du README.md avec métadonnées complètes"
|
|
)
|
|
if not success:
|
|
print("⚠️ Le README n'a pas pu être généré, mais les métadonnées sont disponibles.")
|
|
|
|
# Résumé final
|
|
print("\n📋 RÉSUMÉ DE L'ANALYSE")
|
|
print("=" * 50)
|
|
|
|
# Vérifier les fichiers générés
|
|
json_file = base_path / "lettres_metadata.json"
|
|
readme_file = base_path / "README.md"
|
|
|
|
if json_file.exists():
|
|
print(f"✅ Métadonnées JSON: {json_file.name}")
|
|
else:
|
|
print(f"❌ Métadonnées JSON: Non trouvé")
|
|
|
|
if readme_file.exists():
|
|
print(f"✅ Documentation: {readme_file.name}")
|
|
else:
|
|
print(f"❌ Documentation: Non trouvé")
|
|
|
|
print("\n🔧 FICHIERS UTILITAIRES DISPONIBLES:")
|
|
print("- read_excel_metadata.py : Analyse le fichier Excel")
|
|
print("- generate_readme.py : Génère le README.md")
|
|
print("- lettres_metadata.json : Métadonnées au format JSON")
|
|
|
|
print("\n📖 UTILISATION:")
|
|
print("1. Pour re-analyser le fichier Excel:")
|
|
print(" python read_excel_metadata.py")
|
|
print("\n2. Pour régénérer le README:")
|
|
print(" python generate_readme.py")
|
|
print("\n3. Pour une analyse complète:")
|
|
print(" python main.py")
|
|
|
|
print(f"\n✨ Analyse terminée! Consultez le fichier README.md pour la documentation complète.")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|