mirror of https://gitlab.com/octtspacc/staticoso
Add description and HTML to feed
This commit is contained in:
parent
d1445da3d9
commit
477a217c57
|
@ -239,7 +239,7 @@ def MakeCategoryLine(Meta, Reserved):
|
||||||
Categories += '[{}]({}{}.html) '.format(i, GetLevels(Reserved['Categories']) + Reserved['Categories'], i)
|
Categories += '[{}]({}{}.html) '.format(i, GetLevels(Reserved['Categories']) + Reserved['Categories'], i)
|
||||||
return Categories
|
return Categories
|
||||||
|
|
||||||
def PatchHTML(Template, PartsText, ContextParts, ContextPartsText, HTMLPagesList, PagePath, Content, Titles, Meta, SiteRoot, FolderRoots, Categories, Locale, Reserved):
|
def PatchHTML(Base, PartsText, ContextParts, ContextPartsText, HTMLPagesList, PagePath, Content, Titles, Meta, SiteRoot, FolderRoots, Categories, Locale, Reserved):
|
||||||
HTMLTitles = FormatTitles(Titles)
|
HTMLTitles = FormatTitles(Titles)
|
||||||
BodyDescription, BodyImage = '', ''
|
BodyDescription, BodyImage = '', ''
|
||||||
Parse = BeautifulSoup(Content, 'html.parser')
|
Parse = BeautifulSoup(Content, 'html.parser')
|
||||||
|
@ -248,7 +248,11 @@ def PatchHTML(Template, PartsText, ContextParts, ContextPartsText, HTMLPagesList
|
||||||
if not BodyImage and Parse.img and Parse.img['src']:
|
if not BodyImage and Parse.img and Parse.img['src']:
|
||||||
BodyImage = Parse.img['src']
|
BodyImage = Parse.img['src']
|
||||||
|
|
||||||
for Line in Template.splitlines():
|
Title = GetTitle(Meta, Titles, 'MetaTitle')
|
||||||
|
Description = GetDescription(Meta, BodyDescription, 'MetaDescription')
|
||||||
|
Image = GetImage(Meta, BodyImage, 'MetaImage')
|
||||||
|
|
||||||
|
for Line in Base.splitlines():
|
||||||
Line = Line.lstrip().rstrip()
|
Line = Line.lstrip().rstrip()
|
||||||
if Line.startswith('[HTML:ContextPart:') and Line.endswith(']'):
|
if Line.startswith('[HTML:ContextPart:') and Line.endswith(']'):
|
||||||
Path = Line[len('[HTML:ContextPart:'):-1]
|
Path = Line[len('[HTML:ContextPart:'):-1]
|
||||||
|
@ -263,25 +267,31 @@ def PatchHTML(Template, PartsText, ContextParts, ContextPartsText, HTMLPagesList
|
||||||
Text = ContextPartsText['{}/{}'.format(Path, Part)]
|
Text = ContextPartsText['{}/{}'.format(Path, Part)]
|
||||||
else:
|
else:
|
||||||
Text = ''
|
Text = ''
|
||||||
Template = Template.replace('[HTML:ContextPart:{}]'.format(Path), Text)
|
Base = Base.replace('[HTML:ContextPart:{}]'.format(Path), Text)
|
||||||
for i in PartsText:
|
for i in PartsText:
|
||||||
Template = Template.replace('[HTML:Part:{}]'.format(i), PartsText[i])
|
Base = Base.replace('[HTML:Part:{}]'.format(i), PartsText[i])
|
||||||
Template = Template.replace('[HTML:Page:LeftBox]', HTMLPagesList)
|
Base = Base.replace('[HTML:Page:LeftBox]', HTMLPagesList)
|
||||||
Template = Template.replace('[HTML:Page:RightBox]', HTMLTitles)
|
Base = Base.replace('[HTML:Page:RightBox]', HTMLTitles)
|
||||||
Template = Template.replace('[HTML:Page:Title]', GetTitle(Meta, Titles, 'MetaTitle'))
|
Base = Base.replace('[HTML:Page:Title]', Title)
|
||||||
Template = Template.replace('[HTML:Page:Description]', GetDescription(Meta, BodyDescription, 'MetaDescription'))
|
Base = Base.replace('[HTML:Page:Description]', Description)
|
||||||
Template = Template.replace('[HTML:Page:Image]', GetImage(Meta, BodyImage, 'MetaImage'))
|
Base = Base.replace('[HTML:Page:Image]', Image)
|
||||||
Template = Template.replace('[HTML:Page:Path]', PagePath)
|
Base = Base.replace('[HTML:Page:Path]', PagePath)
|
||||||
Template = Template.replace('[HTML:Page:Style]', Meta['Style'])
|
Base = Base.replace('[HTML:Page:Style]', Meta['Style'])
|
||||||
Template = Template.replace('[HTML:Page:Content]', Content)
|
Base = Base.replace('[HTML:Page:Content]', Content)
|
||||||
Template = Template.replace('[HTML:Page:ContentHeader]', MakeContentHeader(Meta, Locale, MakeCategoryLine(Meta, Reserved)))
|
Base = Base.replace('[HTML:Page:ContentHeader]', MakeContentHeader(Meta, Locale, MakeCategoryLine(Meta, Reserved)))
|
||||||
Template = Template.replace('[HTML:Site:AbsoluteRoot]', SiteRoot)
|
Base = Base.replace('[HTML:Site:AbsoluteRoot]', SiteRoot)
|
||||||
Template = Template.replace('[HTML:Site:RelativeRoot]', GetLevels(PagePath))
|
Base = Base.replace('[HTML:Site:RelativeRoot]', GetLevels(PagePath))
|
||||||
for i in FolderRoots:
|
for i in FolderRoots:
|
||||||
Template = Template.replace('[HTML:Folder:{}:AbsoluteRoot]'.format(i), FolderRoots[i])
|
Base = Base.replace('[HTML:Folder:{}:AbsoluteRoot]'.format(i), FolderRoots[i])
|
||||||
for i in Categories:
|
for i in Categories:
|
||||||
Template = Template.replace('<span>[HTML:Category:{}]</span>'.format(i), Categories[i])
|
Base = Base.replace('<span>[HTML:Category:{}]</span>'.format(i), Categories[i])
|
||||||
return Template
|
|
||||||
|
Content = Content.replace('[HTML:Site:AbsoluteRoot]', SiteRoot)
|
||||||
|
Content = Content.replace('[HTML:Site:RelativeRoot]', GetLevels(PagePath))
|
||||||
|
for i in FolderRoots:
|
||||||
|
Content = Content.replace('[HTML:Folder:{}:AbsoluteRoot]'.format(i), FolderRoots[i])
|
||||||
|
|
||||||
|
return Base, Content, Description, Image
|
||||||
|
|
||||||
def FileToStr(File, Truncate=''):
|
def FileToStr(File, Truncate=''):
|
||||||
return str(File)[len(Truncate):]
|
return str(File)[len(Truncate):]
|
||||||
|
@ -364,7 +374,7 @@ def DoMinify(HTML):
|
||||||
keep_pre=True)
|
keep_pre=True)
|
||||||
|
|
||||||
def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, SiteName, SiteTagline, SiteDomain, SiteRoot, FolderRoots, Reserved, Locale, Minify, Sorting):
|
def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, SiteName, SiteTagline, SiteDomain, SiteRoot, FolderRoots, Reserved, Locale, Minify, Sorting):
|
||||||
PagesPaths, PostsPaths, Pages, Categories = [], [], [], {}
|
PagesPaths, PostsPaths, Pages, MadePages, Categories = [], [], [], [], {}
|
||||||
for Ext in Extensions['Pages']:
|
for Ext in Extensions['Pages']:
|
||||||
for File in Path('Pages').rglob('*.{}'.format(Ext)):
|
for File in Path('Pages').rglob('*.{}'.format(Ext)):
|
||||||
PagesPaths += [FileToStr(File, 'Pages/')]
|
PagesPaths += [FileToStr(File, 'Pages/')]
|
||||||
|
@ -416,8 +426,8 @@ def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, SiteName,
|
||||||
Content = markdown(Content, extensions=['attr_list'])
|
Content = markdown(Content, extensions=['attr_list'])
|
||||||
elif File.endswith('.pug'):
|
elif File.endswith('.pug'):
|
||||||
Content = ReadFile(PagePath)
|
Content = ReadFile(PagePath)
|
||||||
HTML = PatchHTML(
|
HTML, HTMLContent, Description, Image = PatchHTML(
|
||||||
Template=TemplatesText[Meta['Template']],
|
Base=TemplatesText[Meta['Template']],
|
||||||
PartsText=PartsText,
|
PartsText=PartsText,
|
||||||
ContextParts=ContextParts,
|
ContextParts=ContextParts,
|
||||||
ContextPartsText=ContextPartsText,
|
ContextPartsText=ContextPartsText,
|
||||||
|
@ -434,8 +444,9 @@ def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, SiteName,
|
||||||
if Minify not in ('False', 'None'):
|
if Minify not in ('False', 'None'):
|
||||||
HTML = DoMinify(HTML)
|
HTML = DoMinify(HTML)
|
||||||
WriteFile(PagePath, HTML)
|
WriteFile(PagePath, HTML)
|
||||||
|
MadePages += [[File, Content, Titles, Meta, HTMLContent, Description, Image]]
|
||||||
|
|
||||||
return Pages
|
return MadePages
|
||||||
|
|
||||||
def GetFullDate(Date):
|
def GetFullDate(Date):
|
||||||
if not Date:
|
if not Date:
|
||||||
|
@ -466,23 +477,32 @@ def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, Minify=
|
||||||
Feed.id(Link)
|
Feed.id(Link)
|
||||||
Feed.title(SiteName if SiteName else ' ')
|
Feed.title(SiteName if SiteName else ' ')
|
||||||
Feed.link(href=Link, rel='alternate')
|
Feed.link(href=Link, rel='alternate')
|
||||||
Feed.subtitle(SiteTagline if SiteTagline else ' ')
|
Feed.description(SiteTagline if SiteTagline else ' ')
|
||||||
if SiteDomain:
|
if SiteDomain:
|
||||||
Feed.logo(SiteDomain.rstrip('/') + '/favicon.png')
|
Feed.logo(SiteDomain.rstrip('/') + '/favicon.png')
|
||||||
Feed.language(Lang)
|
Feed.language(Lang)
|
||||||
|
|
||||||
for File, Content, Titles, Meta in Pages:
|
DoPages = []
|
||||||
#print(Meta['Image'])
|
for e in Pages:
|
||||||
#print(Meta['Title'])
|
if MaxEntries != 0 and e[3]['Type'] == 'Post':
|
||||||
#print(Meta['Description'])
|
DoPages += [e]
|
||||||
|
MaxEntries -= 1
|
||||||
|
DoPages.reverse()
|
||||||
|
|
||||||
|
for File, Content, Titles, Meta, HTMLContent, Description, Image in DoPages:
|
||||||
if Meta['Type'] == 'Post':
|
if Meta['Type'] == 'Post':
|
||||||
Entry = Feed.add_entry()
|
Entry = Feed.add_entry()
|
||||||
Link = '{}/{}.html'.format(SiteDomain, StripExt(File)) if SiteDomain else ' '
|
File = '{}.html'.format(StripExt(File))
|
||||||
|
Content = ReadFile('public/'+File)
|
||||||
|
Link = SiteDomain+'/'+File if SiteDomain else ' '
|
||||||
CreatedOn = GetFullDate(Meta['CreatedOn'])
|
CreatedOn = GetFullDate(Meta['CreatedOn'])
|
||||||
EditedOn = GetFullDate(Meta['EditedOn'])
|
EditedOn = GetFullDate(Meta['EditedOn'])
|
||||||
|
|
||||||
Entry.id(Link)
|
Entry.id(Link)
|
||||||
Entry.title(Meta['Title'] if Meta['Title'] else ' ')
|
Entry.title(Meta['Title'] if Meta['Title'] else ' ')
|
||||||
|
Entry.description(Description)
|
||||||
Entry.link(href=Link, rel='alternate')
|
Entry.link(href=Link, rel='alternate')
|
||||||
|
Entry.content(HTMLContent, type='html')
|
||||||
if CreatedOn:
|
if CreatedOn:
|
||||||
Entry.pubDate(CreatedOn)
|
Entry.pubDate(CreatedOn)
|
||||||
EditedOn = EditedOn if EditedOn else CreatedOn if CreatedOn and not EditedOn else '1970-01-01T00:00+00:00'
|
EditedOn = EditedOn if EditedOn else CreatedOn if CreatedOn and not EditedOn else '1970-01-01T00:00+00:00'
|
||||||
|
|
Loading…
Reference in New Issue