32 lines
588 B
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
|
|
}
|