unify slugs

This commit is contained in:
Tykayn 2024-11-15 23:55:20 +01:00 committed by tykayn
parent a0bb742d4c
commit 63d51307d5
22 changed files with 90 additions and 2177 deletions

View File

@ -55,12 +55,11 @@ def generer_index(dossier_source, fichier_index):
# ----------- indexer les articles en Français ------------------
for fichier in files_fr:
date_string, année, slug = find_year_and_slug(fichier)
# 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
chemin_fichier_this_article_html = chemin_dossier_source + '/lang_fr/converted/' + link_html
link_org = fichier.replace('.gmi', '.org')
file_path_org = os.path.join(dossier_parent, "sources", website_name, lang_folder, link_org)
@ -70,15 +69,14 @@ def generer_index(dossier_source, fichier_index):
article_relative_url = detect_slug_in_file_basename(basename_file)
if not article_name:
article_name = slug.replace('-', ' ')
article_name = article_relative_url.replace('-', ' ')
if global_config["slug_with_year"]:
new_folder = article_relative_url
new_folder_path_this_article = os.path.join(dossier_parent, f"html-websites{args.source}/{new_folder}/")
new_folder_path_this_article = os.path.join(dossier_parent, f"html-websites/{args.source}/{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}>{année} {article_name}</a>"
contenu_index_html += f"<br/><a href={article_relative_url}>{article_name}</a>"
os.makedirs(os.path.dirname(new_folder_path_this_article), exist_ok=True)
shutil.copy(chemin_fichier_this_article_html, new_folder_path_this_article + 'index.html')
else:

View File

@ -108,7 +108,7 @@ def enrich_one_file(html_content: str, partials: dict = {"header_page": "", "foo
<div id="navbarBasicExample" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="{template_content['NDD']}">
<a class="logo" href="{template_content['NDD']}">
<img src="{template_content['SITE_ICON']}"
class="img-fluid">
</a>

View File

@ -48,7 +48,7 @@
<div id="navbarBasicExample" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="https://www.cipherbliss.com">
<a class="logo" href="https://www.cipherbliss.com">
<img src="https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png"
class="img-fluid">
</a>

View File

@ -48,7 +48,7 @@
<div id="navbarBasicExample" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="https://www.cipherbliss.com">
<a class="logo" href="https://www.cipherbliss.com">
<img src="https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png"
class="img-fluid">
</a>
@ -100,7 +100,7 @@
<div id="navbarBasicExample" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="https://www.cipherbliss.com">
<a class="logo" href="https://www.cipherbliss.com">
<img src="https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png"
class="img-fluid">
</a>
@ -133,7 +133,7 @@
Cipher Bliss
- - - - - - - - - - - -
<br/><a href=2024/05_cipherbliss_blog_suivi-de-rédaction-de-livre-orgmode>2024 Suivi de rédaction de livre Orgmode</a><br/><a href=2024/04_cipherbliss_blog_techniques-pour-planter-votre-association-ou-votre-entreprise>2024 Techniques pour planter votre association ou votre entreprise</a><br/><a href=2024/03-connaître-la-couleur-des-jours-edf-tempo-en-ligne-de-commande>2024 Connaître la couleur des jours EDF Tempo en ligne de commande</a><br/><a href=2024/10-tags>2024 Tags - Étiquettes de cipherbliss</a><br/><a href=2024/37-ressources-de-café-vie-privée>2024 Ressources de café vie privée</a><br/><a href=2024/58-ça-déménage>2024 Ça déménage</a><br/><a href=2024/56_cipherbliss_blog_soutien>2024 Soutien</a><br/><a href=2024/56_cipherbliss_blog_création-d'un-blog-gemini>2024 Création d'un blog gemini</a><br/><a href=2011/59_cipherbliss_blog_120_bienvenue-sur-informageek>2011 Bienvenue sur Informageek !</a><hr/><h1>Navigation</h1><br/><a href=/contact.html>Contact</a>
<br/><a href=2024/suivi-de-rédaction-de-livre-orgmode>Suivi de rédaction de livre Orgmode</a><br/><a href=2024/techniques-pour-planter-votre-association-ou-votre-entreprise>Techniques pour planter votre association ou votre entreprise</a><br/><a href=2024/connaître-la-couleur-des-jours-edf-tempo-en-ligne-de-commande>Connaître la couleur des jours EDF Tempo en ligne de commande</a><br/><a href=2024/tags>Tags - Étiquettes de cipherbliss</a><br/><a href=2024/ressources-de-café-vie-privée>Ressources de café vie privée</a><br/><a href=2024/ça-déménage>Ça déménage</a><br/><a href=2024/soutien>Soutien</a><br/><a href=2024/création-d'un-blog-gemini>Création d'un blog gemini</a><br/><a href=2011/bienvenue-sur-informageek>Bienvenue sur Informageek !</a><hr/><h1>Navigation</h1><br/><a href=/contact.html>Contact</a>
<p class="after-article">
</p>

View File

@ -103,16 +103,19 @@ p {
}
h1 {
font-size: 4rem;
color: #221d30;
font-size: 2.5rem;
text-decoration: underline;
}
h2 {
font-size: 3rem;
font-size: 2rem;
text-decoration: underline;
}
h3 {
font-size: 1.5rem;
text-decoration: underline;
}
h1,

View File

@ -103,16 +103,19 @@ p {
}
h1 {
font-size: 4rem;
color: #221d30;
font-size: 2.5rem;
text-decoration: underline;
}
h2 {
font-size: 3rem;
font-size: 2rem;
text-decoration: underline;
}
h3 {
font-size: 1.5rem;
text-decoration: underline;
}
h1,

View File

@ -1,201 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 309</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2011-11-26 17:01:59&gt;</li>
<li>modifié: &lt;2011-11-26 17:47:37&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="bienvenue-sur-informageek-1">Bienvenue sur Informageek !</h2>
<p>ceci<sub>estduhtml</sub></p>
<p>&lt;img alt="<a
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
src="<a
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
/&gt;</p>
<p>Salut les ptis poulets et bienvenue dans un lieu de déperdition
geekesque où vont s'affronter divers centres d'intérêt autour des
nouvelles technologies, de la programmation et de l'insolite du web.
Bonne visite!</p>
<p>(&lt;a title="Internet" hreflang="fr" href="<a
href="https://fr.wikipedia.org/wiki/Internet">https://fr.wikipedia.org/wiki/Internet</a>"&gt;photo:
wikipédia page internet&lt;/a&gt;)</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>

View File

@ -1,313 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1
id="connaître-la-couleur-des-jours-edf-tempo-en-ligne-de-commande-1">Connaître
la couleur des jours EDF Tempo en ligne de commande</h1>
<p>EDF expose une API pour connaître les couleurs de jour TEMPO, mais
cette api n'est pas bien référencée sur le wouaib, ce sont donc des
sites qui n'ont rien à voir qui vous donneront cette info avec moult
trackers et pubs de partout.</p>
<p>Voici l'url dont vous avez besoin:</p>
<p>&gt; <a
href="https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&amp;dateApplicationBorneInf=%7Bdate_inférieure%7D&amp;dateApplicationBorneSup=%7Bdate_supérieure%7D&amp;identifiantConsommateur=src">https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&amp;dateApplicationBorneInf={date_inférieure}&amp;dateApplicationBorneSup={date_supérieure}&amp;identifiantConsommateur=src</a></p>
<p>Cette API de commerce EDF ne fonctionne que si vous demandez des
dates ayant 365 jours d'écart de différence, et si vous ne mettez pas de
zéro précédant le numéro de journée au format année-mois-jour. Autre
limitation, la couleur du jour du lendemain vous sera donnée seulement à
partir de 11h du matin dans la journée.</p>
<p>Fabriquez vous un petit script en python pour aller pêcher ce
calendrier, piocher les couleurs des deux derniers jours. Il vous
suffira d'un alias de commande pour lancer "python
mon<sub>scripttempo</sub>.py" en ayant le dossier où le script est placé
dans votre variable d'environnement PATH.</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode python"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> requests</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> json</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> datetime <span class="im">import</span> datetime, timedelta </span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> date_il_y_a_un_an(date):</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a> date_obj <span class="op">=</span> datetime.strptime(date, <span class="st">&quot;%Y-%m-</span><span class="sc">%d</span><span class="st">&quot;</span>)</span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a> date_il_y_a_un_an <span class="op">=</span> date_obj <span class="op">-</span> timedelta(days<span class="op">=</span><span class="dv">365</span>)</span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> date_il_y_a_un_an.strftime(<span class="st">&quot;%Y-%m-</span><span class="sc">%d</span><span class="st">&quot;</span>)</span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> get_tempo_for_today_and_tomorrow():</span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a> <span class="co"># Obtenir la date d&#39;aujourd&#39;hui</span></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a> datenow <span class="op">=</span> datetime.now()</span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a> sup <span class="op">=</span> (datenow <span class="op">+</span> timedelta(days<span class="op">=</span><span class="dv">1</span>))</span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a> inf <span class="op">=</span> date_il_y_a_un_an(datenow.strftime(<span class="st">&quot;%Y-%m-</span><span class="sc">%d</span><span class="st">&quot;</span>))</span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a> <span class="co"># Obtenir la date de demain</span></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a> sup <span class="op">=</span> sup.strftime(<span class="st">&quot;%Y-%m-</span><span class="sc">%d</span><span class="st">&quot;</span>)</span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a> sup <span class="op">=</span> sup.replace(<span class="st">&quot;-0&quot;</span>, <span class="st">&quot;-&quot;</span>)</span>
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a> inf <span class="op">=</span> inf.replace(<span class="st">&quot;-0&quot;</span>, <span class="st">&quot;-&quot;</span>)</span>
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a> <span class="co"># print(&quot;Date inf :&quot;, inf)</span></span>
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a> <span class="co"># print(&quot;Date sup:&quot;, sup)</span></span>
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a> <span class="co"># URL de l&#39;API d&#39;EDF pour récupérer les informations sur les couleurs des jours de l&#39;offre Tempo</span></span>
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a> url <span class="op">=</span> <span class="ss">f&quot;https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&amp;dateApplicationBorneInf=</span><span class="sc">{</span>inf<span class="sc">}</span><span class="ss">&amp;dateApplicationBorneSup=</span><span class="sc">{</span>sup<span class="sc">}</span><span class="ss">&amp;identifiantConsommateur=src&quot;</span></span>
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(url)</span>
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a> <span class="co"># Effectuer la requête HTTP et récupérer la réponse JSON</span></span>
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a> response <span class="op">=</span> requests.get(url)</span>
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a> data <span class="op">=</span> json.loads(response.text)</span>
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a> <span class="co"># Récupérer la liste des couleurs des jours pour les 30 prochains jours</span></span>
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a> calendrier <span class="op">=</span> data[<span class="st">&quot;content&quot;</span>][<span class="st">&quot;options&quot;</span>][<span class="dv">0</span>][<span class="st">&quot;calendrier&quot;</span>]</span>
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">=</span><span class="st">&quot;&quot;</span></span>
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a> <span class="co"># # Afficher les couleurs des jours pour le prochain jour</span></span>
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> jour <span class="kw">in</span> calendrier[<span class="op">-</span><span class="dv">2</span>:]:</span>
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a> date <span class="op">=</span> jour[<span class="st">&quot;dateApplication&quot;</span>]</span>
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a> code_couleur <span class="op">=</span> jour[<span class="st">&quot;statut&quot;</span>]</span>
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> code_couleur <span class="op">==</span> <span class="st">&quot;TEMPO_BLEU&quot;</span>:</span>
<span id="cb1-43"><a href="#cb1-43" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f&quot;</span><span class="ch">\033</span><span class="ss">[34m</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ch">\033</span><span class="ss">[0m</span><span class="ch">\n</span><span class="ss">&quot;</span>)</span>
<span id="cb1-44"><a href="#cb1-44" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> code_couleur <span class="op">==</span> <span class="st">&quot;TEMPO_BLANC&quot;</span>:</span>
<span id="cb1-45"><a href="#cb1-45" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f&quot;</span><span class="ch">\033</span><span class="ss">[37m</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ch">\033</span><span class="ss">[0m</span><span class="ch">\n</span><span class="ss">&quot;</span>)</span>
<span id="cb1-46"><a href="#cb1-46" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> code_couleur <span class="op">==</span> <span class="st">&quot;TEMPO_ROUGE&quot;</span>:</span>
<span id="cb1-47"><a href="#cb1-47" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f&quot;</span><span class="ch">\033</span><span class="ss">[31m</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ch">\033</span><span class="ss">[0m</span><span class="ch">\n</span><span class="ss">&quot;</span>)</span>
<span id="cb1-48"><a href="#cb1-48" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
<span id="cb1-49"><a href="#cb1-49" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f&quot;</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ss">&quot;</span>)</span>
<span id="cb1-50"><a href="#cb1-50" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-51"><a href="#cb1-51" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> texte_retour</span>
<span id="cb1-52"><a href="#cb1-52" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-53"><a href="#cb1-53" aria-hidden="true" tabindex="-1"></a>texte <span class="op">=</span> get_tempo_for_today_and_tomorrow()</span>
<span id="cb1-54"><a href="#cb1-54" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(texte)</span>
<span id="cb1-55"><a href="#cb1-55" aria-hidden="true" tabindex="-1"></a></span></code></pre></div>
<p>Bonne réduction des pointes de conso!</p>
</body>
</html>

View File

@ -1,214 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1
id="techniques-pour-planter-votre-association-ou-votre-entreprise-1">Techniques
pour planter votre association ou votre entreprise</h1>
<p>:inclusivité:</p>
<p>Il existe moult techniques pour que votre asso n'accueille pas plus
de gens:</p>
<ul>
<li>dénigrer les centres d'intérêts des nouveaux membres</li>
<li>faire de la rétention d'information, ne pas documenter, ne pas
partager les accès aux outils, aux salles, aux gens dont l'asso
dépend</li>
<li>se plaindre que y'a pas assez de gens pour faire les corvées</li>
<li>attaquer le physique des gens</li>
<li>ignorer les gens qu'on ne connaît pas</li>
<li>faire comme on a toujours fait</li>
<li>ne s'occuper que d'un aspect et d'une façon de la cause importante
de l'asso</li>
<li>ne pas s'informer sur ce que font d'autres gens sur le même
sujet</li>
<li>faire des "blagues" à propos des femmes</li>
<li>ne laisser la parole qu'aux personnes qui en ont l'habitude</li>
<li>ne pas accompagner les gens à faire les activités</li>
</ul>
<p>On retrouve toutes ces choses dans des tas d'associations parce que
c'est la façon principale dont sont gérées toutes les structures à l'ère
post capitaliste: le pouvoir est détenu par ceux qui s'appuient sur les
structures de domination d'hier, sans reproduction de ces injustices et
de ces violences, pas de pouvoir pour les mêmes.</p>
<p>Alors s'il vous plaît, ne faites pas ça dans vos milieux associatifs
et mettez en place des actions pour veiller à ce que vous ne
reproduisiez pas ce que vous subissez par ailleurs. la tendance
naturelle et la normalisation de ces violences fait que si vous ne
prenez pas soin de les repérer et de les démonter, vous allez
"naturellement" les mettre en place.</p>
<p>Sauf qu'en plus, dans les milieux bénévoles, vous n'êtes pas payé
pour subir ça, contrairement à d'autres endroits.</p>
<p>Bien sûr, il n'est pas non plus normal de subir cela dans des milieux
qui vous paient pour y dédier votre temps.</p>
<p>Vous avez essayé de contribuer à une association et avez vu votre
motivation défoncée par des gens internes à cette asso qui vous ont
empêché d'y participer ou ont dénigré ce que vous souhaitez faire ?
Témoignez en commentaire.</p>
</body>
</html>

View File

@ -1,175 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="suivi-de-rédaction-de-livre-orgmode-1">Suivi de rédaction de
livre Orgmode</h1>
<p>ouiii voilà hop hop</p>
</body>
</html>

View File

@ -1,218 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="tags---étiquettes-de-cipherbliss">Tags - Étiquettes de
cipherbliss</h1>
<p>Voici les thématiques abordées sur ce site:</p>
<p><a href="file:///tag/ai/">AI</a> <a
href="file:///tag/archives/">archives</a> <a
href="file:///tag/autohebergement/">autohébergement</a> <a
href="file:///tag/backup/">backup</a> <a
href="file:///tag/blockchain/">blockchain</a> <a
href="file:///tag/borg/">borg</a> <a
href="file:///tag/caisse/">caisse</a> <a
href="file:///tag/comptabilite/">comptabilité</a> <a
href="file:///tag/comptes/">comptes</a> <a
href="file:///tag/data-visualisation/">data visualisation</a> <a
href="file:///tag/design/">design</a> <a
href="file:///tag/email/">email</a> <a
href="file:///tag/entreprise/">entreprise</a> <a
href="file:///tag/entreprise-individuelle/">entreprise individuelle</a>
<a href="file:///tag/ethereum/">ethereum</a> <a
href="file:///tag/facebook/">facebook</a> <a
href="file:///tag/factures/">factures</a> <a
href="file:///tag/floss/">FLOSS</a> <a
href="file:///tag/fediverse/">fédiverse</a> <a
href="file:///tag/gestion-de-projet/">gestion de projet</a> <a
href="file:///tag/gestion-du-temps/">gestion du temps</a> <a
href="file:///tag/gestionnaire-de-mot-de-passe/">gestionnaire de mot de
passe</a> <a href="file:///tag/gimp/">gimp</a> <a
href="file:///tag/git/">git</a> <a
href="file:///tag/logiciellibre/">logiciellibre</a> <a
href="file:///tag/logiciel-libre/">logiciel libre</a> <a
href="file:///tag/mastodon/">mastodon</a> <a
href="file:///tag/mobilizon/">mobilizon</a> <a
href="file:///tag/mot-de-passe/">mot de passe</a> <a
href="file:///tag/mysql/">mysql</a> <a
href="file:///tag/nextcloud/">nextcloud</a> <a
href="file:///tag/open-source/">open source</a> <a
href="file:///tag/openstreetmap/">openstreetmap</a> <a
href="file:///tag/orgmode/">orgmode</a> <a
href="file:///tag/osm/">OSM</a> <a href="file:///tag/photos/">photos</a>
<a href="file:///tag/pim/">pim</a> <a
href="file:///tag/projet/">projet</a> <a
href="file:///tag/prevision/">prévision</a> <a
href="file:///tag/python/">python</a> <a
href="file:///tag/reseau-social/">réseau social</a> <a
href="file:///tag/sauvegardes/">sauvegardes</a> <a
href="file:///tag/script/">script</a> <a href="file:///tag/ux/">UX</a>
<a href="file:///tag/vie-privee/">vie privée</a></p>
</body>
</html>

View File

@ -1,220 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="ressources-de-café-vie-privée-1">Ressources de café vie
privée</h1>
<p>Voici de quoi se repérer dans la jungle des notions voisines à celle
de la vie privée.</p>
<p>Vous retrouverez ici de nombreuses notions abordées lors des cafés
vie privée que janime, avec dautres personnes intéressées par les les
enjeux autour des logiciels libres et des communs, tel que le groupe <a
href="https://web.archive.org/web/20240617080716/https://www.liness.org/">Liness</a>
en Essonne.</p>
<p>Les slides de mes présentations et les autres fichiers de support de
présentation sont disponibles dans <a
href="https://web.archive.org/web/20240617080716/https://cloud.tykayn.fr/index.php/s/FQ57cqXmJ6ngDfo">le
dossier de partage nextcloud</a>: <a
href="https://web.archive.org/web/20240617080716/https://cloud.tykayn.fr/index.php/s/FQ57cqXmJ6ngDfo"><span>https://cloud.tykayn.fr/index.php/s/FQ57cqXmJ6ngDfo</span></a></p>
<p>Vous pouvez me contacter via les divers moyens listés dans <a
href="https://web.archive.org/web/20240617080716/https://www.cipherbliss.com/contact">la
page dédiée aux moyens de contact</a>.</p>
<p>Dans un café vie privée on vulgarise auprès du grand public des
enjeux et des notions autour de la vie privée et des technologies
numériques. Voici quelques sujets régulièrement abordés dans les
ateliers:</p>
<p>Comprendre les dangers dun monde sans vie privée répandu sous la
fameuse idée que l' »on a rien à cacher », communiquer de façon
sécurisée, réaliser des sauvegardes automatiques, comprendre
larchitecture dinternet et du web, contribuer au libre, défendre le
droit daccès à linformation de qualité, comprendre les sciences,
sortir des GAFAM, adopter <a
href="https://web.archive.org/web/20240617080716/https://www.chatons.org/">les
CHATONS</a>, protéger des accès avec des <a
href="https://web.archive.org/web/20240617080716/https://www.cipherbliss.com/comment-ne-plus-perdre-de-temps-avec-ses-mots-de-passe/">gestionnaires
de mot de passe</a>, sortir des bulles de filtrage des médias sociaux,
récupérer son temps dattention, suivre les évolutions juridiques et les
atteintes aux libertés fondamentales, remettre la solidarité humaine et
lémancipation au cœur des enjeux de société.</p>
<p>Des évènements et groupes de personnes similaires peuvent être
retrouvés dans l<a
href="https://web.archive.org/web/20240617080716/https://www.agendadulibre.org/">agenda
du libre</a> et dans le fédiverse.</p>
<p>Des recettes de cookies sous licence libre, la fameuse pâtisserie qui
habite dans nos navigateurs web : <a
href="https://web.archive.org/web/20240617080716/https://www.cuisine-libre.org/cookies"><span>https://www.cuisine-libre.org/cookies</span></a></p>
<p>Trouver des alternatives aux logiciels privateurs: <a
href="https://web.archive.org/web/20240617080716/https://alternativeto.net/"><span>https://alternativeto.net</span></a></p>
<p>Le covoiturage libre: <a
href="https://web.archive.org/web/20240617080716/https://www.mobicoop.fr/"><span>https://www.mobicoop.fr</span></a></p>
<p>Sci hub pour libérer laccès aux publications scientifiques: <a
href="https://web.archive.org/web/20240617080716/https://sci-hub.hkvisa.net/"><span>https://sci-hub.hkvisa.net</span></a></p>
<p>Bon voyage sur les internets!</p>
</body>
</html>

View File

@ -1,237 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="création-dun-blog-gemini-1">Création d'un blog gemini</h1>
<p>Et hop, un générateur qui fait le café à partir de fichiers orgmode
ou markdown.</p>
<p>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:</p>
<ul>
<li>à propos</li>
<li>contact</li>
<li>nos projets</li>
<li>une liste des articles triés par date.</li>
</ul>
<p>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.</p>
<h1 id="export-darticles-existants">export d'articles existants</h1>
<h2 id="depuis-wordpress">Depuis wordpress</h2>
<p>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.</p>
<h2 id="depuis-des-fichiers-orgmode.">Depuis des fichiers orgmode.</h2>
<p>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. <a
href="id:5a197a1b-ddfe-4c79-8934-d9a28ab6df65">Textes de blog en
préparation</a> <a
href="https://forge.chapril.org/tykayn/org-report-stats">https://forge.chapril.org/tykayn/org-report-stats</a></p>
<h1 id="flux-créatif">Flux créatif</h1>
<p>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.</p>
<h1 id="sources-dinspiration">Sources d'inspiration:</h1>
<p>Offpunk LazyBlog Dotclear, Wordpress, Hugo, Pélican Pandoc, PandocGmi
<a
href="https://github.com/njamescouk/pandocGmi/tree/master">https://github.com/njamescouk/pandocGmi/tree/master</a></p>
<h1 id="roadmap">Roadmap</h1>
<ul>
<li>config par site web de son nom de domaine</li>
<li>réécriture des liens internes</li>
<li>réécriture des url des images vers le dossier courant</li>
<li>réparer la génération de fichiers gmi</li>
<li>template footer article: gestion article suivant et précédent</li>
<li>conversion des liens avec nom de domaine si relatifs</li>
</ul>
<h1 id="fait">Fait</h1>
<ul>
<li>navigation sur les pages d'article</li>
</ul>
<p>-gestion des langues dans la source et la destination</p>
<ul>
<li>gestion multi site et multi langue</li>
</ul>
</body>
</html>

View File

@ -1,182 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="soutien-1">Soutien</h1>
<p>[2024-11-03] Si vous aimez ce que nous faisons à Cipher Bliss, vous
pouvez nous soutenir de plusieurs façons: en faisant un micro don sur
liberapay. Donner : <a
href="https://liberapay.com/cipherbliss/donate">https://liberapay.com/cipherbliss/donate</a></p>
<p>Le plus simple nous pour nous faire connaître étant de partager cet
article. Suivez moi sur Mastodon @tykayn@mastodon.cipherbliss.com. <a
href="https://mastodon.cipherbliss.com/@tykayn">https://mastodon.cipherbliss.com/@tykayn</a></p>
<p>Ce site restera libre comme un gnou dans la nature et sans pubs,
parce qu'on vous aime. Que la source soit avec vous!</p>
</body>
</html>

View File

@ -1,177 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="ça-déménage-1">Ça déménage</h1>
<p>Oui ce blog fait bouger les lignes avec son générateur statique fait
maison à partir de fichiers Orgmode. La peinture est fraîche.</p>
<p><a
href="https://forge.chapril.org/tykayn/orgmode-to-gemini-blog">https://forge.chapril.org/tykayn/orgmode-to-gemini-blog</a></p>
</body>
</html>

View File

@ -1,201 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 309</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2011-11-26 17:01:59&gt;</li>
<li>modifié: &lt;2011-11-26 17:47:37&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="bienvenue-sur-informageek-1">Bienvenue sur Informageek !</h2>
<p>ceci<sub>estduhtml</sub></p>
<p>&lt;img alt="<a
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
src="<a
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
/&gt;</p>
<p>Salut les ptis poulets et bienvenue dans un lieu de déperdition
geekesque où vont s'affronter divers centres d'intérêt autour des
nouvelles technologies, de la programmation et de l'insolite du web.
Bonne visite!</p>
<p>(&lt;a title="Internet" hreflang="fr" href="<a
href="https://fr.wikipedia.org/wiki/Internet">https://fr.wikipedia.org/wiki/Internet</a>"&gt;photo:
wikipédia page internet&lt;/a&gt;)</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>

View File

@ -38,15 +38,12 @@ https://forge.chapril.org/tykayn/org-report-stats
régénération des indexs et flux rss,
mise à jour du dépot git,
publication des pages.
* Sources d'inspiration:
Offpunk
LazyBlog
Dotclear, Wordpress, Hugo, Pélican
Pandoc, PandocGmi
Offpunk, LazyBlog, Dotclear, Wordpress, Hugo, Pélican, Pandoc, PandocGmi
https://github.com/njamescouk/pandocGmi/tree/master
* Roadmap
- config par site web de son nom de domaine
- réécriture des liens internes
- réécriture des url des images vers le dossier courant
@ -56,5 +53,5 @@ Pandoc, PandocGmi
* Fait
- navigation sur les pages d'article
-gestion des langues dans la source et la destination
- gestion des langues dans la source et la destination
- gestion multi site et multi langue

View File

@ -103,16 +103,19 @@ p {
}
h1 {
font-size: 4rem;
color: #221d30;
font-size: 2.5rem;
text-decoration: underline;
}
h2 {
font-size: 3rem;
font-size: 2rem;
text-decoration: underline;
}
h3 {
font-size: 1.5rem;
text-decoration: underline;
}
h1,

View File

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../styles_src/style_general.scss"],"names":[],"mappings":";AAAA;AACA;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;AAEA;EACE;;AAEA;EAEE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;AAGI;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;;;AAGN;EACE;;;AAIF;EACE;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEI;EACA;EACA;EACA;;;AAIN;AAAA;AAAA;AAAA;EAIE;;;AAEF;EACI;EACF;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAMM;EACJ;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAIF;EACE;;;AAIA;EAEE;EACA;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA;;;AAGJ;EACE;;;AAEF;AAAA;EAEE;;;AAIF;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EACE;IACE;;EAEF;IACE","file":"style_general.css"}
{"version":3,"sourceRoot":"","sources":["../styles_src/style_general.scss"],"names":[],"mappings":";AAAA;AACA;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;AAEA;EACE;;AAEA;EAEE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;AAGI;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;;;AAGN;EACE;;;AAIF;EACE;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEI;EACA;EACA;EACA;;;AAIN;AAAA;AAAA;AAAA;EAIE;;;AAEF;EACI;EACF;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACF;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAIF;EACE;;;AAIA;EAEE;EACA;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA;;;AAGJ;EACE;;;AAEF;AAAA;EAEE;;;AAIF;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EACE;IACE;;EAEF;IACE","file":"style_general.css"}

View File

@ -112,16 +112,19 @@ p {
}
h1 {
font-size: 4rem;
color: #221d30;
font-size: 2.5rem;
text-decoration: underline;
}
h2 {
font-size: 3rem;
font-size: 2rem;
text-decoration: underline;
}
h3 {
font-size: 1.5rem;
text-decoration: underline;
}
h1,

View File

@ -1,15 +1,30 @@
#!/bin/python3
import os
import argparse
import re
# import argparse
from utils import *
from website_config import configs_sites
parser = argparse.ArgumentParser(description="Générer un site Web à partir de fichiers HTML.")
parser.add_argument("blog_name", help="Le chemin vers le dossier contenant les fichiers HTML.")
# parser = argparse.ArgumentParser(description="Générer un site Web à partir de fichiers HTML.")
# parser.add_argument("blog_name", help="Le chemin vers le dossier contenant les fichiers HTML.")
# parser.add_argument("--title", "-t", default="Mon site Web", help="Le titre du site Web.")
# parser.add_argument("--style", default="templates/style_general.css", help="Le chemin vers le fichier de style CSS.")
args = parser.parse_args()
# args = parser.parse_args()
# print(configs_sites[args.blog_name]['DESCRIPTION'])
# tester la génération de slug sur un fichier org donné
print(configs_sites[args.blog_name]['DESCRIPTION'])
mylog(configs_sites[f"{args.blog_name}"]['DESCRIPTION'])
basename_file = '20111126170159_cipherbliss_blog_120_bienvenue-sur-informageek.org'
found_slug = detect_slug_in_file_basename(basename_file)
print('slug found:',found_slug)
basename_file = '20200803124344_blog_cil_gometz_11_ecrire-une-comptine-en-python-bonjour-le-jour.org'
found_slug = detect_slug_in_file_basename(basename_file)
print('slug found:',found_slug)
basename_file = '20241115010205_cipherbliss_blog_suivi-de-rédaction-de-livre-orgmode.org'
found_slug = detect_slug_in_file_basename(basename_file)
print('slug found:',found_slug)
basename_file = '20061125015032_tkblog_864_pourquoi-mee2-est-il-une-flamme.org'
found_slug = detect_slug_in_file_basename(basename_file)
print('slug found:',found_slug)

View File

@ -3,6 +3,7 @@ import os
import re
import shutil
from datetime import datetime
import unicodedata
from website_config import *
@ -183,19 +184,47 @@ def remove_hint_html(text):
return re.sub(pattern, replacement, text, flags=re.DOTALL)
def detect_slug_in_file_basename(file_basename):
def slugify_title(title_text):
"""
Transforme un titre en un slug valide.
:param title_text: Titre en texte (str).
:return: Slug en minuscules avec des tirets (str).
"""
title_text = unicodedata.normalize('NFKD', title_text).encode('ascii', 'ignore').decode('ascii')
title_text = title_text.lower()
title_text = re.sub(r'[^a-z0-9\s-]', '', title_text)
title_text = re.sub(r'\s+', '-', title_text)
title_text = re.sub(r'-+', '-', title_text)
title_text = title_text.strip('-')
return title_text
def detect_slug_in_file_basename(file_basename) -> str:
"""
Extrait l'année et le slug du nom de fichier selon le format spécifié.
:param file_basename: Nom de fichier (str).
:return: Tuple contenant l'année et le slug (année, slug) ou None si non trouvé.
"""
pattern = r'^(\d{4})\d{8}(.+)\.org$'
pattern = r'^(\d{4})\d{10}(.+)\.org$'
match = re.match(pattern, file_basename)
if match:
year = match.group(1)
slug = match.group(2)
# prendre la partie finale du nom du fichier
splitted = slug.split('_')
# print('len(splitted)', len(splitted), splitted)
if len(splitted) > 1:
slug = splitted[len(splitted)-1]
final_slug = f"{year}/{slug}"
return final_slug
# final_slug=slug.replace("_cipherbliss_blog_","")
# final_slug=final_slug.replace("_blog_cil_gometz_","")
slug=enlever_premier_tiret_ou_underscore(slug)
slug = f"{year}/{slug}"
return slug
return None