Compare commits

...

2 Commits

Author SHA1 Message Date
henry.chen
bd9a45078b chore(release): 3.0.6 2025-07-25 18:05:33 +08:00
henry.chen
629ad782c4 fix: feed & sitemap not generate 2025-07-25 18:05:23 +08:00
2 changed files with 85 additions and 73 deletions

View File

@@ -2,6 +2,13 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [3.0.6](https://github.com/eiblog/eiblog/compare/v3.0.5...v3.0.6) (2025-07-25)
### Bug Fixes
* feed & sitemap not generate ([629ad78](https://github.com/eiblog/eiblog/commit/629ad782c45fae7af9efdf99513bafdf87e7758c))
### [3.0.5](https://github.com/eiblog/eiblog/compare/v3.0.4...v3.0.5) (2025-07-25)

View File

@@ -25,79 +25,8 @@ func startTimer() {
if err != nil {
logrus.Error("startTimer.generateCrossdomain: ", err)
}
ticker := time.NewTicker(time.Hour)
for now := range ticker.C {
// generate feed & sitemap
if now.Hour()%4 == 0 {
err = generateFeed()
if err != nil {
logrus.Error("startTimer.generateFeed: ", err)
}
err = generateSitemap()
if err != nil {
logrus.Error("startTimer.generateSitemap: ", err)
}
}
// clean expired articles
exp := now.Add(-48 * time.Hour)
err := Store.CleanArticles(context.Background(), exp)
if err != nil {
logrus.Error("startTimer.CleanArticles: ", err)
}
// fetch disqus count
if now.Hour()%5 == 0 {
err = DisqusClient.PostsCount(Ei.ArticlesMap)
if err != nil {
logrus.Error("startTimer.PostsCount: ", err)
}
}
}
}
// generateFeed 定时刷新feed
func generateFeed() error {
tpl := XMLTemplate.Lookup("feedTpl.xml")
if tpl == nil {
return errors.New("not found: feedTpl.xml")
}
_, _, articles := Ei.PageArticleFE(1, 20)
params := map[string]interface{}{
"Title": Ei.Blogger.BTitle,
"SubTitle": Ei.Blogger.SubTitle,
"Host": config.Conf.Host,
"FeedrURL": config.Conf.FeedRPC.FeedrURL,
"BuildDate": time.Now().Format(time.RFC1123Z),
"Articles": articles,
}
path := filepath.Join(config.EtcDir, "assets", "feed.xml")
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
return err
}
defer f.Close()
return tpl.Execute(f, params)
}
// generateSitemap 定时刷新sitemap
func generateSitemap() error {
tpl := XMLTemplate.Lookup("sitemapTpl.xml")
if tpl == nil {
return errors.New("not found: sitemapTpl.xml")
}
params := map[string]interface{}{
"Articles": Ei.Articles,
"Host": config.Conf.Host,
}
path := filepath.Join(config.EtcDir, "assets", "sitemap.xml")
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
return err
}
defer f.Close()
return tpl.Execute(f, params)
// 定时刷新
refreshFeedAndSitemap()
}
// generateOpensearch 生成opensearch.xml
@@ -158,3 +87,79 @@ func generateCrossdomain() error {
defer f.Close()
return tpl.Execute(f, params)
}
// refreshFeedAndSitemap 定时刷新feed和sitemap
func refreshFeedAndSitemap() {
defer time.AfterFunc(time.Hour, refreshFeedAndSitemap)
now := time.Now()
// generate feed & sitemap
if now.Hour()%4 == 0 {
err := generateFeed()
if err != nil {
logrus.Error("startTimer.generateFeed: ", err)
}
err = generateSitemap()
if err != nil {
logrus.Error("startTimer.generateSitemap: ", err)
}
}
// clean expired articles
exp := now.Add(-48 * time.Hour)
err := Store.CleanArticles(context.Background(), exp)
if err != nil {
logrus.Error("startTimer.CleanArticles: ", err)
}
// fetch disqus count
if now.Hour()%5 == 0 {
err = DisqusClient.PostsCount(Ei.ArticlesMap)
if err != nil {
logrus.Error("startTimer.PostsCount: ", err)
}
}
}
// generateFeed 定时刷新feed
func generateFeed() error {
tpl := XMLTemplate.Lookup("feedTpl.xml")
if tpl == nil {
return errors.New("not found: feedTpl.xml")
}
_, _, articles := Ei.PageArticleFE(1, 20)
params := map[string]interface{}{
"Title": Ei.Blogger.BTitle,
"SubTitle": Ei.Blogger.SubTitle,
"Host": config.Conf.Host,
"FeedrURL": config.Conf.FeedRPC.FeedrURL,
"BuildDate": time.Now().Format(time.RFC1123Z),
"Articles": articles,
}
path := filepath.Join(config.EtcDir, "assets", "feed.xml")
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
return err
}
defer f.Close()
return tpl.Execute(f, params)
}
// generateSitemap 定时刷新sitemap
func generateSitemap() error {
tpl := XMLTemplate.Lookup("sitemapTpl.xml")
if tpl == nil {
return errors.New("not found: sitemapTpl.xml")
}
params := map[string]interface{}{
"Articles": Ei.Articles,
"Host": config.Conf.Host,
}
path := filepath.Join(config.EtcDir, "assets", "sitemap.xml")
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
return err
}
defer f.Close()
return tpl.Execute(f, params)
}