Files
MollyBlog/internal/mApp/mRss.go
2024-12-19 12:13:56 +08:00

57 lines
1.2 KiB
Go

package mApp
import (
"fmt"
"log"
"strconv"
"time"
"github.com/gorilla/feeds"
)
func (ma *MApp) generateRSS() string {
layout := "2006-01-02 15:04:05"
now := time.Now()
feed := &feeds.Feed{
Created: now,
Title: ma.Config.MSite.Info.Title,
Link: &feeds.Link{Href: ma.Config.MSite.Info.Link},
Author: &feeds.Author{Name: ma.Config.MSite.Info.Author, Email: ma.Config.MSite.Info.Email},
Description: ma.Config.MSite.Info.Description,
}
count := 0
var items []*feeds.Item
for _, post := range ma.Posts {
if count >= ma.Config.MSite.Post.RecentPost.Number {
break
}
updated, err := time.Parse(layout, post.Date)
if err != nil {
log.Println("Error parsing updated time ", post.Date)
continue
}
item := &feeds.Item{
Title: post.Title,
Id: strconv.FormatUint(post.Index, 10),
Link: &feeds.Link{Href: fmt.Sprintf("%s/post/%s", ma.Config.MSite.Info.Link, post.HtmlHash)},
Author: &feeds.Author{Name: ma.Config.MSite.Info.Author, Email: ma.Config.MSite.Info.Email},
Updated: updated,
}
items = append(items, item)
count++
}
feed.Items = items
rss, err := feed.ToRss()
if err != nil {
log.Println("Error generating rss ", err)
}
return rss
}