diff --git a/gather_tags_in_json.py b/gather_tags_in_json.py index 6cf751e8..ea7ceddb 100644 --- a/gather_tags_in_json.py +++ b/gather_tags_in_json.py @@ -164,7 +164,7 @@ def generate_index_page(tag_to_files, html_output_folder): with open(index_file_path, 'w', encoding='utf-8') as index_file: index_file.write(output_html) - print(f"Page d'index générée dans {index_file_path}") + print(f"Page d'index des tags générée dans {index_file_path}") if __name__ == "__main__": diff --git a/sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org b/sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org index cec06baa..81c30a49 100644 --- a/sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org +++ b/sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org @@ -33,7 +33,9 @@ J'incite les gens que je connais et fréquente en festival manga / fanzine / des Je participe à un évènement de l'école d'ingé d'Every où le thème est "les blogs" avec d'autres gens qui le pratiquent depuis un bon bout de temps, genre Korben, Sauvane, etc. J'avais développé un script de migration des billets en base de données pour aller vers Wordpress. -Je constate aussi que le temps avançant, de plus en plus d'artistes qui avaient ouvert un blog sur une plateforme comme Livejournal, overblog ou d'autres endroits exotiques disposant de flux RSS ne mettent plus leurs oeuvres en ligne (sauf Loish <3 https://blog.loish.net ) +Je constate aussi que le temps avançant, de plus en plus d'artistes qui avaient ouvert un blog sur une plateforme comme Livejournal, overblog ou d'autres endroits exotiques disposant de flux RSS ne mettent plus leurs oeuvres en ligne (sauf Loish <3) + +[[https://blog.loish.net][Le blog artistique de Loish Van Baarle]] Les gens se rendent de plus en plus captifs de plateformes privatrices sans flux RSS qui cachent à ses abonnés ce que l'on poste selon son bon vouloir, tout en requérant aux visiteurs d'avoir un compte pour accéder à ce qui est publié. Je commence mon plan pour sortir de Facebook et Google et envisage des exports de mes données, tout en incitant d'autres à faire de même et à toujours alimenter une adresse personnelle et me mets à héberger mon instance Mastodon et à suivre des artistes dessus. @@ -51,7 +53,8 @@ Constatant qu'il y a un temps non négligeable entre mes écrits et leurs public Puis lisant du Ploum qui évoque la version finale de son blog parce qu'il en a gros des évolutions bancales et des trucs relou des CMS qui deviennent des monstres, je m'intéresse à la gestion de blog statique et aux capsules gemini. -https://ploum.net/2022-12-04-fin-du-blog-et-derniere-version.html +[[https://ploum.net/2022-12-04-fin-du-blog-et-derniere-version.html][Ploum: fin du blog et dernière version]] + ** S'inspirer des meilleurs Je regarde comment fonctionnent deux ou trois outils de génération de blog statique, en tentant d'y reporter quelques uns de mes contenus: Pelican, Hugo, Offpunk, LazyBlorg, Zola... certains sont affreusement complexes pour comprendre les infos nécessaires à leur utilisation, d'autres beaucoup moins. @@ -76,7 +79,7 @@ J'opte pour un petit ensemble d'outils qui me permettent de générer à partir - un index qui présente en entier quelques articles puis liste les suivants avec des liens au lieu de faire une infinité de pages - pas de moteur de recherche interne, on utilise un lien vers un moteur externe - une mise à disposition de l'intégralité des articles sur une forge logicielle qui cause le Git, ici -https://forge.chapril.org/tykayn/orgmode-to-gemini-blog +[[https://forge.chapril.org/tykayn/orgmode-to-gemini-blog][orgmode-to-gemini-blog]] - une automatisation de la gestion des nouvelles images - pas d'administration à plusieurs, bien que c'est tout à fait faisable en partageant un dossier et en ajoutant chacun ses articles avec la gestion de version git. - un outil en ligne de commande pour simplifier la création de nouvel article avec les quelques infos nécessaires à tout article: titre, date, texte. @@ -91,7 +94,7 @@ La mise à jour des blogs est super simple, un git pull, une génération de blo Voici les sources du dépot, qui contiennent donc tous mes écrits en ligne sous licence libre CC-BY-SA et en AGPLv3+ pour les scripts: -https://forge.chapril.org/tykayn/orgmode-to-gemini-blog +[[https://forge.chapril.org/tykayn/orgmode-to-gemini-blog][orgmode-to-gemini-blog]] Pour le fun, ce blog de cipherbliss contient 274 articles, 140 000 mots, qui se lisent en 10h34min si vous lisez à la vitesse moyenne de 220 mots minutes comme beaucoup d'adultes. diff --git a/utils.py b/utils.py new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/utils.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/utils/utils.py b/utils/utils.py index 6301d88e..74fe0adf 100644 --- a/utils/utils.py +++ b/utils/utils.py @@ -445,20 +445,35 @@ def org_to_gmi(org_text: str) -> str: Args: - org_text (str): Le texte au format Org à convertir. """ - # Nettoyer le contenu org en retirant les lignes commençant par #+post - cleaned_content = '\n'.join( line for line in org_text.splitlines() if not line.strip().startswith('#+') ) + cleaned_content = '\n'.join(line for line in org_text.splitlines() if not line.strip().startswith('#+')) org_content = cleaned_content - # print('org to gmi org_content', org_content) - # Conversion du texte Org en GMI via Pandoc + try: converted_text = pypandoc.convert_text(org_content, 'markdown', format='org') + # Remplacer les apostrophes échappées converted_text = converted_text.replace('\\\'', '\'') - # Convertir les liens HTML en liens Gemini - # Ajouter des retours à la ligne avant et après les liens web - converted_text = re.sub(r'<(https?://[^>]+)>', r'\n=> \1\n', converted_text) + # Convertir les liens simples + converted_text = re.sub(r'<(https?://[^>]+)>', r'\n=> \1\n\n', converted_text) + + + # Nettoyer les espaces multiples et retours à la ligne dans les liens simples + converted_text = re.sub(r'(\=\> [^\n]+?)[ \n]{2,}', r'\1 ', converted_text) + + # Nettoyer les espaces multiples et retours à la ligne dans les liens avec description + converted_text = re.sub(r'(\=\> [^\n]+?)[ \n]{2,}([^\n]+)', r'\1 \2', converted_text) + + + # Convertir les liens avec description [texte](url) + converted_text = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', r'\n=> \2 \1\n\n', converted_text) + + # Ajouter un saut de ligne devant les lignes commençant par # + converted_text = re.sub(r'(?m)^#', r'\n#', converted_text) + + # Remplacer les sauts de ligne multiples par un maximum de 2 sauts de ligne + converted_text = re.sub(r'\n{3,}', '\n\n', converted_text) output = f""" @@ -657,7 +672,8 @@ Navigation: if next_article_link: gemini_content += f"\nArticle suivant:\n{next_article_link}" - gemini_content += f"""----------------------------------------------- + gemini_content += f""" + ----------------------------------------------- => index.gmi Index des articles """ # Sauvegarder le fichier