script de stats

This commit is contained in:
Tykayn 2025-02-23 16:59:59 +01:00 committed by tykayn
parent 6d77de4696
commit 759f30f628
7 changed files with 196 additions and 109 deletions

View file

@ -291,8 +291,6 @@ def find_slug_in_file_basename(file_basename) -> str:
if len(splitted) > 1:
slug = splitted[len(splitted)-1]
# final_slug=slug.replace("_cipherbliss_blog_","")
# final_slug=final_slug.replace("_blog_cil_gometz_","")
slug=enlever_premier_tiret_ou_underscore(slug)
slug = f"{year}/{slug}"
@ -302,7 +300,73 @@ def find_slug_in_file_basename(file_basename) -> str:
return slug
return None
def get_stats_on_all_websites():
"""
Retourne des statistiques sur tous les sites web dans le dossier sources/.
Pour chaque site, compte le nombre d'articles .org et trouve l'article le plus récent.
:return: Dictionnaire avec les stats par site
"""
stats = {}
base_dir = "sources"
# Parcourir tous les dossiers de sites dans sources/
for site in os.listdir(base_dir):
site_path = os.path.join(base_dir, site)
if not os.path.isdir(site_path):
continue
# Initialiser les stats pour ce site
stats[site] = {
'nb_articles': 0,
'nb_mots': 0,
'dernier_article': None,
'date_dernier_article': None
}
# Chercher les articles .org dans lang_fr et lang_en
for lang in ['lang_fr', 'lang_en']:
lang_path = os.path.join(site_path, lang)
if not os.path.exists(lang_path):
continue
# Lister tous les fichiers .org
org_files = [f for f in os.listdir(lang_path) if f.endswith('.org')]
stats[site]['nb_articles'] += len(org_files)
# Calculer le nombre total de mots pour ce dossier de langue
total_mots = 0
for org_file in org_files:
file_path = os.path.join(lang_path, org_file)
try:
with open(file_path, 'r', encoding='utf-8') as f:
contenu = f.read()
# Compter les mots en divisant par les espaces
total_mots += len(contenu.split())
except Exception as e:
print(f"Erreur lors de la lecture de {file_path}: {e}")
# Ajouter ou incrémenter le compteur de mots dans les stats
stats[site]['nb_mots'] += total_mots
# Trouver le fichier le plus récent
for org_file in org_files:
file_path = os.path.join(lang_path, org_file)
mod_time = os.path.getmtime(file_path)
if (stats[site]['date_dernier_article'] is None or
mod_time > stats[site]['date_dernier_article']):
stats[site]['date_dernier_article'] = mod_time
stats[site]['dernier_article'] = file_path
# Convertir le timestamp en date lisible
if stats[site]['date_dernier_article']:
stats[site]['date_dernier_article'] = datetime.fromtimestamp(
stats[site]['date_dernier_article']
).strftime('%Y-%m-%d %H:%M:%S')
return stats
def convert_org_to_html(org_file, output_html_file):
"""