slugify links in website

This commit is contained in:
Tykayn 2024-11-05 23:06:54 +01:00 committed by tykayn
parent 86b2247d22
commit a3ba26528b
19 changed files with 239 additions and 4031 deletions

View file

@ -2,6 +2,7 @@ import os
import argparse
import re
import datetime
import shutil
# génère l'index gemini et html des articles rangés par langue
# Définition des arguments de la ligne de commande
@ -57,12 +58,13 @@ def enlever_premier_tiret_ou_underscore(chaîne):
chaîne = chaîne[1:]
return chaîne
import shutil
# création des dossiers intermédiaires s'il y en a
# déplace le fichier dans le dossier spécifié
def create_path_folders_and_move_file(path, file):
os.makedirs(os.path.dirname(path), exist_ok=True)
shutil.move(file, path)
def get_files_list_of_folder(folder_path):
@ -101,6 +103,8 @@ def empty_folder_content(path):
def generer_index(dossier_source, fichier_index, titre_index):
# Chemin absolu du dossier parent (pour sauver le fichier d'index)
dossier_parent = os.path.dirname(os.path.abspath(__file__))
empty_folder_content(dossier_parent+'/html-websites/'+args.source+'/')
empty_folder_content(dossier_parent+'/gemini-capsules/'+args.source+'/')
# Chemin complet du dossier contenant les Markdown
chemin_dossier_source = os.path.join(dossier_parent, dossier_source)
@ -111,8 +115,10 @@ def generer_index(dossier_source, fichier_index, titre_index):
# Chemin complet pour le fichier d'index
chemin_fichier_index_gemini = os.path.join(dossier_parent, fichier_index+'.gmi')
chemin_fichier_index_html = os.path.join(dossier_parent, fichier_index+'.html')
chemin_fichier_index_html = os.path.join(dossier_parent, '/'+fichier_index+'.html')
print('\n index html: ', chemin_fichier_index_html)
# Génère le contenu du fichier d'index
contenu_index_gmi = f"{titre_index}\n{'- ' * len(titre_index)}\n\n"
contenu_index_html = f"{titre_index}\n{'- ' * len(titre_index)}\n\n"
@ -124,22 +130,38 @@ def generer_index(dossier_source, fichier_index, titre_index):
link_html = fichier.replace('..gmi','.html')
contenu_index_html += f"<br><a href=/{link_html}>{link_html}</a>"
contenu_index_gmi += "\n# Articles en Français\n-------------------------\n"
contenu_index_html += "<h1>Articles en Français</h1>"
# ne préciser la langue français que si on a des articles en Anglais
if len(files_en):
contenu_index_gmi += "\n# Articles en Français\n-------------------------\n"
contenu_index_html += "<h1>Articles en Français</h1>"
lang_folder="lang_fr/"
for fichier in files_fr:
date_string, année, slug = find_year_and_slug(fichier)
new_folder=f"{année}/{slug}"
new_folder_path_this_article = os.path.join(dossier_parent, 'html-websites/'+args.source+'/'+new_folder+'/')
contenu_index_gmi += f"=> {fichier}\n"
link_html = fichier.replace('..gmi','.html')
contenu_index_html += f"<br><a href=/{lang_folder}/{link_html}>{link_html}</a>"
chemin_fichier_this_article = chemin_dossier_source+'/lang_fr/converted/'+link_html
# 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>"
print(f" on créer le dossier : {new_folder}, et on y copie le fichier {new_file} en le renommant index.html")
# create_path_folders_and_move_file(path, file)
# déplacer l'article html généré dans son dossier de slug
print(f" on créée le dossier : {new_folder_path_this_article}, et on y copie le fichier {chemin_fichier_this_article} en le renommant index.html")
'html-websites/'+args.source+'/'+new_folder
print(f" mkdir {new_folder_path_this_article} -p")
print(f" mv {chemin_fichier_this_article} {new_folder_path_this_article}")
os.makedirs(os.path.dirname(new_folder_path_this_article), exist_ok=True)
# déplacer le fichier html dans le dossier slug, et le renommer en index.html ensuite pour ne pas modifier l'index du blog
shutil.move(chemin_fichier_this_article, new_folder_path_this_article+'index.html')
# os.remove(new_folder_path_this_article+'/index.html')
# shutil.move(new_folder_path_this_article+'/'+link_html , new_folder_path_this_article+'/index.html' )
# contenu_index_gmi += "\n# Articles in English\n-------------------------\n"
# contenu_index_html += "<h1>Articles in English</h1>"
# lang_folder="lang_en/"
lang_folder="lang_en/"
# for fichier in files_en:
# contenu_index_gmi += f"=> {fichier}\n"
# link_html = fichier.replace('..gmi','.html')
@ -147,13 +169,24 @@ def generer_index(dossier_source, fichier_index, titre_index):
# Écrit le contenu dans le fichier d'index
try:
with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file:
file.write(contenu_index_gmi)
print(f"Fichier d'index '{chemin_fichier_index_gemini}' généré avec succès.")
# with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file:
# file.write(contenu_index_gmi)
# print(f"Fichier d'index '{chemin_fichier_index_gemini}' généré avec succès.")
# os.remove('gemini-capsules/'+args.source+'/index.gmi')
# shutil.move(chemin_fichier_index_gemini, 'gemini-capsules/'+args.source+'/index.gmi')
with open(chemin_fichier_index_html, 'w', encoding='utf-8') as file:
print('chemin_fichier_index_html' , dossier_parent+chemin_fichier_index_html)
print(' ')
with open(dossier_parent+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>')
print(f"Fichier d'index '{chemin_fichier_index_html}' généré avec succès.")
# os.remove(dossier_parent+'/html-websites/'+args.source+'/index.html')
destination_html = dossier_parent+'/html-websites/'+args.source+'/'
shutil.move(dossier_parent+chemin_fichier_index_html, destination_html)
shutil.move(destination_html+chemin_fichier_index_html, destination_html+'index.html')
print(f"Déplacé dans '{'html-websites/'+args.source}'.")
except OSError as e:
print(f"Erreur lors de l'écriture du fichier d'index : {e}")