Fetch and parse an RSS feed

This commit is contained in:
2025-01-27 22:50:03 -06:00
commit e08b03eaee
4 changed files with 92 additions and 0 deletions

31
rss/rss.go Normal file
View 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
}