⚡ ajout de suivi de progression csv et doc de cronjob
This commit is contained in:
parent
c7383ed6ef
commit
d76e23bb65
6 changed files with 151 additions and 8 deletions
102
follow_progress.py
Executable file
102
follow_progress.py
Executable file
|
@ -0,0 +1,102 @@
|
|||
# met à jour un fichier de suivi pour chaque livre
|
||||
# le suivi se fait dans un fichier csv où chaque ligne est un compte rendu de statistiques du livre
|
||||
# colonnes du csv: date; mots; intrigues; personnages; personnages_mots;
|
||||
|
||||
import csv
|
||||
from datetime import date, timedelta, datetime
|
||||
|
||||
def mise_a_jour_suivi(fichier_csv, fichier_livre, fichier_personnages):
|
||||
# Lire le fichier livre.org
|
||||
with open(fichier_livre, 'r') as f:
|
||||
contenu_livre = f.read()
|
||||
mots_livre = len(contenu_livre.split())
|
||||
chapitres = contenu_livre.count('* ')
|
||||
sous_chapitres = contenu_livre.count('** ') + contenu_livre.count('*** ') + contenu_livre.count('**** ')
|
||||
|
||||
# Lire le fichier personnages.org
|
||||
with open(fichier_personnages, 'r') as f:
|
||||
contenu_personnages = f.read()
|
||||
personnages_mots = len(contenu_personnages.split())
|
||||
personnages = contenu_personnages.count('* ')
|
||||
|
||||
# Récupérer les valeurs pour les autres colonnes
|
||||
intrigues = 5
|
||||
|
||||
# Mettre à jour le fichier de suivi
|
||||
with open(fichier_csv, 'a', newline='') as csvfile:
|
||||
writer = csv.writer(csvfile, delimiter=';')
|
||||
now = datetime.now()
|
||||
ligne = [now.isoformat(), mots_livre, intrigues, personnages, personnages_mots, chapitres, sous_chapitres]
|
||||
writer.writerow(ligne)
|
||||
|
||||
# Exemple d'utilisation
|
||||
fichier_csv ='suivi_livre.csv'
|
||||
fichier_livre = 'livre.org'
|
||||
fichier_personnages = 'personnages.org'
|
||||
|
||||
def analyse_csv(fichier_csv):
|
||||
|
||||
with open(fichier_csv, 'r') as csvfile:
|
||||
reader = csv.reader(csvfile, delimiter=';')
|
||||
donnees = list(reader)
|
||||
|
||||
# Récupérer les dates et les nombres de mots
|
||||
dates = [datetime.fromisoformat(donnee[0]).date() for donnee in donnees]
|
||||
mots = [int(donnee[1]) for donnee in donnees]
|
||||
|
||||
|
||||
# Récupérer la date du jour
|
||||
aujourd_hui = date.today()
|
||||
oldest_count=0
|
||||
hier = aujourd_hui - timedelta(days=1)
|
||||
semaine_derniere = aujourd_hui - timedelta(days=7)
|
||||
mois_dernier = date(aujourd_hui.year, aujourd_hui.month - 1, aujourd_hui.day)
|
||||
|
||||
# Récupérer la valeur des mots la plus récente parmi celles de la date du jour
|
||||
mots_aujourd_hui = 0
|
||||
mots_aujourd_hui_start = 0
|
||||
most_recent = 0
|
||||
|
||||
# print("suivis: ",len(dates))
|
||||
most_recent = mots[len(dates)-1]
|
||||
|
||||
for i, date_ in enumerate(dates):
|
||||
|
||||
# trouver le premier décompte supérieur à 0
|
||||
if mots[i] > 0 and oldest_count == 0:
|
||||
oldest_count = mots[i]
|
||||
# print('oldest: ',oldest_count, " mots")
|
||||
if date_ == aujourd_hui:
|
||||
if mots_aujourd_hui_start == 0:
|
||||
mots_aujourd_hui_start = mots[i]
|
||||
print('au début du jour:' , mots_aujourd_hui_start)
|
||||
if date_ == aujourd_hui:
|
||||
mots_aujourd_hui = mots[i]
|
||||
|
||||
# Récupérer la valeur des mots la plus récente du jour précédent
|
||||
mots_hier = 0
|
||||
for i, date_ in enumerate(dates):
|
||||
if date_ == hier:
|
||||
mots_hier = mots[i]
|
||||
break
|
||||
|
||||
# Récupérer la valeur des mots la plus récente de la semaine dernière
|
||||
mots_semaine_derniere = 0
|
||||
for i, date_ in enumerate(dates):
|
||||
if semaine_derniere <= date_ < aujourd_hui:
|
||||
mots_semaine_derniere = mots[i]
|
||||
break
|
||||
|
||||
# Compter le nombre de mots changés aujourd'hui
|
||||
mots_changés_aujourd_hui = most_recent - mots_aujourd_hui_start
|
||||
|
||||
# Compter le nombre de mots changés depuis la date la plus récente dans la semaine dernière
|
||||
mots_changés_semaine_derniere = mots_aujourd_hui_start - mots_semaine_derniere
|
||||
|
||||
# Afficher le résultat
|
||||
print("Nombres de mots changés aujourd'hui : ", mots_changés_aujourd_hui)
|
||||
print("Nombres de mots changés depuis la date la plus récente dans la semaine dernière : ", mots_changés_semaine_derniere)
|
||||
print("Total : ", most_recent," mots")
|
||||
mise_a_jour_suivi(fichier_csv, fichier_livre, fichier_personnages)
|
||||
|
||||
analyse_csv(fichier_csv)
|
Loading…
Add table
Add a link
Reference in a new issue