104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"io/ioutil"
|
|
"time"
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/config"
|
|
"git.1750studios.com/gronkhDE/gogronkh/database"
|
|
)
|
|
|
|
type urlset struct {
|
|
Xmlns string `xml:"xmlns,attr"`
|
|
Url []URL `xml:"url"`
|
|
}
|
|
|
|
type URL struct {
|
|
Location string `xml:"loc"`
|
|
LastMod time.Time `xml:"lastmod,omitempty"`
|
|
ChangeFreq string `xml:"changefreq"`
|
|
Priority float32 `xml:"priority"`
|
|
}
|
|
|
|
func WriteSitemap(path string, sitemap urlset) (error) {
|
|
smap, err := xml.Marshal(sitemap)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
out := xml.Header + string(smap)
|
|
err = ioutil.WriteFile(path, []byte(out), 0644)
|
|
return err
|
|
}
|
|
|
|
func GenerateSitemap() {
|
|
var uset urlset
|
|
uset.Xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
var temp URL
|
|
temp.Location = config.C.SiteUrl + "/"
|
|
temp.LastMod = time.Now()
|
|
temp.ChangeFreq = "hourly"
|
|
temp.Priority = 1.0
|
|
uset.Url = append(uset.Url, temp)
|
|
temp.Location = config.C.SiteUrl + "/lets-play"
|
|
temp.LastMod = time.Now()
|
|
temp.ChangeFreq = "monthly"
|
|
temp.Priority = 0.75
|
|
uset.Url = append(uset.Url, temp)
|
|
temp.Location = config.C.SiteUrl + "/testet"
|
|
temp.LastMod = time.Now()
|
|
temp.ChangeFreq = "monthly"
|
|
temp.Priority = 0.75
|
|
uset.Url = append(uset.Url, temp)
|
|
temp.Location = config.C.SiteUrl + "/zeige"
|
|
temp.LastMod = time.Now()
|
|
temp.ChangeFreq = "yearly"
|
|
temp.Priority = 0.75
|
|
uset.Url = append(uset.Url, temp)
|
|
genLPs(&uset)
|
|
genLTs(&uset)
|
|
genEPs(&uset)
|
|
WriteSitemap(config.C.ImageDirectory + "sitemap.xml", uset)
|
|
}
|
|
|
|
func genLPs(uset *urlset) {
|
|
var LPs []database.LetsPlay
|
|
database.Db.Where("aired IS NOT NULL").Find(&LPs)
|
|
for _, LP := range LPs {
|
|
var temp URL
|
|
temp.Location = config.C.SiteUrl + "/lets-play/" + LP.Slug.String
|
|
temp.LastMod = LP.Aired
|
|
temp.ChangeFreq = "daily"
|
|
temp.Priority = 0.5
|
|
uset.Url = append(uset.Url, temp)
|
|
}
|
|
}
|
|
|
|
func genLTs(uset *urlset) {
|
|
var LTs []database.LetsTest
|
|
database.Db.Find(<s)
|
|
for _, LT := range LTs {
|
|
var temp URL
|
|
temp.Location = config.C.SiteUrl + "/testet/" + LT.Slug.String
|
|
temp.LastMod = LT.Aired
|
|
temp.ChangeFreq = "never"
|
|
temp.Priority = 0.5
|
|
uset.Url = append(uset.Url, temp)
|
|
}
|
|
}
|
|
|
|
func genEPs(uset *urlset) {
|
|
var EPs []database.Episode
|
|
database.Db.Find(&EPs)
|
|
for _, EP := range EPs {
|
|
var LP database.LetsPlay
|
|
database.Db.Model(&EP).Related(&LP)
|
|
var temp URL
|
|
temp.Location = config.C.SiteUrl + "/lets-play/" + LP.Slug.String + "/" + EP.Slug.String
|
|
temp.LastMod = EP.Aired
|
|
temp.ChangeFreq = "never"
|
|
temp.Priority = 0.5
|
|
uset.Url = append(uset.Url, temp)
|
|
}
|
|
}
|