From fdd4f8be7df9823fea8aca44ca2e8ac00249ab07 Mon Sep 17 00:00:00 2001 From: Dainsleif233 Date: Thu, 19 Mar 2026 14:11:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=AB=99=E7=82=B9?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gmeek.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Gmeek.py b/Gmeek.py index af13242..c178049 100644 --- a/Gmeek.py +++ b/Gmeek.py @@ -308,6 +308,44 @@ class GMEEK(): feedFile.close() return + def createSiteMapXml(self): + baseUrl=self.blogBase["homeUrl"].rstrip("/") + nowDate=datetime.datetime.now(self.TZ).strftime("%Y-%m-%d") + seen=set() + entries=[] + + def addUrl(path,lastmod): + fullUrl=baseUrl+"/"+path.lstrip("/") + if fullUrl not in seen: + seen.add(fullUrl) + entries.append((fullUrl,lastmod)) + + addUrl("index.html",nowDate) + addUrl("tag.html",nowDate) + + postTotal=len(self.blogBase["postListJson"]) + pageTotal=max(1,(postTotal+self.blogBase["onePageListNum"]-1)//self.blogBase["onePageListNum"]) + for pageNum in range(2,pageTotal+1): + addUrl("page%d.html" % pageNum,nowDate) + + for post in self.blogBase["singeListJson"].values(): + postDate=datetime.datetime.fromtimestamp(post["createdAt"],tz=self.TZ).strftime("%Y-%m-%d") + addUrl(post["postUrl"],postDate) + + for post in self.blogBase["postListJson"].values(): + postDate=datetime.datetime.fromtimestamp(post["createdAt"],tz=self.TZ).strftime("%Y-%m-%d") + addUrl(post["postUrl"],postDate) + + siteMapLine=['',''] + for loc,lastmod in entries: + siteMapLine.append("%s%s" % (html.escape(loc),lastmod)) + siteMapLine.append("") + + print("====== create sitemap xml ======") + siteMapFile=open(self.root_dir+"sitemap.xml","w",encoding="utf-8") + siteMapFile.write("\n".join(siteMapLine)) + siteMapFile.close() + print("====== create rss xml ======") feed.rss_file(self.root_dir+'rss.xml') @@ -417,6 +455,7 @@ class GMEEK(): self.createPlistHtml() self.createFeedXml() + self.createSiteMapXml() print("====== create static html end ======") def runOne(self,number_str): @@ -427,6 +466,7 @@ class GMEEK(): self.createPostHtml(self.blogBase[listJsonName]["P"+number_str]) self.createPlistHtml() self.createFeedXml() + self.createSiteMapXml() print("====== create static html end ======") else: print("====== issue is closed ======")