package main import ( "fmt" "io" "net/http" "os" "time" "github.com/mmcdole/gofeed" ) func main() { client := &http.Client{Timeout: 60 * time.Second} resp, err := client.Get("https://feeds.transistor.fm/oxide-and-friends") if err != nil { fmt.Fprintf(os.Stderr, "Error fetching: %v\n", err) os.Exit(1) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { fmt.Fprintf(os.Stderr, "Error reading body: %v\n", err) os.Exit(1) } parser := gofeed.NewParser() feed, err := parser.ParseString(string(body)) if err != nil { fmt.Fprintf(os.Stderr, "Error parsing feed: %v\n", err) os.Exit(1) } fmt.Printf("Feed title: %s\n", feed.Title) fmt.Printf("Total items: %d\n\n", len(feed.Items)) for i, item := range feed.Items { if i >= 5 { break } fmt.Printf("--- Item %d ---\n", i+1) fmt.Printf(" Title: %s\n", item.Title) fmt.Printf(" Published (raw): %s\n", item.Published) if item.PublishedParsed != nil { fmt.Printf(" PublishedParsed: %v\n", *item.PublishedParsed) } else { fmt.Printf(" PublishedParsed: \n") } // Check for itunes:pubDate or other date fields for _, enc := range item.Enclosures { fmt.Printf(" Enclosure URL (truncated): %s...\n", enc.URL[:min(len(enc.URL), 80)]) } fmt.Println() } } func min(a, b int) int { if a < b { return a } return b }