diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..8f3c0919
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,10 @@
+{
+ "editor.suggest.selectionMode": "whenQuickSuggestion",
+ "editor.quickSuggestions": {
+ "other": false,
+ "comments": false,
+ "strings": false
+ },
+ "emmet.useInlineCompletions": true,
+ "editor.hover.enabled": false
+}
\ No newline at end of file
diff --git a/build_indexes.py b/build_indexes.py
index 25360220..751726b6 100755
--- a/build_indexes.py
+++ b/build_indexes.py
@@ -117,7 +117,7 @@ def get_files_list_of_folder(folder_path):
if not os.path.exists(folder_path):
print(f" ------------ build_indexes: Erreur : Le dossier '{dossier_md}' n'existe pas.")
return
- print('source ',folder_path)
+ print('----------- get_files_list_of_folder: folder_path : ',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)
@@ -196,25 +196,35 @@ def generer_index(dossier_source, fichier_index, titre_index):
# 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 += "
Articles en Français
"
+ # contenu_index_html += "
Articles en Français
"
lang_folder="lang_fr/"
+ # ----------- indexer les articles en Français ------------------
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')
- chemin_fichier_this_article = chemin_dossier_source+'/lang_fr/converted/'+link_html
-
- # contenu_index_html += f" {link_html}"
- contenu_index_html += f" {année} {slug.replace('-', ' ')}"
+ link_html = fichier.replace('.gmi','.html')
+
+ chemin_fichier_this_article = chemin_dossier_source+'/lang_fr/converted/'+link_html
+
+ article_name=trouver_nom_article(chemin_fichier_this_article)
+
+ if not article_name:
+ article_name=slug.replace('-', ' ')
+
+ # contenu_index_html += f" {link_html}"
+ contenu_index_html += f" {année} {article_name}"
-
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.copy(chemin_fichier_this_article, new_folder_path_this_article+'index.html')
+
# ---------------- pareil en anglais TODO
# contenu_index_gmi += "\n# Articles in English\n-------------------------\n"
# contenu_index_html += "
Articles in English
"
diff --git a/converters.sh b/converters.sh
index 743ccc8b..b1b22751 100755
--- a/converters.sh
+++ b/converters.sh
@@ -43,12 +43,13 @@ convert_sources() {
for i in *.${source_file_extension} ; do
echo "----------- $i"
- # Transformer en html et en markdown
+ # Transformer en html et en markdown
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"
+
+ pandoc --from "${source_file_extension}" --to markdown -s "${i}" -o "converted/${i%.${source_file_extension}}.md" --metadata title="$website_name"
@@ -77,8 +78,11 @@ generate_website() {
mkdir -p html-websites/$website_name
rm -rf html-websites/$website_name/*
+ rm -rf sources/$website_name/converted/*
+ rm -rf sources/$website_name/lang_fr/converted/*
+ rm -rf sources/$website_name/lang_en/converted/*
+ mkdir -p html-websites/$website_name/lang_fr
mkdir -p html-websites/$website_name/lang_fr
- mkdir -p html-websites/$website_name/lang_en
echo "----------- convert_sources :Le site $1 a été généré avec succès."
@@ -103,13 +107,7 @@ generate_website() {
cd ..
cd ..
pwd
-
-
-
- # --------------------------------------------------------------------------------------------------
- # convertir les fichiers org
- echo "----------- convert_sources : ------------ enrich html --------"
-
+
cp $style_file html-websites/$website_name/style.css
@@ -118,14 +116,14 @@ generate_website() {
convert_markdown_to_gmi() {
+ destination_gemini="gemini-capsules/$website_name"
echo "----------- convert_sources : convert_markdown_to_gmi : $website_name"
- mkdir -p gemini-capsules/$website_name
rm -rf gemini-capsules/$website_name/*
+ mkdir -p gemini-capsules/$website_name
mkdir -p gemini-capsules/$website_name/lang_fr
mkdir -p gemini-capsules/$website_name/lang_en
- # mv index_$website_name.gmi gemini-capsules/$website_name/index.gmi
@@ -143,22 +141,30 @@ convert_markdown_to_gmi() {
# pages en
for fichier in sources/$website_name/converted/*.md ; do
if [ -f "$fichier" ]; then
- echo "----------- convert_markdown_to_gmi : md2gemini : $fichier"
- md2gemini "$fichier" -w -d $destination_gemini
+ echo "----------- convert_markdown_to_gmi : md2gemini : $destination_gemini : $fichier"
+ md2gemini "$fichier" -w -d $destination_gemini/
fi
done
+ cp sources/$website_name/converted/*.gmi "$destination_gemini/lang_fr"
+
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
+ cp sources/$website_name/lang_fr/converted/*.gmi "$destination_gemini/lang_fr"
+
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
+ cp sources/$website_name/lang_en/converted/*.gmi "$destination_gemini/lang_en"
+
+
+
echo "----------- génération des fichiers gemini faite."
@@ -188,19 +194,18 @@ for website_name in "${blogs_folders[@]}"; do
# déplacer les fichiers générés en html dans le dossier statique
- cp sources/$website_name/converted/*.html html-websites/$website_name/
+# cp sources/$website_name/converted/*.html html-websites/$website_name/
cp index_$website_name.html html-websites/$website_name/index.html
- cp sources/$website_name/converted/lang_fr/*.html html-websites/$website_name/lang_fr/
- cp sources/$website_name/converted/lang_en/*.html html-websites/$website_name/lang_en/
-
+# cp sources/$website_name/lang_fr/converted/*.html html-websites/$website_name/lang_fr/
+# cp sources/$website_name/lang_en/converted/*.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
cp index_$website_name.gmi gemini-capsules/$website_name/index.gmi
- cp sources/$website_name/converted/*.gmi gemini-capsules/$website_name/
- cp sources/$website_name/converted/lang_fr/*.gmi gemini-capsules/$website_name/lang_fr/
- cp sources/$website_name/converted/lang_en/*.gmi gemini-capsules/$website_name/lang_en/
+# cp sources/$website_name/converted/*.gmi gemini-capsules/$website_name/
+# cp sources/$website_name/lang_fr/converted/*.gmi gemini-capsules/$website_name/lang_fr/
+# cp sources/$website_name/lang_en/converted/*.gmi gemini-capsules/$website_name/lang_en/
# copy style
cp $style_file html-websites/$website_name/style.css
diff --git a/enrich_html.py b/enrich_html.py
index 6e71d575..f40091c4 100755
--- a/enrich_html.py
+++ b/enrich_html.py
@@ -32,7 +32,15 @@ NDD='https://www.cipherbliss.com'
EMAIL='contact@cipherbliss.com'
SITE_ICON='https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png'
SITE_ICON_TYPE='image/png'
-NAVIGATION=''
+NAVIGATION="""
+
+"""
BANNIERE_ENTETE='https://www.cipherbliss.com/wp-content/uploads/2016/11/bg.jpg'
BANNIERE_ENTETE_ALT='bannière du site'
ARTICLE=''
@@ -92,12 +100,10 @@ def enrich_one_file(file, root_path):
with open(os.path.join(root_path, file), "r") as f:
html_content = f.read()
- # html_content = extract_body_content(html_content)
- # html_content = remove_before_body(html_content)
- # html_content = remove_after_body(html_content)
- html_content = remove_properties_section(html_content)
- html_content = remove_article_head_properties_orgmode(html_content)
- html_content = remove_hint_html(html_content)
+ # remove some parts
+ # html_content = remove_properties_section(html_content)
+ # html_content = remove_article_head_properties_orgmode(html_content)
+ # html_content = remove_hint_html(html_content)
if inline_the_css == True:
print(' ----------- include css inline in each html page')
@@ -105,7 +111,7 @@ def enrich_one_file(file, root_path):
css_content = f.read()
css_content = ""
- # Ajouter la déclaration de charset UTF-8, le doctype HTML et le titre du site Web
+ # remplir le template
html_content = f"""
@@ -116,10 +122,10 @@ def enrich_one_file(file, root_path):
-
+
+ href="{NDD}/feed/">
@@ -188,7 +194,6 @@ def enrich_one_file(file, root_path):
{NAVIGATION}
- {css_content}
@@ -201,6 +206,7 @@ def enrich_one_file(file, root_path):
"""
html_path_enriched=os.path.join(root_path, file)
+ print(' html_path_enriched ============> ',html_path_enriched)
# Écrire le contenu modifié dans le fichier HTML
with open(html_path_enriched, "w") as f:
f.write(html_content)
diff --git a/gemini-capsules/cipherbliss_blog/index.gmi b/gemini-capsules/cipherbliss_blog/index.gmi
index 98ef8460..9e2aa046 100644
--- a/gemini-capsules/cipherbliss_blog/index.gmi
+++ b/gemini-capsules/cipherbliss_blog/index.gmi
@@ -9,5 +9,4 @@
# Articles en Français
-------------------------
-=> 2024-11-03-création-d'un-blog-gemini.gmi
-=> 20210927092238_cipherbliss_215_des-sauvegardes-qui-durent-mille-ans.gmi
+=> 20241108151758-ça-déménage.gmi
diff --git a/html-websites/cipherbliss_blog/2021/cipherbliss_215_des-sauvegardes-qui-durent-mille-ans/index.html b/html-websites/cipherbliss_blog/2021/cipherbliss_215_des-sauvegardes-qui-durent-mille-ans/index.html
deleted file mode 100644
index e8f73d0c..00000000
--- a/html-websites/cipherbliss_blog/2021/cipherbliss_215_des-sauvegardes-qui-durent-mille-ans/index.html
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Code, nouvelles technologies et entrepreneurariat par B. Lemoine
-
-
-
-
-
- --------------------------------------------------------------------------------
-
-## title: cipherbliss_blog
-
-# Des sauvegardes qui durent mille ans
-
-J'ai animé un atelier au cours du premier camp CHATONS qui a eu lieu le week-end dernier. (Le
-=> https://www.chatons.org/ Collectif des Hébergeurs Alternatifs, Transparents, Ouverts, Neutres et Solidaires
-vise à rassembler des structures proposant des **services en ligne libres, éthiques et décentralisés** afin de permettre aux utilisateur⋅ices de
-=> https://www.chatons.org/search/by-service trouver rapidement des alternatives
-respectueuses de leurs données et de leur vie privée)Pas de compte rendu du camp en lui même pour tout de suite, cependant voici un résumé de l'atelier qui aura duré près d'une heure.
-=> https://libreto.sans-nuage.fr/camps-chatons/programme https://libreto.sans-nuage.fr/camps-chatons/programme
-
-Comment se protéger des pertes de données et ne pas perdre la confiance et les précieuses données des membres de son CHATONS?
-
-L'atelier aborde la définition d'un modèle de menace pour savoir contre quoi se prémunir, et quels critères de qualité utiliser pour réaliser automatiquement ses sauvegardes en tant que particulier, ou en tant que CHATONS. On y voit de la façon la plus "grand public" à la façon la plus "techno geek" comment récupérer ses données éparpillées en ligne, historiser, chiffrer, dédupliquer, compresser, répliquer, partager les clés d'accès, et prévoir des restaurations périodiques, de sorte que les données les plus cruciales survivent à leurs administrateurs et administratrices.
-
-```{=org}
-#+caption: Jancovici et le stockage à froid, une remarquable utilisation
-```
-
-des couches géologiquement stables
-=> https://www.cipherbliss.com/wp-content/uploads/2021/09/Screenshot_2021-09-27-Les-Sauvegardes-automatiques-Slides-1024x747.jpg [IMG]
-
-Liens: Les slides sont disponibles ici:
-=> https://slides.com/tykayn/les-sauvegardes-automatiques https://slides.com/tykayn/les-sauvegardes-automatiques
-
-La feuille de calcul pour cartographier son matériel
-=> https://cloud.tykayn.fr/index.php/s/KQfYHpaSpgwrWam https://cloud.tykayn.fr/index.php/s/KQfYHpaSpgwrWam
-Le site des CHATONS:
-=> https://www.chatons.org https://www.chatons.org
-Le forum où tout se discute:
-=> %20https://forum.chatons.org
-La documentation pour ne pas réinventer la roue:
-=> https://wiki.chatons.org https://wiki.chatons.org
-
-# Métadonnées
-
-```{=org}
-#+post_ID: 1595
-```
-
-```{=org}
-#+post_slug: des-sauvegardes-qui-durent-mille-ans
-```
-
-```{=org}
-#+post_url: https://www.ciperbliss.com/2021/des-sauvegardes-qui-durent-mille-ans
-```
-
-```{=org}
-#+post_title: Des sauvegardes qui durent mille ans
-```
-
-```{=org}
-#+post_type: post #+post_mime_types:
-```
-
-```{=org}
-#+post_guid:https://www.cipherbliss.com/?p=1595 #+post_status:
-```
-
-publish #+post~datepublished~: <2021-09-27 09:22:38>
-
-```{=org}
-#+post_date_modified: <2021-09-27 09:22:42>
-```
-
-```{=org}
-#+post_index_page_roam_id: [[id:1b454ab3-53f0-411f-94e6-d488718dee27][undefined]]
-```
-
-```{=org}
-#+retrieved_from_db_at: <2024-11-07 22:57:06>
-```
-
-
-
-
-
-
-
-
- --------------------------------------------------------------------------------
-
-id: 8e220f62-f0fc-4394-8bdf-f9b3db30711e title: cipherbliss_blog
-
---------------------------------------------------------------------------------
-
-```{=org}
-#+CREATED: 2024-11-03 12:41:56
-```
-
-```{=org}
-#+SLUG: création-d'un-blog-gemini
-```
-
-```{=org}
-#+BLOG: cipherbliss_blog
-```
-
-# Création d'un blog gemini {#création-dun-blog-gemini-1}
-
-Et hop, un générateur qui fait le café à partir de fichiers orgmode ou markdown.
-
-Génération de capsules gemini et blog html à partir d'articles en fichiers Orgmode.
-
-exemple avec le blog de DragonFeu. `sources/dragonfeu~blog~`
-
-Les articles sont écrits dans le dossier source/, leur nom permet de déduire l'ordre de publication grâce à une date YYY-MM-DD en début de nom de fichier ## création d'un article Pour un article en langue En, sur le blog cipherbliss~blog~, donner le titre entre guillemets ainsi: ```shell python3 new~article~.py cipherbliss~blog~ en "Creation of a gemini blog" ``` ## prérequis pour installation
-
-Avoir des articles au format org, les mettre dans un dossier source/nom~dublog~, et avoir quelques bibliothèques dispo:
-
-```shell bash install.sh ``` [2024-11-04] Testé avec: Pandoc 2.9.2.1
-=> http://fr.archive.ubuntu.com/ubuntu/pool/universe/p/pandoc/pandoc_2.9.2.1-3ubuntu2_amd64.deb http://fr.archive.ubuntu.com/ubuntu/pool/universe/p/pandoc/pandoc_2.9.2.1-3ubuntu2_amd64.deb
-
-Python 3.10.12 ## Conversion des fichiers Org vers gemini et html Ceci va convertir ce qui se trouve dans le dossier `sources/tykayn~blog~` et produire un site web dans `html~output~/tykayn~blog~` ainsi qu'une capsule gemini dans `capsules-gemini/tykayn~blog~`
-
-```shell bash converters.sh tykayn~blog~ ```
-
-## Conversion de blog en capsule gemini
-
-L'idée est d'avoir un ensemble de billets de blogs en texte simple versionnés avec git et servis par une capsule gemini ainsi que par un site web. On aura besoin de convertir des billets existants, et de rédiger les nouveaux dans un format qui nous convient, par exemple markdown ou orgmode afin de rendre le tout le plus pérenne possible. On aura aussi besoin de référencer les images dans un dossier de notre dépot, et de gérer les relations entres articles pour que les liens aient du sens sur la capsule gemini autant que dans la version web. On souhaite aussi fournir un flux RSS, et un template de billet de blog avec une entête et un pied de page commun qui donne des moyens de contact, de soutenir l'auteur, et de revenir à l'accueil. On prendra aussi en charge différentes pages:
-
-* à propos
-* contact
-* nos projets
-* une liste des articles triés par date.
-
-Il nous faudra aussi un script de mise à jour du blog qui se charge de mettre à jour le flux rss, le dépot git. On peut aller chercher de l'automatisation dans la gestion de plusieurs capsules différentes en tagguant les articles par nom de blog, ce qui nécessite un fichier de config pour les correspondances.
-
-## Depuis wordpress Connec à la base de données mysql, et extraction de chaque article pour récupérer la partie HTML et la convertir en markdown et en fichiers org.
-
-## Depuis des fichiers orgmode. J'écris en orgmode une base de connaissances qui contient aussi un export de mes anciens billets de blog dans un dossier par blog. Pour cibler quels billets utiliser pour quel blog j'ai donc deux possibilités: leur chemin de fichier, ou des tags particuliers présents dans les fichiers org.
-=> id:5a197a1b-ddfe-4c79-8934-d9a28ab6df65 Textes de blog en préparation
-
-=> https://forge.chapril.org/tykayn/org-report-stats https://forge.chapril.org/tykayn/org-report-stats
-
-Rédaction, conversion, completion des nouveaux articles, régénération des indexs et flux rss, mise à jour du dépot git, publication des pages.
-
-Offpunk LazyBlog Dotclear, Wordpress, Hugo, Pélican Pandoc, PandocGmi
-=> https://github.com/njamescouk/pandocGmi/tree/master https://github.com/njamescouk/pandocGmi/tree/master
-
-* config par site web de son nom de domaine
-* réécriture des liens internes
-* réécriture des url des images vers le dossier courant
-* réparer la génération de fichiers gmi
-* template footer article: gestion article suivant et précédent
-* conversion des liens avec nom de domaine si relatifs
-
-```{=html}
-
-```
-
-* navigation sur les pages d'article
-
-- gestion des langues dans la source et la destination
-
-* gestion multi site et multi langue
-
-
-
-