56 lines
817 B
Go
56 lines
817 B
Go
|
package feed
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/mmcdole/gofeed"
|
||
|
)
|
||
|
|
||
|
type Entry struct {
|
||
|
Title string
|
||
|
Link string
|
||
|
Published time.Time
|
||
|
Categories []string
|
||
|
}
|
||
|
|
||
|
func EntryFromFeed(item *gofeed.Item) *Entry {
|
||
|
t := time.Now()
|
||
|
if item.UpdatedParsed != nil {
|
||
|
t = *item.UpdatedParsed
|
||
|
}
|
||
|
e := &Entry{
|
||
|
Title: item.Title,
|
||
|
Link: item.Link,
|
||
|
Published: t,
|
||
|
Categories: item.Categories,
|
||
|
}
|
||
|
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
type Feed struct {
|
||
|
Title string
|
||
|
Link string
|
||
|
Updated time.Time
|
||
|
Entries []*Entry
|
||
|
}
|
||
|
|
||
|
func NewFromFeed(feed *gofeed.Feed) *Feed {
|
||
|
t := time.Now()
|
||
|
if feed.UpdatedParsed != nil {
|
||
|
t = *feed.UpdatedParsed
|
||
|
}
|
||
|
|
||
|
f := &Feed{
|
||
|
Title: feed.Title,
|
||
|
Link: feed.Link,
|
||
|
Updated: t,
|
||
|
}
|
||
|
|
||
|
for _, item := range feed.Items {
|
||
|
f.Entries = append(f.Entries, EntryFromFeed(item))
|
||
|
}
|
||
|
|
||
|
return f
|
||
|
}
|