Gemlog format fix; Cringe XML sitemap generation

This commit is contained in:
2022-07-13 00:14:37 +02:00
parent f85f8d6696
commit 55647f0ad0
4 changed files with 46 additions and 12 deletions

View File

@@ -12,7 +12,7 @@
from Libs.feedgen.feed import FeedGenerator
from Modules.Utils import *
def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, Minify=False):
def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullMap=False, Minify=False):
Feed = FeedGenerator()
Link = SiteDomain if SiteDomain else ' '
Feed.id(Link)
@@ -24,21 +24,22 @@ def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, Minify=
Feed.language(Lang)
DoPages = []
if FullMap:
MaxEntries = 50000 # Sitemap standard limit
for e in Pages:
if MaxEntries != 0 and e[3]['Type'] == 'Post':
if MaxEntries != 0 and (FullMap or (not FullMap and e[3]['Type'] == 'Post')):
DoPages += [e]
MaxEntries -= 1
DoPages.reverse()
for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in DoPages:
if Meta['Type'] == 'Post':
if FullMap or (not FullMap and Meta['Type'] == 'Post'):
Entry = Feed.add_entry()
File = '{}.html'.format(StripExt(File))
Content = ReadFile('public/'+File)
Link = SiteDomain + '/' + File if SiteDomain else ' '
CreatedOn = GetFullDate(Meta['CreatedOn'])
EditedOn = GetFullDate(Meta['EditedOn'])
Entry.id(Link)
Entry.title(Meta['Title'] if Meta['Title'] else ' ')
Entry.description(Description)
@@ -49,6 +50,9 @@ def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, Minify=
EditedOn = EditedOn if EditedOn else CreatedOn if CreatedOn and not EditedOn else '1970-01-01T00:00+00:00'
Entry.updated(EditedOn)
os.mkdir('public/feed')
Feed.atom_file('public/feed/atom.xml', pretty=(not Minify))
Feed.rss_file('public/feed/rss.xml', pretty=(not Minify))
if FullMap:
Feed.atom_file('public/sitemap.xml', pretty=(not Minify))
else:
os.mkdir('public/feed')
Feed.atom_file('public/feed/atom.xml', pretty=(not Minify))
Feed.rss_file('public/feed/rss.xml', pretty=(not Minify))

View File

@@ -31,6 +31,15 @@ def StripAttrs(HTML):
t.attrs = {}
return str(Soup)
def FixGemlogDateLine(Line):
if len(Line) >= 2 and Line[0] == '[' and Line[1].isdigit():
Line = Line[1:]
else:
Words = Line.split(' ')
if len(Words) >= 2 and len(Words[1]) >= 2 and Words[1][0] == '[' and Words[1][1].isdigit():
Line = Words[0] + '\n' + Words[1][1:] + ' ' + ' '.join(Words[2:])
return Line
def GemtextCompileList(Pages, Header=''):
Cmd = ''
for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in Pages:
@@ -45,7 +54,11 @@ def GemtextCompileList(Pages, Header=''):
os.system(Cmd)
for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in Pages:
Dst = 'public.gmi/{}.gmi'.format(StripExt(File))
WriteFile(Dst, Header + ReadFile(Dst))
Gemtext = ''
for Line in ReadFile(Dst).splitlines():
Line = FixGemlogDateLine(Line)
Gemtext += Line + '\n'
WriteFile(Dst, Header + Gemtext)
def FindEarliest(Str, Items):
Pos, Item = 0, ''