# list_recent_articles.py import os import glob import argparse from website_config import configs_sites # Configurer argparse pour prendre le blog en argument parser = argparse.ArgumentParser(description='Générer une liste des derniers articles de blog.') parser.add_argument('blog', type=str, help='Nom du dossier du blog à traiter', default='tykayn_blog') args = parser.parse_args() template_content = configs_sites[args.blog] if template_content is None: print(f"Erreur : template_content est indéfini pour le blog donné: {args.blog}.") exit(1) last_n_articles=10 source_dir = f"sources/{args.blog}/lang_fr" output_file = f"sources/{args.blog}/build/latests_posts.org" converted_latest_posts_path=f"sources/{args.blog}/build/latests_posts.html" # Vérifier si le dossier source existe if not os.path.isdir(source_dir): print(f"Le dossier {source_dir} n'existe pas") exit(1) # Trouver les 10 fichiers les plus récents org_files = sorted(glob.glob(os.path.join(source_dir, "*.org")), key=os.path.getmtime, reverse=True)[:last_n_articles] # Créer ou écraser le fichier de sortie with open(output_file, 'w', encoding='utf-8') as out_file: out_file.write("#+TITLE: Articles récents\n\n") for file in org_files: with open(file, 'r', encoding='utf-8') as f: content = f.readlines() # Trouver le titre de premier niveau title = None for line in content: if line.startswith("* "): # Titre de premier niveau title = line[2:].strip() # Enlever le "* " et les espaces break if title: # Écrire le lien vers l'article dans le fichier de sortie out_file.write(f"* [[file:{file}|{title}]]\n") out_file.write("#+BEGIN_SRC org\n") out_file.writelines(content) out_file.write("#+END_SRC\n\n") print(f"Liste des 10 derniers articles générée dans {output_file}")