Fetch and parse an RSS feed
This commit is contained in:
31
rss/rss.go
Normal file
31
rss/rss.go
Normal file
@@ -0,0 +1,31 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user