orgmode-to-gemini-blog/concat_last_billets.py

58 lines
2.0 KiB
Python

# 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]
# prendre le fichier output_file = f'sources/{blog_folder}/converted/tags.json'
# 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}")