mirror of
https://github.com/eiblog/eiblog.git
synced 2026-02-08 15:52:25 +08:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
666161d37e | ||
|
|
11b22da339 | ||
|
|
bd9a45078b | ||
|
|
629ad782c4 |
14
CHANGELOG.md
14
CHANGELOG.md
@@ -2,6 +2,20 @@
|
|||||||
|
|
||||||
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.
|
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.7](https://github.com/eiblog/eiblog/compare/v3.0.6...v3.0.7) (2025-07-26)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* feed not generate ([11b22da](https://github.com/eiblog/eiblog/commit/11b22da339c542eb6d697cb3ac7bc78a401c6420))
|
||||||
|
|
||||||
|
### [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)
|
### [3.0.5](https://github.com/eiblog/eiblog/compare/v3.0.4...v3.0.5) (2025-07-25)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,79 +25,8 @@ func startTimer() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Error("startTimer.generateCrossdomain: ", err)
|
logrus.Error("startTimer.generateCrossdomain: ", err)
|
||||||
}
|
}
|
||||||
|
// 定时刷新
|
||||||
ticker := time.NewTicker(time.Hour)
|
refreshFeedAndSitemap()
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateOpensearch 生成opensearch.xml
|
// generateOpensearch 生成opensearch.xml
|
||||||
@@ -158,3 +87,75 @@ func generateCrossdomain() error {
|
|||||||
defer f.Close()
|
defer f.Close()
|
||||||
return tpl.Execute(f, params)
|
return tpl.Execute(f, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// refreshFeedAndSitemap 定时刷新feed和sitemap
|
||||||
|
func refreshFeedAndSitemap() {
|
||||||
|
defer time.AfterFunc(time.Hour*4, refreshFeedAndSitemap)
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
// generate feed & sitemap
|
||||||
|
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
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user