diff --git a/linking_articles_prev_next.py b/linking_articles_prev_next.py index 5c37ad5e..b87a02c4 100644 --- a/linking_articles_prev_next.py +++ b/linking_articles_prev_next.py @@ -370,39 +370,41 @@ for basename, info in files_dict.items(): def generate_blog_index(json_file, template_file, output_file): """ Génère la page d'index du blog à partir des informations JSON et d'un template Jinja2. - - :param json_file: Chemin du fichier JSON contenant les informations des articles. - :param template_file: Chemin du fichier template Jinja2. - :param output_file: Chemin du fichier HTML de sortie. """ - # Charger les données JSON - with open(json_file, 'r', encoding='utf-8') as f: - articles_info = json.load(f) + try: + # Charger les données JSON + with open(json_file, 'r', encoding='utf-8') as f: + articles_info = json.load(f) - # Trier les articles par date (ou par slug) et prendre les 10 derniers - sorted_articles = sorted(articles_info.values(), key=lambda x: x['date'], reverse=True)[:global_config['posts_per_page']] + # Trier les articles par date + sorted_articles = sorted(articles_info.values(), key=lambda x: x['date'], reverse=True) + + # Séparer les articles récents et les autres + recent_articles = sorted_articles[:global_config['posts_per_page']] + articles_others = sorted_articles[global_config['posts_per_page']:] - # Configurer Jinja2 - env = Environment(loader=FileSystemLoader('.')) - template = env.get_template(template_file) + # Configurer Jinja2 + env = Environment(loader=FileSystemLoader('.')) + template = env.get_template(template_file) + template_content = get_blog_template_conf(args.blog) - articles_others = sorted(articles_info.values(), key=lambda x: x['date'], reverse=True)[10:] + # Générer le HTML + output_index_html = template.render( + template_content=template_content, + articles=recent_articles, + articles_others=articles_others + ) - template_content = get_blog_template_conf(args.blog) + # Générer le contenu GMI + gmi_list_articles = '' + current_year = None + for article in sorted_articles: + if article['annee'] != current_year: + current_year = article['annee'] + gmi_list_articles += f"\n## {current_year}\n\n" + gmi_list_articles += f"=> {article['annee']}/{article['slug']}.gmi {article['title']}\n" - # Rendre le template avec les données - output_index_html = template.render( - template_content=template_content, - articles=sorted_articles[:global_config['posts_per_page']], - articles_others=articles_others - ) - - gmi_list_articles = '' - - for basename, article in files_dict.items(): - gmi_list_articles += f"=> {article['annee']}/{article['slug']}.gmi {article['title']}\n" - - output_index_gmi = f""" + output_index_gmi = f""" # {template_content['BLOG_TITLE']} =============================================== @@ -420,15 +422,13 @@ Dernière mise à jour: {dt.datetime.now().strftime('%Y-%m-%d, %H:%M:%S')} {template_content['SITE_ICON']} - - ----------------------------------------------- -Index des {len(files_dict.items())} articles: +# Index des {len(sorted_articles)} articles: {gmi_list_articles} ----------------------------------------------- -Pages: +# Pages: => index.gmi Index => tags.gmi Tags @@ -437,20 +437,28 @@ Pages: ----------------------------------------------- {template_content['WEBSITE_GENERATOR_DESCRIPTION']} {template_content['WEBSITE_GENERATOR']} - """ + """ - gmi_index_file=destination_gmi+'index.gmi' - - # Écrire le fichier de sortie en html et en gmi - with open(output_file, 'w', encoding='utf-8') as f: - f.write(output_index_html) - #print(f"Page d'index générée dans {output_file}") + # Écrire les fichiers de sortie + gmi_index_file = os.path.join(destination_gmi, 'index.gmi') - os.makedirs(os.path.dirname(gmi_index_file), exist_ok=True) - #print('gmi_index_file', gmi_index_file) - with open(gmi_index_file, 'w', encoding='utf-8') as f: - f.write(output_index_gmi) - #print(f"Page d'index gemini générée dans {gmi_index_file}") + os.makedirs(os.path.dirname(output_file), exist_ok=True) + os.makedirs(os.path.dirname(gmi_index_file), exist_ok=True) + + with open(output_file, 'w', encoding='utf-8') as f: + f.write(output_index_html) + + with open(gmi_index_file, 'w', encoding='utf-8') as f: + f.write(output_index_gmi) + + except IOError as e: + print(f"Erreur lors de la lecture/écriture des fichiers: {e}") + return False + except Exception as e: + print(f"Erreur inattendue: {e}") + return False + + return True # Générer la page d'index seulement si des articles ont été convertis diff --git a/templates/html/index.html.jinja b/templates/html/index.html.jinja index 0bc207f5..5f021838 100644 --- a/templates/html/index.html.jinja +++ b/templates/html/index.html.jinja @@ -115,10 +115,14 @@ {% if articles_others %}
Y'en a un peu plus, je vous le mets...
+