Fix feed generation: filtering by category and get titles

This commit is contained in:
octospacc 2022-07-20 23:40:54 +02:00
parent e65b4d9774
commit 719ddefb48
2 changed files with 9 additions and 6 deletions

View File

@ -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()

View File

@ -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...