diff --git a/.gitignore b/.gitignore
index 16eae4cb..bb9696ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,7 @@
**/converted/
+sources/*/converted
+sources/*/lang_*/converted
+sources/**/*.html
index_*.html
-index_*.gmi
\ No newline at end of file
+index_*.gmi
+__pycache__
\ No newline at end of file
diff --git a/build_indexes.py b/build_indexes.py
index 6850b2a5..7cbf56c8 100755
--- a/build_indexes.py
+++ b/build_indexes.py
@@ -3,11 +3,11 @@ import argparse
import re
import datetime
import shutil
-# from enrich_html import static_page_path
+import re
+# from enrich_html import static_page_path
# 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.")
@@ -24,14 +24,16 @@ source_files_extension="org"
regex = r"^(\d{14})(-[a-zA-Z0-9_-]+)\.gmi$"
regex_orgroam = r"^(\d{14})_([a-zA-Z0-9_-]+)\.gmi$"
-import re
+use_article_file_for_name=False
+website_name = args.source
def trouver_nom_article(fichier_org):
+ print('fichier_org, ',fichier_org)
with open(fichier_org, 'r') as file:
lignes = file.readlines()
# Expressions régulières pour trouver les titres de niveau 1 et 2
- titre_niveau_1 = r'^\*\*\*+ (.+)$'
+ titre_niveau_1 = r'^\*+ (.+)$'
titre_niveau_2 = r'^\*\*+ (.+)$'
nom_article = None
@@ -118,7 +120,7 @@ def get_files_list_of_folder(folder_path):
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)
+ 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:
@@ -143,7 +145,6 @@ def empty_folder_content(path):
else:
shutil.rmtree(file_path)
-use_article_file_for_name=False
def generer_index(dossier_source, fichier_index, titre_index):
# Chemin absolu du dossier parent (pour sauver le fichier d'index)
@@ -171,16 +172,25 @@ def generer_index(dossier_source, fichier_index, titre_index):
contenu_index_gmi += "\n# Navigation\n-------------------------\n"
contenu_index_html += "
Navigation
"
for fichier in files_static:
+ print(" -------- fichier ",fichier)
+ link_html = fichier.replace('.gmi','.html')
+ link_org = fichier.replace('.gmi','.org')
contenu_index_gmi += f"=> {fichier}\n"
- link_html = fichier.replace('..gmi','.html')
- if use_article_file_for_name:
- article_name = link_html
+ if fichier != "index.gmi":
+ print(' -------- rechercher le nom de l article dans le fichier ')
+ if use_article_file_for_name:
+ article_name = link_html
+ else:
+ file_path_org = os.path.join(dossier_parent,"sources",website_name,link_org)
+ print('-------------- trouver_nom_article ',file_path_org)
+ article_name=trouver_nom_article(file_path_org)
+
+ if not article_name:
+ article_name = link_html
else:
- file_path_org = os.path.join(dossier_parent,fichier)
- print('--------------',file_path_org)
- article_name=trouver_nom_article( file_path_org)
-
+ article_name = 'Index'
+ article_name = article_name.replace('_',' ')
contenu_index_html += f" {article_name}"
# ne préciser la langue français que si on a des articles en Anglais
@@ -232,11 +242,8 @@ def generer_index(dossier_source, fichier_index, titre_index):
try:
with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file:
file.write(contenu_index_gmi)
- print(f" ------------ build_indexes: Fichier d'index '{chemin_fichier_index_gemini}' généré avec succès.")
- os.remove('gemini-capsules/'+args.source+'/index.gmi')
- shutil.copy(chemin_fichier_index_gemini, 'gemini-capsules/'+args.source+'/index.gmi')
-
- print(f" ------------ build_indexes: Déplacé dans '{'html-websites/'+args.source}'.")
+ print(f" ------------ build_indexes: Fichier d'index gemini '{chemin_fichier_index_gemini}' généré avec succès.")
+
except OSError as e:
print(f" ------------ build_indexes: Erreur lors de l'écriture du fichier d'index : {e}")
diff --git a/converters.sh b/converters.sh
index 9b0f86e0..7866bb9a 100755
--- a/converters.sh
+++ b/converters.sh
@@ -10,6 +10,7 @@ blogs_folders=()
# blogs_folders=("cipherbliss_blog")
source_file_extension="org"
style_file="templates/styles/style_general.css"
+destination_gemini="gemini-capsules/$website_name/"
# Boucle à travers tous les arguments passés en entrée
for arg in "$@"
@@ -29,10 +30,11 @@ first_wd=$PWD
convert_sources() {
- echo "----------- convertir les fichiers orgmode vers gemini et html dans le dossier source/nom_du_blog/ racine, lang_fr et lang_en"
source_file_extension="org"
templates_path=$1
+ echo "----------- convert_sources : convertir les fichiers orgmode vers gemini et html dans le dossier source/nom_du_blog/ racine, lang_fr et lang_en"
+ echo "----------- convert_sources : $templates_path"
mkdir -p converted
@@ -41,18 +43,11 @@ convert_sources() {
for i in *.${source_file_extension} ; do
echo "----------- $i"
- # Transformer en html
- # temp_page="temp_page.$source_file_extension"
- # echo ''> $temp_page
+ # Transformer en html et en markdown
- # cat "$first_wd/sources/$website_name/templates/header_page.$source_file_extension" >> $temp_page
- # cat "${i}" >> $temp_page
- # cat "$first_wd/sources/$website_name/templates/footer_page.$source_file_extension" >> $temp_page
-
- echo "----------- conversion vers converted/${i%.${source_file_extension}}.html"
+ echo "----------- convert_sources : conversion vers converted/${i%.${source_file_extension}}.html"
pandoc --from "${source_file_extension}" --to html -s "${i}" -o "converted/${i%.${source_file_extension}}.html" --metadata title="$website_name"
-
pandoc --from "${source_file_extension}" --to markdown -s "${i}" -o "converted/${i%.${source_file_extension}}.md" --metadata title="$website_name"
@@ -66,7 +61,7 @@ convert_sources() {
# Définition de la fonction generate_website
generate_website() {
- echo "----------- Génération du site $1..."
+ echo "----------- convert_sources :Génération du site $1..."
@@ -85,7 +80,7 @@ generate_website() {
mkdir -p html-websites/$website_name/lang_fr
mkdir -p html-websites/$website_name/lang_en
- echo "----------- Le site $1 a été généré avec succès."
+ echo "----------- convert_sources :Le site $1 a été généré avec succès."
# conversion des pages statiques
cd sources/$website_name
@@ -95,7 +90,7 @@ generate_website() {
# traduction fr
cd lang_fr
convert_sources ../
- echo "----------- pages en français du site web $website_name converties"
+ echo "----------- convert_sources :pages en français du site web $website_name converties"
cd ..
# traduction en
@@ -109,20 +104,12 @@ generate_website() {
cd ..
pwd
- # création de l'index:
- # prendre les fichiers markdown du dossier md/ ,
- # et créer un index des fichiers situés dedans, rangés par nom de fichier décroissant,
- # sauver le tout dans un fichier index.gmi
- python3 build_indexes.py $website_name "$website_name"
- cp index_$website_name.html html-websites/$website_name/index.html
-
- cp $style_file html-websites/$website_name/style.css
+
# --------------------------------------------------------------------------------------------------
# convertir les fichiers org
- echo "----------- ------------ enrich html --------"
- python3 enrich_html.py html-websites/$website_name -t $website_name --style $style_file
-
+ echo "----------- convert_sources : ------------ enrich html --------"
+
cp $style_file html-websites/$website_name/style.css
@@ -130,7 +117,8 @@ generate_website() {
}
convert_markdown_to_gmi() {
-
+
+ echo "----------- convert_sources : convert_markdown_to_gmi : $website_name"
mkdir -p gemini-capsules/$website_name
rm -rf gemini-capsules/$website_name/*
@@ -140,27 +128,44 @@ convert_markdown_to_gmi() {
# mv index_$website_name.gmi gemini-capsules/$website_name/index.gmi
- destination_gemini="gemini-capsules/$website_name/"
- echo "----------- génération des fichiers gemini"
- echo "----------- destination des fichiers gemini: $destination_gemini"
- echo "----------- fichiers markdown présents dans le dossier de base: "
- ls -l output/*$website_name/converted/*.md |wc
+ echo "----------- convert_markdown_to_gmi : $PWD"
+ echo "----------- convert_markdown_to_gmi : destination: $destination_gemini"
+
+ echo "----------- convert_markdown_to_gmi : fichiers markdown présents dans le dossier de base: "
+
+ ls -l sources/$website_name/converted/*.md |wc
+
# # faire les fichiers gemini à partir du markdown
- for fichier in output/*$website_name/converted/*.md ; do
+ # pages de base
+ # pages fr
+ # pages en
+ for fichier in sources/$website_name/converted/*.md ; do
if [ -f "$fichier" ]; then
- echo "----------- convert the markdown to gmi : $fichier"
+ echo "----------- convert_markdown_to_gmi : md2gemini : $fichier"
md2gemini "$fichier" -w -d $destination_gemini
fi
done
+ for fichier in sources/$website_name/lang_fr/converted/*.md ; do
+ if [ -f "$fichier" ]; then
+ echo "----------- convert_markdown_to_gmi : md2gemini : $fichier"
+ md2gemini "$fichier" -w -d sources/$website_name/lang_fr/converted/
+ fi
+ done
+ for fichier in sources/$website_name/lang_en/converted/*.md ; do
+ if [ -f "$fichier" ]; then
+ echo "----------- convert_markdown_to_gmi : md2gemini : $fichier"
+ md2gemini "$fichier" -w -d sources/$website_name/lang_fr/converted/
+ fi
+ done
echo "----------- génération des fichiers gemini faite."
- echo "fichiers gmi présents:"
- ls -l $destination_gemini/*.gmi |wc -l
+ # echo "fichiers gmi présents:"
+ # ls -l $destination_gemini*.gmi |wc -l
}
@@ -175,6 +180,30 @@ for website_name in "${blogs_folders[@]}"; do
generate_website $website_name
convert_markdown_to_gmi $website_name
+ # création de l'index:
+ # prendre les fichiers markdown du dossier md/ ,
+ # et créer un index des fichiers situés dedans, rangés par nom de fichier décroissant,
+ # sauver le tout dans un fichier index.gmi
+ python3 build_indexes.py $website_name "$website_name"
+
+ # déplacer les fichiers générés en html dans le dossier statique
+ # mv sources/$website_name/converted/*.html html-websites/$website_name/
+ # mv sources/$website_name/lang_fr/converted/*.html html-websites/$website_name/
+ mv index_$website_name.html html-websites/$website_name/index.html
+ mv sources/$website_name/converted/*.html html-websites/$website_name/
+ mv sources/$website_name/converted/lang_fr/*.html html-websites/$website_name/lang_fr/
+ mv sources/$website_name/converted/lang_en/*.html html-websites/$website_name/lang_en/
+
+
+ python3 enrich_html.py html-websites/$website_name -t $website_name --style $style_file
+
+ # # déplacer les fichirers gemini dans la capsule
+ # mv index_$website_name.gmi gemini-capsules/$website_name/index.gmi
+ # mv sources/$website_name/converted/*.gmi gemini-capsules/$website_name/
+ # mv sources/$website_name/converted/lang_fr/*.gmi gemini-capsules/$website_name/lang_fr/
+ # mv sources/$website_name/converted/lang_en/*.gmi gemini-capsules/$website_name/lang_en/
+
+ # copy style
+ cp $style_file html-websites/$website_name/style.css
-
done
diff --git a/enrich_html.py b/enrich_html.py
index 9083affc..d5205077 100755
--- a/enrich_html.py
+++ b/enrich_html.py
@@ -16,7 +16,7 @@ style_file = args.style
blog_name = args.blog_name
source_blog = f"sources/{blog_name}"
header_content_path = f"{source_blog}/templates/header_page.org"
-footer_content_path = f"{source_blog}/templates/header_page.org"
+footer_content_path = f"{source_blog}/templates/footer_page.org"
static_page_path = f"{source_blog}/templates/html/static.html"
# variables du template de page
@@ -26,17 +26,37 @@ BLOG_SUBTITLE='Code, nouvelles technologies et entrepreneurariat par B. Lemoine'
TITLE=''
AUTHOR=''
PAGE_TITLE=''
-LOCALE=''
+LOCALE='fr_FR'
DESCRIPTION=''
+NDD='https://www.cipherbliss.com'
EMAIL='contact@cipherbliss.com'
SITE_ICON='https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png'
-SITE_ICON='image/png'
+SITE_ICON_TYPE='image/png'
NAVIGATION=''
BANNIERE_ENTETE='https://www.cipherbliss.com/wp-content/uploads/2016/11/bg.jpg'
BANNIERE_ENTETE_ALT='bannière du site'
ARTICLE=''
FOOTER=''
+
+def extract_body_content(html_content):
+ pattern = r'.+?'
+ match = re.search(pattern, html_content, re.DOTALL)
+ if match:
+ return match.group(1)
+ else:
+ return None
+def remove_before_body(text):
+ pattern = r".+?"
+ replacement = ""
+ return re.sub(pattern, replacement, text, flags=re.DOTALL)
+
+def remove_after_body(text):
+ pattern = r".+?"
+ replacement = "
-
+ html_content = f"""
-