go-rss/rss/rss.go

32 lines
588 B
Go

package rss
import (
"fmt"
"github.com/mmcdole/gofeed"
)
type RssItem struct {
Title string
Description string
Link string
}
func (item RssItem) String() string {
return fmt.Sprintf("RssItem(Title=%s, ...)", item.Title)
}
func FetchRss(url string) ([]RssItem, error) {
fp := gofeed.NewParser()
feed, err := fp.ParseURL(url)
if err != nil {
return nil, err
}
items := make([]RssItem, 0, len(feed.Items))
for _, item := range feed.Items {
newItem := RssItem{item.Title, item.Description, item.Link}
items = append(items, newItem)
}
return items, nil
}