From 719ddefb489aa4c8c380bc8f8b009e5ea47c62a9 Mon Sep 17 00:00:00 2001 From: octospacc Date: Wed, 20 Jul 2022 23:40:54 +0200 Subject: [PATCH] Fix feed generation: filtering by category and get titles --- Source/Build.py | 9 ++++++--- Source/Modules/Feed.py | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Source/Build.py b/Source/Build.py index e3b4269..f0a3277 100755 --- a/Source/Build.py +++ b/Source/Build.py @@ -82,6 +82,8 @@ def Main(Args, FeedEntries): MastodonURL = Args.MastodonURL if Args.MastodonURL else '' MastodonToken = Args.MastodonToken if Args.MastodonToken else '' MarkdownExts = literal_eval(Args.MarkdownExts) if Args.MarkdownExts else EvalOpt(ReadConf(SiteConf, 'Site', 'MarkdownExts')) if ReadConf(SiteConf, 'Site', 'MarkdownExts') else ('attr_list', 'def_list', 'markdown_del_ins', 'md_in_html', 'mdx_subscript', 'mdx_superscript') + ActivityPubTypeFilter = Args.ActivityPubTypeFilter if Args.ActivityPubTypeFilter else 'Post' + FeedCategoryFilter = Args.FeedCategoryFilter if Args.FeedCategoryFilter else 'Blog' Minify = False if Args.Minify != None: @@ -149,6 +151,7 @@ def Main(Args, FeedEntries): print("[I] Generating Feeds") for FeedType in (True, False): MakeFeed( + CategoryFilter=FeedCategoryFilter, Pages=Pages, SiteName=SiteName, SiteTagline=SiteTagline, @@ -171,8 +174,8 @@ def Main(Args, FeedEntries): SiteDomain=SiteDomain, SiteLang=SiteLang, Locale=Locale, - TypeFilter=Args.ActivityPubTypeFilter if Args.ActivityPubTypeFilter else 'Post', - CategoryFilter=Args.ActivityPubCategoryFilter if Args.ActivityPubCategoryFilter else 'Blog', + TypeFilter=ActivityPubTypeFilter, + CategoryFilter=FeedCategoryFilter, HoursLimit=Args.ActivityPubHoursLimit if Args.ActivityPubHoursLimit else 168) else: MastodonPosts = [] @@ -223,8 +226,8 @@ if __name__ == '__main__': Parser.add_argument('--MarkdownExts', type=str) Parser.add_argument('--MastodonURL', type=str) Parser.add_argument('--MastodonToken', type=str) + Parser.add_argument('--FeedCategoryFilter', type=str) Parser.add_argument('--ActivityPubTypeFilter', type=str) - Parser.add_argument('--ActivityPubCategoryFilter', type=str) Parser.add_argument('--ActivityPubHoursLimit', type=int) Parser.add_argument('--AutoCategories', type=str) Args = Parser.parse_args() diff --git a/Source/Modules/Feed.py b/Source/Modules/Feed.py index e4dd357..bccca31 100644 --- a/Source/Modules/Feed.py +++ b/Source/Modules/Feed.py @@ -12,7 +12,7 @@ from Libs.feedgen.feed import FeedGenerator from Modules.Utils import * -def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullSite=False, Minify=False): +def MakeFeed(CategoryFilter, Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullSite=False, Minify=False): Feed = FeedGenerator() Link = SiteDomain if SiteDomain else ' ' Feed.id(Link) @@ -31,7 +31,7 @@ def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullSit DoPages.reverse() for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in DoPages: - if FullSite or (not FullSite and Meta['Type'] == 'Post'): + if FullSite or (not FullSite and Meta['Type'] == 'Post' and (not CategoryFilter or (CategoryFilter and (CategoryFilter in Meta['Categories'] or CategoryFilter == '*')))): Entry = Feed.add_entry() File = '{}.html'.format(StripExt(File)) Content = ReadFile('public/'+File) @@ -39,7 +39,7 @@ def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullSit CreatedOn = GetFullDate(Meta['CreatedOn']) EditedOn = GetFullDate(Meta['EditedOn']) Entry.id(Link) - Entry.title(Meta['Title'] if Meta['Title'] else ' ') + Entry.title(Meta['Title'] if Meta['Title'] else Titles[0].lstrip('#') if Titles else 'Untitled') Entry.description(Description) Entry.link(href=Link, rel='alternate') if not FullSite: # Avoid making an enormous site feed file...