up doc, remove unused wip

This commit is contained in:
Tykayn 2025-02-20 17:50:33 +01:00 committed by tykayn
parent 5fc7b49405
commit bda4f016f7
10 changed files with 16 additions and 389 deletions

View file

@ -98,14 +98,26 @@ https://forge.chapril.org/tykayn/org-report-stats
https://github.com/njamescouk/pandocGmi/tree/master
# Roadmap
- réécriture des liens internes
- conversion des liens avec nom de domaine si relatifs
- détection des ID org-roam pour réécrire les liens html
- réécriture des url des images vers le dossier courant
- les gains de performance pour ne pas régénérer les pages déjà faites alors qu'elles n'ont pas été modifiée, et un rendu statique un peu plus joli
- mettre un lien vers le fichier Org d'origine, disponible sur une forge en ligne si on l'a mis en config du site web.
- gestion des séries d'articles avec un tag orgmode #+serie
- page pour un tag listant les articles, trier par date décroissante
- les gains de performance pour ne pas régénérer les pages déjà faites alors qu'elles n'ont pas été modifiée, et un rendu statique un peu plus joli
- mettre un lien vers le fichier Org d'origine en fin d'article, disponible sur une forge en ligne si on l'a mis en config du site web.
- en fin d'article, mettre le texte incitant au soutien de l'auteur
- faire la conversion en page gemini dans `linking_articles_prev_next.py`
- vérifier que les pages non articles sont bien générées
- vérifier que les flux Atom sont valides
- documenter les scripts
- find_correspondances.py
- atom_generate.py
- deploy.sh
- back_files_to_roam.sh
# Fait
- liste de N derniers articles développés sur l'accueil, 10 par défaut

View file

@ -1,21 +0,0 @@
# script qui se connecte à une base de données wordpress, fait la correspondance entre les billets de blog existants au format org roam et ceux présents en base
# puis ajoute des informations de propriété Org Roam manquantes aux fichiers org. Le lien entre les articles et les fichiers se fait en parsant les fichiers Org pour trouver un titre correspondant.
# on rajoute le slug dans les billets de blog Orgmode en tant que propriété #+title
# si le billet org n'a pas de propriété :ID: en entête, on en crée un à partir d'un uuid.
# exemple pour le fichier :
# :PROPERTIES:
# :ID: 7de1d854-431c-4517-9749-3679aec36b16
# :BLOG_ID: 826
# :BLOG_NAME: tykayn_blog
# :BLOG_PAGE_KIND: article
# :BLOG_PAGE_TITLE: Pink elephants and limonade
# :BLOG_PAGE_LANG: fr_FR
# :BLOG_PAGE_TAGS: truc,bidule,chose
# :BLOG_PAGE_CATEGORIES: vie numérique, kotlife
# :BLOG_SLUG: pink-elephants-and-limonade
# :BLOG_PAGE_URL: https://tykayn.fr/2009/pink-elephants-and-limonade
# :BLOG_PUBLISHED_AT: 2018-07-13 15:39:58
# :BLOG_MODIFIED_AT: 2018-08-22 12:07:46
# :STATUS: publish
# :END:
# #+title: pink-elephants-and-limonade

View file

@ -1,23 +0,0 @@
#!/bin/bash
# export:
# format gemini
pandoc --template templates/pandoc/template_gemini.lua -f html -t templates/pandoc/gmi.lua -o 2024-08-l-aventure-superphenix.gmi html/Laventure\ Superphénix🔥.\ Superphénix…\ sil\ est\ un\ réacteur…\ _\ by\ Dragonfeu\ _\ Medium.html
pandoc --template templates/pandoc/template_gemini.lua -f html -t templates/pandoc/gmi.lua -o 2024-03-recapitulatif-de-mon-contenu-twitter.gmi html/Récapitulatif\ de\ mon\ contenu\ twitter\ -\ Dragonfeu\ -\ Medium.html
pandoc --template templates/pandoc/template_gemini.lua -f html -t templates/pandoc/gmi.lua -o 2024-02-strategie-mitigation-accident-nucleaire.gmi html/Stratégie\ de\ mitigation\ de\ laccident\ de\ fusion\ du\ cœur\ sur\ lEPR.\ _\ by\ Dragonfeu\ _\ Sep,\ 2024\ _\ Medium.html
pandoc --template templates/pandoc/template_gemini.lua -f html -t templates/pandoc/gmi.lua -o 2024-01-recapitulatif-centrale-nucleaire-zaporijia.gmi html/Point\ de\ situation\ sur\ la\ centrale\ nucléaire\ de\ Zaporijia\ _\ by\ Dragonfeu\ _\ Medium.html
# format markdown
pandoc --template templates/pandoc/template_gemini.lua -f html -t markdown -o 2024-08-l-aventure-superphenix.md html/Laventure\ Superphénix🔥.\ Superphénix…\ sil\ est\ un\ réacteur…\ _\ by\ Dragonfeu\ _\ Medium.html
pandoc --template templates/pandoc/template_gemini.lua -f html -t markdown -o 2024-03-recapitulatif-de-mon-contenu-twitter.md html/Récapitulatif\ de\ mon\ contenu\ twitter\ -\ Dragonfeu\ -\ Medium.html
pandoc --template templates/pandoc/template_gemini.lua -f html -t markdown -o 2024-02-strategie-mitigation-accident-nucleaire.md html/Stratégie\ de\ mitigation\ de\ laccident\ de\ fusion\ du\ cœur\ sur\ lEPR.\ _\ by\ Dragonfeu\ _\ Sep,\ 2024\ _\ Medium.html
pandoc --template templates/pandoc/template_gemini.lua -f html -t markdown -o 2024-01-recapitulatif-centrale-nucleaire-zaporijia.md html/Point\ de\ situation\ sur\ la\ centrale\ nucléaire\ de\ Zaporijia\ _\ by\ Dragonfeu\ _\ Medium.html

View file

@ -1,35 +0,0 @@
import os
import shutil
# certains fichiers org contenant du html ne sont pas convertis avec pandoc
# on les cherche et on les met de côté
def chercher_fichiers_org(dossier_source, dossier_destination):
# Vérifier si le dossier de destination existe, sinon le créer
if not os.path.exists(dossier_destination):
os.makedirs(dossier_destination)
# Parcourir tous les fichiers dans le dossier source
for racine, dossiers, fichiers in os.walk(dossier_source):
for fichier in fichiers:
if fichier.endswith(".org"):
# Ouvrir le fichier en mode lecture
with open(os.path.join(racine, fichier), "r") as f:
contenu = f.read()
# Vérifier si ":html:" est dans le contenu du fichier
if ":html:" in contenu:
# Déplacer le fichier dans le dossier de destination
shutil.move(os.path.join(racine, fichier), os.path.join(dossier_destination, fichier))
print(f"Le fichier {fichier} a été déplacé avec succès.")
else:
print(f"Le fichier {fichier} ne contient pas ':html:', il n'a pas été déplacé.")
if __name__ == "__main__":
if len(os.sys.argv) != 3:
print("Usage: python script.py <dossier_source> <dossier_destination>")
exit(1)
dossier_source = os.sys.argv[1]
dossier_destination = os.sys.argv[2]
chercher_fichiers_org(dossier_source, dossier_destination)

View file

@ -1 +0,0 @@
# construit une liste des tags présents dans les fichiers orgmode en les reliant aux slugs de ces pages, génère une page pour lister les tags, et chaque page listant les articles liés à un tag.

View file

@ -1,178 +0,0 @@
import argparse
from enrich_html import enrich_one_file
from utils import *
from website_config import configs_sites, global_config
# from enrich_html import static_page_path
# génère l'index gemini et html des articles rangés par langue
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.")
args = parser.parse_args()
# Variables personnalisables
DOSSIER_SOURCE = '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""
source_files_extension = "org"
config_title = configs_sites[args.source]['BLOG_TITLE']
use_article_file_for_name = (not global_config["slug_with_year"])
website_name = args.source
content_posts_list = ""
# on ouvre le fichier qui réunit les derniers N articles du blog pour les placer avant la liste de tous les articles
def open_latest_posts_content(config_title):
"""
Lit le contenu de latests_posts.html dans le dossier de build du titre de configuration spécifié.
Args:
config_title (str): Le titre de configuration.
Returns:
str: Le contenu de latests_posts.html.
"""
file_path = f"sources/{config_title}/build/latests_posts.html"
print("------------- contenu de posts a l index: ",file_path)
try:
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
return content
except FileNotFoundError:
print(f"Le fichier {file_path} n'existe pas.")
return None
except Exception as e:
print(f"Une erreur est survenue : {e}")
return None
# 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
def generer_index(dossier_source, fichier_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_source = os.path.join(dossier_parent, dossier_source)
content_posts_list = open_latest_posts_content(website_name)
files_static = get_files_list_of_folder(chemin_dossier_source + '/')
files_fr = get_files_list_of_folder(chemin_dossier_source + '/lang_fr')
files_en = get_files_list_of_folder(chemin_dossier_source + '/lang_en')
# Chemin complet pour le fichier d'index
chemin_fichier_index_gemini = os.path.join(dossier_parent, 'gemini-capsules', args.source, 'index.gmi')
chemin_fichier_index_html = os.path.join(dossier_parent, 'html-websites', args.source, 'index.html')
contenu_index_html = ''
print('\n index html: ', chemin_fichier_index_html)
# Génère le contenu du fichier d'index
contenu_index_gmi = f"{config_title}\n{'- ' * len(config_title)}\n\n"
# contenu_index_html = f"{config_title}\n{'- ' * len(config_title)}\n\n"
contenu_index_gmi += "\n# Navigation\n-------------------------\n"
# 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"
lang_folder = "lang_fr/"
contenu_index_html += f"<div class='latest-articles'>{content_posts_list}</div>"
files_fr.sort(reverse=True)
# ----------- indexer les articles en Français ------------------
for fichier in files_fr:
# date_string, année, slug = find_year_and_slug(fichier)
contenu_index_gmi += f"=> {fichier}\n"
link_html = fichier.replace('.gmi', '.html')
chemin_fichier_this_article_html = chemin_dossier_source + '/lang_fr/converted/' + link_html
if not os.path.exists(chemin_fichier_this_article_html):
print(f"!!!!!!!!!!!!!!! Le fichier HTML {chemin_fichier_this_article_html} n'existe pas.")
continue
link_org = fichier.replace('.gmi', '.org')
file_path_org = os.path.join(dossier_parent, "sources", website_name, lang_folder, link_org)
article_name = trouver_nom_article(file_path_org, args.source, 'org')
basename_file = os.path.basename(file_path_org)
date_str, annee, slug = find_year_and_slug_on_filename(basename_file)
article_relative_url=f"/{annee}/{slug}/"
if not article_name:
article_name = basename_file.replace('-', ' ')
if global_config["slug_with_year"]:
new_folder_path_this_article = os.path.join(dossier_parent, f"html-websites/{args.source}/{article_relative_url}/")
new_folder_path_this_article = new_folder_path_this_article.replace('//','/')
print("article_relative_url",article_relative_url)
# déplacer le fichier html dans le dossier slug,
# et le renommer en index.html ensuite pour ne pas modifier l'index du blog
contenu_index_html += f"<br/><a href={article_relative_url}>{date_str} - {article_name}</a>"
mylog(" -------- créer le dossier de l article ", new_folder_path_this_article)
os.makedirs(os.path.dirname(new_folder_path_this_article), exist_ok=True)
mylog('chemin_fichier_this_article_html',chemin_fichier_this_article_html)
shutil.copy2(chemin_fichier_this_article_html, new_folder_path_this_article + 'index.html')
else:
contenu_index_html += f"<br/><a href=/{lang_folder}/{link_html}>{link_html}</a>"
contenu_index_html += "<hr/>"
contenu_index_html += "<h1>Navigation</h1>"
for fichier in files_static:
mylog(" -------- fichier ", fichier)
link_html = fichier.replace('.gmi', '.html')
link_org = fichier.replace('.gmi', '.org')
file_path_org = os.path.join(dossier_parent, "sources", website_name, link_org)
article_name = trouver_nom_article(file_path_org, args.source, 'org')
if article_name:
contenu_index_gmi += f"=> {fichier} {article_name}\n"
else:
contenu_index_gmi += f"=> {fichier}\n"
if fichier != "index.gmi":
mylog(' -------- rechercher le nom de l article dans le fichier ')
if use_article_file_for_name:
article_name = link_html
else:
article_name = trouver_nom_article(file_path_org, args.source, 'org')
if not article_name:
article_name = link_html
else:
article_name = 'Index'
article_name = article_name.replace('_', ' ')
contenu_index_html += f"<br/><a href=/{link_html}>{article_name}</a>"
# ---------------- pareil en anglais TODO
# contenu_index_gmi += "\n# Articles in English\n-------------------------\n"
# contenu_index_html += "<h1>Articles in English</h1>"
# lang_folder="lang_en/"
# for fichier in files_en:
# ----------------------------------------
print('chemin_fichier_index_html', chemin_fichier_index_html)
print(' ')
with open(chemin_fichier_index_html, 'w', encoding='utf-8') as file:
# print('contenu_index_html', contenu_index_html)
# contenu_index_html = enrich_one_file(contenu_index_html)
file.write(contenu_index_html)
print(f" ------------ build_indexes: Fichier d'index '{chemin_fichier_index_html}' généré avec succès.")
# É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" ------------ 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}")
if __name__ == "__main__":
generer_index(DOSSIER_SOURCE, FICHIER_INDEX)

View file

@ -1,54 +0,0 @@
#!/bin/bash
# billets de blog concaténés sur l'accueil
#!/bin/bash
# Vérifie si un argument est passé, sinon demander le dossier en entrée
if [ "$1" == "" ]; then
echo "veuillez spécifier un dossier source en argument de ce script."
ls -l sources/
exit 1
fi
count_derniers_billets=4
dossier=$1
output_orgfile_list_billets="sources/$dossier/build/latests_posts.org"
langue_liste="fr"
# Concaténer les noms des fichiers et écrire le résultat dans un fichier
mkdir -p "sources/$dossier/build"
touch "sources/$dossier/build/latests_posts.org"
touch "sources/$dossier/build/latests_posts_fr.org"
touch "sources/$dossier/build/latests_posts_en.org"
echo "" >"$output_orgfile_list_billets"
# concaténer les derniers billets en date pour faire une page d'accueil du blog
# Réinitialisation du fichier de sortie
echo "" >"sources/$dossier/build/latests_posts.org"
echo "" >"sources/$dossier/build/latests_posts_fr.org"
echo "" >"sources/$dossier/build/latests_posts_en.org"
echo "=========== billets sur la page d'accueil : $count_derniers_billets"
ls -nr sources/$dossier/lang_fr/*.org | head -n $count_derniers_billets
# ls -n sources/$dossier/lang_en/*.org | head -n $count_derniers_billets
# Récupération des derniers billets pour chaque langue
# les billets org doivent avoir un préfixe de date dans le nom de fichier afin d'etre rangés par date
for file in $(ls -nr sources/$dossier/lang_fr/*.org | head -n $count_derniers_billets); do
if [ -f "$file" ]; then
cat "$file" >>"$output_orgfile_list_billets"
echo "$file"
echo "---------------" >>"$output_orgfile_list_billets" # Ajout d'une ligne vide entre les billets
fi
done
echo "=========== Les $count_derniers_billets derniers billets ont été concaténés dans $output_orgfile_list_billets"
# cp "sources/$dossier/build/latests_posts_$langue_liste.org" "sources/$dossier/build/latests_posts.org"
#
pandoc "$output_orgfile_list_billets" -o "sources/$dossier/build/latests_posts.html"
#
echo "=========== conversion en html ok. Consulter le rendu:"
echo " "
echo "firefox \"sources/$dossier/build/latests_posts.html\""
echo " "
echo "=========== "

View file

@ -4,10 +4,6 @@
# liste des dossiers à convertir
# blogs_folders=("dragonfeu_blog" "tykayn_blog" "cipherbliss_blog" "qzine_blog" "cil_gometz")
blogs_folders=()
# blogs_folders=("tykayn_blog" "qzine_blog" "dragonfeu_blog")
# blogs_folders=("cil_gometz")
# blogs_folders=("qzine_blog")
# blogs_folders=("cipherbliss_blog")
root_folder="/home/poule/encrypted/stockage-syncable/www/development/html/orgmode-to-gemini-blog"
source_file_extension="org"
@ -49,44 +45,6 @@ convert_sources() {
ls $website_full_path/*.org
# echo "----------- convert_sources : aucun document dans converted"
# if [ -z "$(ls -A /sources/$website_name/lang_fr/converted/)" ]; then
# echo "coucou on convertit tout"
# for i in $(find "$website_full_path" -maxdepth 1 -type f -name "*.$source_file_extension"); do
# # echo "----------- convert_sources : org -> html et -> md : "
# # echo " $i"
# # echo ""
# pandoc --from "${source_file_extension}" --to html -s "${i}" -o "${website_full_path}/converted/${i%.${source_file_extension}}.html" --metadata title="$i - $website_name"
# pandoc --from "${source_file_extension}" --to markdown -s "${i}" -o "${website_full_path}/converted/${i%.${source_file_extension}}.md" --metadata title="$website_name"
# done
# else
# echo "on ne convertit que les plus récents "
# for i in $(find "$website_full_path" -maxdepth 1 -type f -name "*.$source_file_extension" -newermt "2024-11-20"); do
# # echo "----------- convert_sources : org -> html et -> md : "
# # echo " $i"
# # echo ""
# pandoc --from "${source_file_extension}" --to html -s "${i}" -o "${website_full_path}/converted/${i%.${source_file_extension}}.html" --metadata title="$i - $website_name"
# pandoc --from "${source_file_extension}" --to markdown -s "${i}" -o "${website_full_path}/converted/${i%.${source_file_extension}}.md" --metadata title="$website_name"
# done
# fi
# exit
# convertir seulement les pages récentes
# for i in $(find "$website_full_path/lang_fr" -maxdepth 1 -type f -name "*.$source_file_extension" -newermt "2024-11-20") ; do
# # ne transformer que les posts récents dans le dossier converted
# # Transformer en html et en markdown
# pandoc --from "${source_file_extension}" --to html -s "${i}" -o \
# "${website_full_path}/converted/${i%.${source_file_extension}}.html" --metadata title="$i - $website_name"
# # pandoc --from "${source_file_extension}" --to markdown -s "${i}" -o "${website_full_path}/converted/${i%.${source_file_extension}}.md" --metadata title="$website_name"
# done
# for i in $("$website_full_path/lang_en" -maxdepth 1 -type f -name "*.$source_file_extension" -newermt "2024-11-20") ; do
# # ne transformer que les posts récents dans le dossier converted
# # Transformer en html et en markdown
# pandoc --from "${source_file_extension}" --to html -s "${i}" -o \
# "${website_full_path}/converted/${i%.${source_file_extension}}.html" --metadata title="$i - $website_name"
# # pandoc --from "${source_file_extension}" --to markdown -s "${i}" -o "${website_full_path}/converted/${i%.${source_file_extension}}.md" --metadata title="$website_name"
# done
cd $first_wd
}
@ -112,9 +70,6 @@ generate_website() {
mkdir -p html-websites/$website_name
mkdir -p html-websites/$website_name/feed
# 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
@ -151,12 +106,6 @@ convert_markdown_to_gmi() {
mkdir -p gemini-capsules/$website_name
mkdir -p gemini-capsules/$website_name/lang_fr
mkdir -p gemini-capsules/$website_name/lang_en
# 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
@ -220,11 +169,6 @@ for website_name in "${blogs_folders[@]}"; do
python3 linking_articles_prev_next.py $website_name
python3 gather_tags_in_json.py $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/
# python3 enrich_html.py $website_name --style $style_file
# copier le style dans le dossier html
cp $style_file html-websites/$website_name/style.css
# copier le script permettant la recherche

View file

@ -1 +0,0 @@
<div class="template-header"></div>

View file

@ -1,16 +0,0 @@
# faire correspondre les identifiants org roam aux fichiers exportés
#python3 find_correspondances.py
# prendre les fichiers réécrits de generated_wp2org_output et les mettre en source
#rm -rf sources/tykayn_blog/lang_fr/*
#rsync sources/generated_wp2org_output/tkblog/*.org sources/tykayn_blog/lang_fr/
rm -rf sources/qzine_blog/lang_fr/*
rsync sources/generated_wp2org_output/qzine/*.org sources/qzine_blog/lang_fr/
rm -rf sources/cipherbliss_blog/lang_fr/*
cp sources/generated_wp2org_output/cipherbliss/*.org sources/cipherbliss_blog/lang_fr/
rm -rf sources/cil_gometz/lang_fr/*
rsync sources/generated_wp2org_output/cil/*.org sources/cil_gometz/lang_fr/