From fc3c0b8be63efc19ede332132e755f0569d1587c Mon Sep 17 00:00:00 2001 From: octospacc Date: Wed, 29 Jun 2022 00:17:52 +0200 Subject: [PATCH] First work on HTML to Gemtext --- Source/Build.py | 15 +++++++++++---- Source/Modules/Gemini.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 Source/Modules/Gemini.py diff --git a/Source/Build.py b/Source/Build.py index 3cfda04..93414a3 100755 --- a/Source/Build.py +++ b/Source/Build.py @@ -19,16 +19,18 @@ from Libs.markdown import Markdown from Libs.markdown import markdown from pathlib import Path from Modules.Feed import * +from Modules.Gemini import * from Modules.Utils import * Extensions = { 'Pages': ('md', 'pug')} def ResetPublic(): - try: - shutil.rmtree('public') - except FileNotFoundError: - pass + for i in ('public', 'public.gmi'): + try: + shutil.rmtree(i) + except FileNotFoundError: + pass def GetLevels(Path, AsNum=False, Add=0, Sub=0): n = Path.count('/') + Add - Sub @@ -473,6 +475,11 @@ def Main(Args): Lang=SiteLang, Minify=True if Args.Minify and Args.Minify not in ('False', 'None') else False) + #HTML2Gemtext( + # Pages=Pages, + # SiteName=SiteName, + # SiteTagline=SiteTagline) + DelTmp() os.system("cp -R Assets/* public/") diff --git a/Source/Modules/Gemini.py b/Source/Modules/Gemini.py new file mode 100644 index 0000000..c4e3b7e --- /dev/null +++ b/Source/Modules/Gemini.py @@ -0,0 +1,35 @@ +""" ================================= | +| This file is part of | +| staticoso | +| Just a simple Static Site Generator | +| | +| Licensed under the AGPLv3 license | +| Copyright (C) 2022, OctoSpacc | +| ================================= """ + +from Libs.bs4 import BeautifulSoup +from Modules.Utils import * + +def HTML2Gemtext(Pages, SiteName, SiteTagline): + os.mkdir('public.gmi') + for File, Content, Titles, Meta, HTMLContent, Description, Image in Pages: + Parse = BeautifulSoup(HTMLContent, 'html.parser') + # We should first get the most basic HTML elements, convert them to Gemtext, then replace the Gemtext in the original full HTML, and then removing

tags? + #print(File, Parse.find_all('p'), Parse.find_all('li')) + +""" Gemtext: +# h1 +## h2 +### h3 + +* li +* li + +=> [protocol://]URL Link Description + +> Quote + +``` +Preformatted +``` +"""