12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package main
- import (
- "log"
- "net/url"
-
- "github.com/SlyMarbo/rss"
- )
- func main() {
- log.Println("gof starting up...")
- config := readConfig()
-
- log.Println("Fetching feeds...")
- var feeds []*rss.Feed
- for _, source := range config.Feeds {
- feed, err := rss.Fetch(source.URL)
- if err != nil {
- log.Printf("Error fetching %s: %s", source.URL, err.Error())
- continue
- }
- feeds = append(feeds, feed)
- log.Printf("Fetched %s", feed.Title)
- }
- if len(feeds) == 0 {
- log.Fatal("Expected at least one feed to successfully fetch.")
- }
-
- for _, feed := range feeds {
-
- if len(feed.Items) == 0 {
- log.Printf("Warning: feed %s has no items.", feed.Title)
- continue
- }
- items := feed.Items
- if len(items) > 1 {
- items = items[:1]
- }
- base, err := url.Parse(feed.UpdateURL)
- if err != nil {
- log.Fatal("failed parsing update URL of the feed")
- }
- feedLink, _ := url.Parse(feed.Link)
- if err != nil {
- log.Fatal("failed parsing canonical feed URL of the feed")
- }
-
- for _, item := range items {
- itemLink, err := url.Parse(item.Link)
- if err != nil {
- log.Fatal("failed parsing article URL of the feed item")
- }
-
-
- log.Printf("Item Data:\n\tTimestamp: %s\n\tSite URL: %s\n\tFeed Title: %s\n\tItem Title: %s\n\tItem URL: %s\n",
- item.Date, base.ResolveReference(feedLink).String(),
- feed.Title, item.Title, base.ResolveReference(itemLink).String())
- }
- }
-
- config.updateLastUpdated()
-
- config.Save()
- }
|