mirror of
https://github.com/eiblog/eiblog.git
synced 2026-02-04 22:02:26 +08:00
108 lines
2.2 KiB
Go
108 lines
2.2 KiB
Go
// Package main provides ...
|
|
// generate feed.xml and sitemap.xml
|
|
package main
|
|
|
|
import (
|
|
"os"
|
|
"text/template"
|
|
"time"
|
|
|
|
"github.com/eiblog/eiblog/setting"
|
|
"github.com/eiblog/utils/logd"
|
|
"github.com/eiblog/utils/tmpl"
|
|
)
|
|
|
|
const (
|
|
FEED_COUNT = 20
|
|
TEMPLATE_GLOB = "conf/tpl/*.xml"
|
|
)
|
|
|
|
var tpls *template.Template
|
|
|
|
func init() {
|
|
var err error
|
|
tpls, err = template.New("").Funcs(template.FuncMap{"dateformat": tmpl.DateFormat}).ParseGlob(TEMPLATE_GLOB)
|
|
if err != nil {
|
|
logd.Fatal(err)
|
|
}
|
|
doOpensearch()
|
|
go doFeed()
|
|
go doSitemap()
|
|
}
|
|
|
|
func doFeed() {
|
|
tpl := tpls.Lookup("feedTpl.xml")
|
|
if tpl == nil {
|
|
logd.Error("not found feedTpl.")
|
|
return
|
|
}
|
|
_, _, artcs := PageList(1, FEED_COUNT)
|
|
buildDate := time.Now()
|
|
params := map[string]interface{}{
|
|
"Title": Ei.BTitle,
|
|
"SubTitle": Ei.SubTitle,
|
|
"Domain": setting.Conf.Mode.Domain,
|
|
"FeedrURL": setting.Conf.FeedrURL,
|
|
"BuildDate": buildDate.Format(time.RFC1123Z),
|
|
"Artcs": artcs,
|
|
}
|
|
|
|
f, err := os.OpenFile("static/feed.xml", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
|
|
if err != nil {
|
|
logd.Error(err)
|
|
return
|
|
}
|
|
defer f.Close()
|
|
err = tpl.Execute(f, params)
|
|
if err != nil {
|
|
logd.Error(err)
|
|
return
|
|
}
|
|
time.AfterFunc(time.Hour*4, doFeed)
|
|
}
|
|
|
|
func doSitemap() {
|
|
tpl := tpls.Lookup("sitemapTpl.xml")
|
|
if tpl == nil {
|
|
logd.Error("not found sitemapTpl.")
|
|
return
|
|
}
|
|
params := map[string]interface{}{"Artcs": Ei.Articles, "Domain": setting.Conf.Mode.Domain}
|
|
f, err := os.OpenFile("static/sitemap.xml", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
|
|
if err != nil {
|
|
logd.Error(err)
|
|
return
|
|
}
|
|
defer f.Close()
|
|
err = tpl.Execute(f, params)
|
|
if err != nil {
|
|
logd.Error(err)
|
|
return
|
|
}
|
|
time.AfterFunc(time.Hour*24, doFeed)
|
|
}
|
|
|
|
func doOpensearch() {
|
|
tpl := tpls.Lookup("opensearchTpl.xml")
|
|
if tpl == nil {
|
|
logd.Error("not found opensearchTpl.")
|
|
return
|
|
}
|
|
params := map[string]string{
|
|
"BTitle": Ei.BTitle,
|
|
"SubTitle": Ei.SubTitle,
|
|
"Domain": setting.Conf.Mode.Domain,
|
|
}
|
|
f, err := os.OpenFile("static/opensearch.xml", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
|
|
if err != nil {
|
|
logd.Error(err)
|
|
return
|
|
}
|
|
defer f.Close()
|
|
err = tpl.Execute(f, params)
|
|
if err != nil {
|
|
logd.Error(err)
|
|
return
|
|
}
|
|
}
|