commit ede72d38ccb920ddf92104cf899bf1e461978a4e Author: Oxbian Date: Sun Apr 2 22:42:10 2023 +0200 Init commit\nAjout du générateur de page html à partir des fichiers markdown, d'un style basique inspiré du blog de ploum.net. diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..4940e28 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,41 @@ +body +{ + margin: 2vh auto; + max-width: 800px; + color:#00072D; + background-color: #C2EAFF; +} + +h1, footer +{ + text-align: center; +} + +a +{ + color: #87B37A; + text-decoration: none; +} + +a:hover +{ + text-decoration:underline; +} + +.center { + display: block; + margin-left: auto; + margin-right: auto; + width: 60%; +} +.header{ + margin: 1em 0; + display: block; + width:100%; +} + +.navbar{ + display: flex; + justify-content: space-between; + font-weight: bold; +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..21f72b1 --- /dev/null +++ b/index.html @@ -0,0 +1,54 @@ + + + + + + + + + + + + Blog d'Oxbian + + + + + +
+ +
+
+
+

Bienvenue sur mon blog

+ Sur ce blog vous retrouverez des articles liées à l'informatique, la programmation, le réseau, la sécurité, le libre, etc. + De plus j'y partage aussi des articles sur les bonnes pratiques dans divers domaines, comme la vie privée, le sport.. + +

Articles sur les bonnes pratiques

+ + +

Autres articles

+ +
+
+
+ + + \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..56c2116 --- /dev/null +++ b/readme.md @@ -0,0 +1,11 @@ +# ArKaBlog +------ + +Ce repo contient le blog & le générateur du blog se trouvant à l'adresse blog.arka.rocks. + +Le générateur en python permet de passé de fichier markdown à des fichier html en tout simplicité à partir d'un modèle de page existant. + +# TODO + +- Flux RSS +- Ajout automatique des pages générées dans la page principale \ No newline at end of file diff --git a/tools/page-generator.py b/tools/page-generator.py new file mode 100644 index 0000000..e5747db --- /dev/null +++ b/tools/page-generator.py @@ -0,0 +1,110 @@ +import os + +articles_path = 'articles/' +generate_path = 'archives/' + +"""Parse le fichier markdown et retourne le contenu à mettre dans notre page html""" +def parsemd(filename): + content = {'content': '', 'title': '', 'date': '', 'description': ''} + inquote, inpre, inul = False, False, False + for line in open('../' + articles_path + filename, "r"): + line = line.strip() + + # Récupère la date + if line.startswith('date:'): + content['date'] = line.split(':')[1].strip() + + # Récupère la description + if line.startswith('description:'): + content['description'] = line.split(':')[1].strip() + + # Ferme la citation si on ne cite plus + if inquote and not line.startswith(">"): + content['content'] += "\n" + inquote = False + + # Ferme la liste si on ne liste plus + if inul and not line.startswith("-"): + content['content'] += "\n" + inul = False + + # Vérifie si on est dans un bloc de code + if line.startswith("```"): + if inpre: + content['content'] += "\n" + + content['content'] += "
" + line.lstrip("```")
+            inpre = True
+
+        # Vérifie si on est dans une citation
+        elif line.startswith(">"):
+            if inquote:
+                content['content'] += "\n"
+            
+            content['content'] += "
" + line.lstrip("> ") + inquote = True + + # Vérifie si on est dans un listing + elif line.startswith("-"): + if inul: + content['content'] += "\n" + content['content'] += "
  • " + line.lstrip("- ") + else: + content['content'] += "
    • " + line.lstrip("- ") + inul = True + + # Vérifie si on est dans un titre + elif line.startswith("###"): + content['content'] += "

      " + line.lstrip("# ") + "

      \n" + elif line.startswith("##"): + content['content'] += "

      " + line.lstrip("# ") + "

      \n" + elif line.startswith("#"): + content['title'] += line.lstrip("# ") + + # Sinon, on est dans un paragraphe + elif line != " " and line != "": + # Vérifie si on a des italiques ou gras + while '*' in line: + line = line.replace('*', '', 1) + line = line.replace('*', '', 1) + while '**' in line: + line = line.replace('**', '', 1) + line = line.replace('**', '', 1) + + # Vérifie si on a des images + while '![' in line and ']' in line: + title = line.split(']')[0].split('[')[1] + link = line.split(']')[1].split('(')[1].split(')')[0] + line = line.replace('![' + title + '](' + link + ')', '' + title + '') + + # Vérifie si on a des liens + while '[' in line and ']' in line: + title = line.split(']')[0].split('[')[1] + link = line.split(']')[1].split('(')[1].split(')')[0] + line = line.replace('[' + title + '](' + link + ')', '' + title + '') + content['content'] += "

      " + line + "

      \n" + return content + + +def md2html(filename): + content = parsemd(filename) # Contenu parsé de notre fichier markdown + template = open('page_template.html', 'r').read() + output = open('../' + generate_path + filename.split('.')[0] + '.html', 'w') + output.write(template.replace("$CONTENT", content['content']).replace("$TITLE", content['title']). + replace("$DATE", content['date']).replace("$DESC", content['description'])) + + +""" +def generateRSS(data): + +def updateIndex(data): +""" +if __name__=="__main__": + if not os.path.exists('../' + generate_path): + os.mkdir('../' + generate_path) + else: + for file in os.listdir('../' + generate_path): + os.remove('../' + generate_path + file) + for file in os.listdir('../' + articles_path): + print("Génération en cours du fichier: " + file) + md2html(file) \ No newline at end of file diff --git a/tools/page_template.html b/tools/page_template.html new file mode 100644 index 0000000..3dda284 --- /dev/null +++ b/tools/page_template.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + $TITLE + + + + + +
      + +
      +
      +
      +

      $TITLE

      + $CONTENT +
      +
      + + + \ No newline at end of file