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