diff --git a/Source/Build.py b/Source/Build.py index 8434f1c..969bf88 100755 --- a/Source/Build.py +++ b/Source/Build.py @@ -514,7 +514,9 @@ def Main(Args, FeedEntries): if Args.GemtextOut: print("[I] Generating Gemtext") - GemtextCompileList(Pages, SiteName) + GemtextCompileList( + Pages, + Header=Args.GemtextHeader if Args.GemtextHeader else '

{}


'.format(SiteName) if SiteName else '') DelTmp() os.system("cp -R Assets/* public/") @@ -529,6 +531,7 @@ if __name__ == '__main__': Parser.add_argument('--SiteName', type=str) Parser.add_argument('--SiteDomain', type=str) Parser.add_argument('--GemtextOut', type=bool) + Parser.add_argument('--GemtextHeader', type=str) Parser.add_argument('--SiteTagline', type=str) Parser.add_argument('--FeedEntries', type=int) Parser.add_argument('--FolderRoots', type=str) diff --git a/Source/Modules/Gemini.py b/Source/Modules/Gemini.py index a2c0ce0..1386f4f 100644 --- a/Source/Modules/Gemini.py +++ b/Source/Modules/Gemini.py @@ -23,12 +23,21 @@ OpenTags = ( 'img') """ -def GemtextCompileList(Pages, SiteName): +def StripAttrs(HTML): + Soup = BeautifulSoup(HTML, 'html.parser') + Tags = Soup.find_all() + for t in Tags: + if 'href' not in t.attrs and 'src' not in t.attrs: + t.attrs = {} + return str(Soup) + +def GemtextCompileList(Pages, Header): Cmd = '' for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in Pages: + if Header: + SlimHTML = Header + SlimHTML Src = 'public.gmi/{}.html.tmp'.format(StripExt(File)) - if SiteName: - SlimHTML = '

' + SiteName + '

' + SlimHTML + SlimHTML = StripAttrs(SlimHTML) for i in ('ol', 'ul', 'li'): for j in ('<'+i+'>', ''): SlimHTML = SlimHTML.replace(j, '')