import os import argparse # génère l'index gemini et html des articles rangés par langue # Définition des arguments de la ligne de commande parser = argparse.ArgumentParser(description="Générer un site Web à partir de fichiers HTML.") parser.add_argument("source", help="Le chemin vers le dossier contenant les fichiers HTML.") parser.add_argument("title", default="Mon site Web", help="Le titre du site Web.") args = parser.parse_args() # Variables personnalisables DOSSIER_MD = 'sources/'+args.source # Nom du dossier contenant les fichiers Markdown FICHIER_INDEX = 'index_'+args.source # Nom du fichier d'index à générer TITRE_INDEX = f" # {args.title} - Articles" source_files_extension="org" def get_files_list_of_folder(folder_path): # Vérifie si le dossier existe if not os.path.exists(folder_path): print(f"Erreur : Le dossier '{dossier_md}' n'existe pas.") return print('source ',folder_path) # Liste les fichiers articles, trie par nom décroissant try: fichiers_md = sorted([f.replace(source_files_extension, '.gmi') for f in os.listdir(folder_path) if f.endswith(source_files_extension)], reverse=True) print('fichiers trouvés:', len(fichiers_md)) return fichiers_md except OSError as e: print(f"Erreur lors de la lecture du dossier : {e}") return # Titre pour le fichier d'index def generer_index(dossier_md, fichier_index, titre_index): # Chemin absolu du dossier parent (pour sauver le fichier d'index) dossier_parent = os.path.dirname(os.path.abspath(__file__)) # Chemin complet du dossier contenant les Markdown chemin_dossier_md = os.path.join(dossier_parent, dossier_md) files_static = get_files_list_of_folder(chemin_dossier_md+'/') files_fr = get_files_list_of_folder(chemin_dossier_md+'/lang_fr') files_en = get_files_list_of_folder(chemin_dossier_md+'/lang_en') # 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') # 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" contenu_index_gmi += "\n# Navigation\n-------------------------\n" contenu_index_html += "

Navigation

" for fichier in files_static: contenu_index_gmi += f"=> {fichier}\n" link_html = fichier.replace('..gmi','.html') contenu_index_html += f"
{link_html}" contenu_index_gmi += "\n# Articles en Français\n-------------------------\n" contenu_index_html += "

Articles en Français" lang_folder="lang_fr/" for fichier in files_fr: contenu_index_gmi += f"=> {fichier}\n" link_html = fichier.replace('..gmi','.html') contenu_index_html += f"
{link_html}" contenu_index_gmi += "\n# Articles in English\n-------------------------\n" contenu_index_html += "

Articles in English

" lang_folder="lang_en/" for fichier in files_en: contenu_index_gmi += f"=> {fichier}\n" link_html = fichier.replace('..gmi','.html') contenu_index_html += f"
{link_html}" # É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_html}' généré avec succès.") with open(chemin_fichier_index_html, 'w', encoding='utf-8') as file: file.write(''+args.title+''+contenu_index_html+'') print(f"Fichier d'index '{chemin_fichier_index_html}' généré avec succès.") except OSError as e: print(f"Erreur lors de l'écriture du fichier d'index : {e}") if __name__ == "__main__": generer_index(DOSSIER_MD, FICHIER_INDEX, TITRE_INDEX)