book-generator-orgmode/view_suivi_livre.py
2025-08-31 22:37:24 +02:00

97 lines
No EOL
3.5 KiB
Python
Executable file

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script pour visualiser les données du fichier suivi_livre.csv.
Ce script est à utiliser à la place d'exécuter directement le fichier CSV.
"""
import csv
import sys
from datetime import datetime
import os
def display_csv_data(csv_file='suivi_livre.csv'):
"""
Affiche les données du fichier CSV de suivi de livre de manière formatée.
"""
if not os.path.exists(csv_file):
print(f"Erreur: Le fichier {csv_file} n'existe pas.")
return False
try:
# Lire le fichier CSV
with open(csv_file, 'r') as csvfile:
reader = csv.reader(csvfile, delimiter=';')
data = []
for row in reader:
# Ignorer les lignes de commentaire qui commencent par #
if row and not row[0].startswith('#'):
data.append(row)
if not data:
print("Aucune donnée trouvée dans le fichier CSV.")
return False
# Afficher un en-tête
print("\n=== DONNÉES DE SUIVI DU LIVRE ===\n")
# Afficher les colonnes
print(f"{'Date':<25} {'Mots':<8} {'Intrigues':<10} {'Personnages':<12} {'Mots Perso':<12} {'Chapitres':<10} {'Sous-Chap':<10}")
print("-" * 90)
# Afficher chaque ligne de données
for row in data:
if len(row) >= 7: # S'assurer qu'il y a assez de colonnes
date = datetime.fromisoformat(row[0]).strftime('%Y-%m-%d %H:%M:%S')
mots = row[1]
intrigues = row[2]
personnages = row[3]
personnages_mots = row[4]
chapitres = row[5]
sous_chapitres = row[6]
print(f"{date:<25} {mots:<8} {intrigues:<10} {personnages:<12} {personnages_mots:<12} {chapitres:<10} {sous_chapitres:<10}")
# Afficher quelques statistiques
if data:
last_row = data[-1]
print("\n=== STATISTIQUES ===\n")
print(f"Nombre total de mots: {last_row[1]}")
print(f"Nombre de chapitres: {last_row[5]}")
print(f"Nombre de personnages: {last_row[3]}")
# Calculer la progression depuis la première entrée
if len(data) > 1:
first_row = data[0]
mots_diff = int(last_row[1]) - int(first_row[1])
print(f"\nProgression depuis le début du suivi: {mots_diff} mots")
return True
except Exception as e:
print(f"Erreur lors de la lecture du fichier CSV: {e}")
return False
def main():
"""
Fonction principale.
"""
# Utiliser le fichier spécifié en argument ou par défaut 'suivi_livre.csv'
if len(sys.argv) > 1:
csv_file = sys.argv[1]
else:
csv_file = 'suivi_livre.csv'
if not display_csv_data(csv_file):
print("\nPour analyser ces données de manière plus approfondie, utilisez:")
print("- follow_progress.py: pour mettre à jour et analyser les statistiques")
print("- generate_dashboard.py: pour générer un tableau de bord visuel")
return 1
print("\nPour analyser ces données de manière plus approfondie, utilisez:")
print("- follow_progress.py: pour mettre à jour et analyser les statistiques")
print("- generate_dashboard.py: pour générer un tableau de bord visuel")
return 0
if __name__ == "__main__":
sys.exit(main())