up slug for index

This commit is contained in:
Tykayn 2024-11-05 01:14:45 +01:00 committed by tykayn
parent e61bac9687
commit 2df1b709de
4 changed files with 73 additions and 6 deletions

View File

@ -1,5 +1,7 @@
import os import os
import argparse import argparse
import re
import datetime
# génère l'index gemini et html des articles rangés par langue # génère l'index gemini et html des articles rangés par langue
# Définition des arguments de la ligne de commande # Définition des arguments de la ligne de commande
@ -14,7 +16,44 @@ FICHIER_INDEX = 'index_'+args.source # Nom du fichier d'index à générer
TITRE_INDEX = f" # {args.title} - Articles" TITRE_INDEX = f" # {args.title} - Articles"
source_files_extension="org" source_files_extension="org"
# Expression régulière pour extraire la date et le slug du nom de fichier org
regex = r"^(\d{4}(-\d{2}){2}|\d{8})(-[a-zA-Z0-9_-]+)\.gmi$"
def find_year_and_slug(fichier):
fichier = fichier.replace('..','.')
print(f"find in {fichier} -------------")
match = re.match(regex, fichier)
if match:
date_str = match.group(1)
# Convertir la date en objet datetime
if "-" in date_str:
date = datetime.datetime.strptime(date_str, "%Y-%m-%d")
else:
date = datetime.datetime.strptime(date_str, "%Y%m%d%H%M%S")
date_string_replaced = str(date).replace(' 00:00:00','')
slug = fichier.replace('.gmi','')
slug = slug.replace(date_string_replaced,'')
slug = enlever_premier_tiret_ou_underscore(slug)
annee = str(date.year).replace(' 00:00:00','')
print(f"//////////////////////////////////")
print(f"Fichier: {fichier}")
print(f"année: {annee}")
print(f"str(date): {str(date)}")
print(f"slug: {slug}")
print(f"chemin: {annee}/{slug}/")
return [date_str, annee,slug]
return [None,None,None]
def enlever_premier_tiret_ou_underscore(chaîne):
if chaîne.startswith('-') or chaîne.startswith('_'):
chaîne = chaîne[1:]
return chaîne
def get_files_list_of_folder(folder_path): def get_files_list_of_folder(folder_path):
# Vérifie si le dossier existe # Vérifie si le dossier existe
if not os.path.exists(folder_path): if not os.path.exists(folder_path):
@ -31,8 +70,10 @@ def get_files_list_of_folder(folder_path):
return return
# transformer le nom du fichier orgmode en une création de dossier de l'année, et un sous dossier du nom du slug dans le nom de fichier, contenant un seul fichier d'index afin de faire de l'url rewrite en dur.
# le nom de fichier org commence par une date YYYY-MM-DD ou bien YYYYMMDDHHmmss, est suivie d'un slug, et finit par l'extension .org
# Titre pour le fichier d'index # Titre pour le fichier d'index
def generer_index(dossier_md, fichier_index, titre_index): def generer_index(dossier_md, fichier_index, titre_index):
# Chemin absolu du dossier parent (pour sauver le fichier d'index) # Chemin absolu du dossier parent (pour sauver le fichier d'index)
@ -64,9 +105,12 @@ def generer_index(dossier_md, fichier_index, titre_index):
contenu_index_html += "<h1>Articles en Français</h1>" contenu_index_html += "<h1>Articles en Français</h1>"
lang_folder="lang_fr/" lang_folder="lang_fr/"
for fichier in files_fr: for fichier in files_fr:
date_string, année, slug = find_year_and_slug(fichier)
contenu_index_gmi += f"=> {fichier}\n" contenu_index_gmi += f"=> {fichier}\n"
link_html = fichier.replace('..gmi','.html') link_html = fichier.replace('..gmi','.html')
contenu_index_html += f"<br><a href=/{lang_folder}{link_html}>{link_html}</a>" contenu_index_html += f"<br><a href=/{lang_folder}/{link_html}>{link_html}</a>"
# contenu_index_html += f"<br><a href=/{année}/{slug}>{année} {slug.replace('-', ' ')}</a>"
contenu_index_gmi += "\n# Articles in English\n-------------------------\n" contenu_index_gmi += "\n# Articles in English\n-------------------------\n"
contenu_index_html += "<h1>Articles in English</h1>" contenu_index_html += "<h1>Articles in English</h1>"
@ -80,7 +124,7 @@ def generer_index(dossier_md, fichier_index, titre_index):
try: try:
with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file: with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file:
file.write(contenu_index_gmi) file.write(contenu_index_gmi)
print(f"Fichier d'index '{chemin_fichier_index_html}' généré avec succès.") print(f"Fichier d'index '{chemin_fichier_index_gemini}' généré avec succès.")
with open(chemin_fichier_index_html, 'w', encoding='utf-8') as file: with open(chemin_fichier_index_html, 'w', encoding='utf-8') as file:
file.write('<html><head><title>'+args.title+'</title></head><body>'+contenu_index_html+'</article></body></html>') file.write('<html><head><title>'+args.title+'</title></head><body>'+contenu_index_html+'</article></body></html>')

View File

@ -42,9 +42,9 @@ convert_sources() {
# pwd # pwd
pandoc -f "${source_file_extension}" -t html -s "${i}" -o "converted/${i%.${source_file_extension}}.html" --metadata title="$website_name" pandoc -f "${source_file_extension}" -t html -s "${i}" -o "converted/${i%.${source_file_extension}}.html" --metadata title="$website_name"
# Transformer en gmi # Transformer en gmi
echo "to GMI:" # echo "to GMI:"
pwd # pwd
ls -l $templates_path/../../templates/pandoc # ls -l $templates_path/../../templates/pandoc
pandoc --template $templates_path/../../templates/pandoc/template_gemini.lua -f "${source_file_extension}" -t $templates_path/../../templates/pandoc/gmi.lua -s "${i}" -o "converted/${i%.${source_file_extension}}.gmi" pandoc --template $templates_path/../../templates/pandoc/template_gemini.lua -f "${source_file_extension}" -t $templates_path/../../templates/pandoc/gmi.lua -s "${i}" -o "converted/${i%.${source_file_extension}}.gmi"
# ajout des footers à chaque article # ajout des footers à chaque article
# cat '../../templates/website_pages/footer-articles.md.gmi' >> "${i%.${source_file_extension}}.gmi" # cat '../../templates/website_pages/footer-articles.md.gmi' >> "${i%.${source_file_extension}}.gmi"

19
index_dragonfeu_blog.gmi Normal file
View File

@ -0,0 +1,19 @@
# DragonFeu Blog - Articles
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Navigation
-------------------------
=> index..gmi
# Articles en Français
-------------------------
=> 2024-11-02-coucou-gemini..gmi
=> 2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2..gmi
=> 2024-05-15-l-aventure-superphenix..gmi
=> 2023-06-10-recap-centrale-zaporijia..gmi
=> 2023-06-09-recapitulatif-contenu-threads..gmi
# Articles in English
-------------------------
=> 2024-11-02-coucou-gemini..gmi

View File

@ -0,0 +1,4 @@
<html><head><title>DragonFeu Blog</title></head><body> # DragonFeu Blog - Articles
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
<h1>Navigation</h1><br><a href=/index.html>index.html</a><h1>Articles en Français</h1><br><a href=/lang_fr//2024-11-02-coucou-gemini.html>2024-11-02-coucou-gemini.html</a><br><a href=/lang_fr//2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html>2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html</a><br><a href=/lang_fr//2024-05-15-l-aventure-superphenix.html>2024-05-15-l-aventure-superphenix.html</a><br><a href=/lang_fr//2023-06-10-recap-centrale-zaporijia.html>2023-06-10-recap-centrale-zaporijia.html</a><br><a href=/lang_fr//2023-06-09-recapitulatif-contenu-threads.html>2023-06-09-recapitulatif-contenu-threads.html</a><h1>Articles in English</h1><br><a href=/lang_en/2024-11-02-coucou-gemini.html>2024-11-02-coucou-gemini.html</a></article></body></html>