up slug for index
This commit is contained in:
parent
e61bac9687
commit
2df1b709de
@ -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>')
|
||||||
|
@ -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
19
index_dragonfeu_blog.gmi
Normal 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
|
4
index_dragonfeu_blog.html
Normal file
4
index_dragonfeu_blog.html
Normal 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>
|
Loading…
Reference in New Issue
Block a user