import os import json from datetime import datetime import argparse from utils import get_blog_template_conf from website_config import configs_sites # Configuration des arguments de la ligne de commande parser = argparse.ArgumentParser(description="Générer un flux Atom des articles.") parser.add_argument("blog", help="Le nom du dossier de blog.") args = parser.parse_args() template_content = get_blog_template_conf(args.blog) website_ndd = template_content['NDD'] # Charger les données du fichier articles_info.json json_file = f'sources/{args.blog}/build/articles_info.json' with open(json_file, 'r', encoding='utf-8') as f: articles_info = json.load(f) # Trier les articles par date décroissante sorted_articles = sorted(articles_info.values(), key=lambda x: x['date'], reverse=True) # Convert the date string to a valid ISO format def convert_to_iso(date_str): # Check if the string contains 'T' and replace it with a single 'T' if 'T' in date_str: date_str = date_str.replace('T', '', 1) # Replace only the first occurrence return f"{date_str[:4]}-{date_str[4:6]}-{date_str[6:8]}T{date_str[8:10]}:{date_str[10:12]}:{date_str[12:14]}" # Génération du flux Atom with open(f"html-websites/{args.blog}/feed/index.xml", "w", encoding="utf-8") as f: f.write('\n') f.write('\n') f.write(f' Flux Atom des articles de {args.blog}\n') f.write(f' \n') f.write(f' {datetime.fromisoformat(convert_to_iso(sorted_articles[0]["date"])).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') f.write(' tag:' + website_ndd + ',2023:/feed\n') f.write(' \n') f.write(f' {configs_sites[args.blog]["AUTHOR"]}\n') f.write(f' {configs_sites[args.blog]["EMAIL"]}\n') f.write(' \n') f.write(f' \n') print(f"Génération du flux Atom pour {len(sorted_articles)} articles") # Boucle des articles for article in sorted_articles: f.write(' \n') f.write(f' tag:{website_ndd},2023:{article["slug"]}\n') f.write(f' {article["title"]}\n') f.write(f' \n') f.write(' \n') f.write(f' {article.get("extract", "")}\n') f.write(f' {datetime.fromisoformat(convert_to_iso(article["date"])).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') f.write(f' {datetime.fromisoformat(convert_to_iso(article["date"])).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') f.write(' \n') f.write(f' {configs_sites[args.blog]["AUTHOR"]}\n') f.write(f' {configs_sites[args.blog]["EMAIL"]}\n') f.write(' \n') f.write(' \n') f.write('')