#!/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())