diff --git a/Source/Build.py b/Source/Build.py index a5ccc20..6585767 100755 --- a/Source/Build.py +++ b/Source/Build.py @@ -437,7 +437,7 @@ def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, SiteName, Categories=Categories, SiteLang=SiteLang, Locale=Locale) - if Minify not in ('False', 'None'): + if Minify: HTML = DoMinify(HTML) WriteFile(PagePath, HTML) MadePages += [[File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image]] @@ -472,7 +472,7 @@ def GetConfMenu(Conf): print(Menu) return Menu -def Main(Args, FeedEntries, SitemapOut): +def Main(Args, FeedEntries): HavePages, HavePosts = False, False SiteConf = LoadConf('Site.ini') #SiteMenu = GetConfMenu(SiteConf) @@ -487,6 +487,15 @@ def Main(Args, FeedEntries, SitemapOut): 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', 'mdx_subscript', 'mdx_superscript'] + Minify = False # True if Args.Minify and Args.Minify not in ('False', 'None') else False + if Args.Minify != None: + if Args.Minify not in ('False', 'None'): + Minify = True + else: + if ReadConf(SiteConf, 'Site', 'Minify') != None: + if ReadConf(SiteConf, 'Site', 'Minify') not in ('False', 'None'): + Minify = True + AutoCategories = False if Args.AutoCategories != None: if literal_eval(Args.AutoCategories) == True: @@ -527,34 +536,23 @@ def Main(Args, FeedEntries, SitemapOut): FolderRoots=literal_eval(Args.FolderRoots) if Args.FolderRoots else {}, SiteLang=SiteLang, Locale=Locale, - Minify=Args.Minify if Args.Minify else 'None', + Minify=Minify, # Args.Minify if Args.Minify else 'None', Sorting=SetSorting(literal_eval(Args.ContextParts) if Args.ContextParts else {}), MarkdownExts=MarkdownExts, AutoCategories=AutoCategories) # Args.AutoCategories if Args.AutoCategories else EvalOpt(ReadConf(SiteConf, 'Site', 'AutoCategories')) if ReadConf(SiteConf, 'Site', 'AutoCategories') else None) if FeedEntries != 0: print("[I] Generating Feeds") - MakeFeed( - Pages=Pages, - SiteName=SiteName, - SiteTagline=SiteTagline, - SiteDomain=SiteDomain, - MaxEntries=FeedEntries, - Lang=SiteLang, - FullMap=False, - Minify=True if Args.Minify and Args.Minify not in ('False', 'None') else False) - - if SitemapOut: - print("[I] Generating Sitemap") - MakeFeed( - Pages=Pages, - SiteName=SiteName, - SiteTagline=SiteTagline, - SiteDomain=SiteDomain, - MaxEntries=FeedEntries, - Lang=SiteLang, - FullMap=True, - Minify=True if Args.Minify and Args.Minify not in ('False', 'None') else False) + for FeedType in (True, False): + MakeFeed( + Pages=Pages, + SiteName=SiteName, + SiteTagline=SiteTagline, + SiteDomain=SiteDomain, + MaxEntries=FeedEntries, + Lang=SiteLang, + FullSite=FeedType, + Minify=Minify) # True if Args.Minify and Args.Minify not in ('False', 'None') else False) if ActivityPub and MastodonURL and MastodonToken and SiteDomain: print("[I] Mastodon Stuff") @@ -620,13 +618,10 @@ if __name__ == '__main__': import lxml from Modules.Feed import * FeedEntries = Args.FeedEntries if Args.FeedEntries or Args.FeedEntries == 0 else 10 - SitemapOut = True if Args.SitemapOut else False except: - print("[E] Can't load the XML libraries. XML Feeds and Sitemaps generation is disabled. Make sure the 'lxml' library is installed.") + print("[E] Can't load the XML libraries. XML Feeds Generation is Disabled. Make sure the 'lxml' library is installed.") FeedEntries = 0 - SitemapOut = False Main( Args=Args, - FeedEntries=FeedEntries, - SitemapOut=SitemapOut) + FeedEntries=FeedEntries) diff --git a/Source/Modules/Feed.py b/Source/Modules/Feed.py index 2daec8b..e4dd357 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, FullMap=False, Minify=False): +def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullSite=False, Minify=False): Feed = FeedGenerator() Link = SiteDomain if SiteDomain else ' ' Feed.id(Link) @@ -24,16 +24,14 @@ def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullMap Feed.language(Lang) DoPages = [] - if FullMap: - MaxEntries = 50000 # Sitemap standard limit for e in Pages: - if MaxEntries != 0 and (FullMap or (not FullMap and e[3]['Type'] == 'Post')): + if FullSite or (not FullSite and MaxEntries != 0 and e[3]['Type'] == 'Post'): # No entry limit if site feed DoPages += [e] MaxEntries -= 1 DoPages.reverse() for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in DoPages: - if FullMap or (not FullMap and Meta['Type'] == 'Post'): + if FullSite or (not FullSite and Meta['Type'] == 'Post'): Entry = Feed.add_entry() File = '{}.html'.format(StripExt(File)) Content = ReadFile('public/'+File) @@ -44,15 +42,18 @@ def MakeFeed(Pages, SiteName, SiteTagline, SiteDomain, MaxEntries, Lang, FullMap Entry.title(Meta['Title'] if Meta['Title'] else ' ') Entry.description(Description) Entry.link(href=Link, rel='alternate') - Entry.content(ContentHTML, type='html') + if not FullSite: # Avoid making an enormous site feed file... + Entry.content(ContentHTML, type='html') if CreatedOn: Entry.pubDate(CreatedOn) EditedOn = EditedOn if EditedOn else CreatedOn if CreatedOn and not EditedOn else '1970-01-01T00:00+00:00' Entry.updated(EditedOn) - if FullMap: - Feed.rss_file('public/sitemap.xml', pretty=(not Minify)) - else: + if not os.path.exists('public/feed'): 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 FullSite: + FeedType = 'site.' + else: + FeedType = '' + Feed.atom_file('public/feed/' + FeedType + 'atom.xml', pretty=(not Minify)) + Feed.rss_file('public/feed/' + FeedType + 'rss.xml', pretty=(not Minify))