From f61d7b3171f8e38a6dc814bdb4b136588cb3f2b1 Mon Sep 17 00:00:00 2001 From: Serguey Parkhomovsky Date: Mon, 8 Dec 2025 21:22:49 -0800 Subject: Read author from itunes:author --- main.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 42f0a68..00c3779 100644 --- a/main.go +++ b/main.go @@ -28,6 +28,7 @@ type Channel struct { type Item struct { Title string `xml:"title"` + Author string `xml:"https://www.itunes.com/dtds/podcast-1.0.dtd author"` Link string `xml:"link"` Category string `xml:"category"` Enclosure Enclosure `xml:"enclosure"` @@ -68,13 +69,13 @@ func parseYearWeek(date string) (YearWeek, error) { return YearWeek{Year: year, Week: week}, nil } -func parseTitle(title string) (TitleAuthor, error) { +func parseTitle(title string) (string, error) { parts := strings.Split(title, " - ") if len(parts) < 3 { - return TitleAuthor{}, fmt.Errorf("expected 'Week - Author - Title', got '%s'", title) + return "", fmt.Errorf("expected 'Week - Author - Title', got '%s'", title) } - return TitleAuthor{Title: strings.Join(parts[2:], " - "), Author: parts[1]}, nil + return strings.Join(parts[2:], " - "), nil } // For some tracks, like https://weeklybeats.com/keff/music/evil-los-man, the WB RSS feed returns invalid XML bytes. Scrub these. @@ -186,19 +187,19 @@ func main() { // Insert items into database pageItems := 0 for _, item := range rss.Channel.Items { - titleAuthor, err := parseTitle(item.Title) + title, err := parseTitle(item.Title) if err != nil { - log.Printf("Failed to parse title for item '%s': %v", item.Title, err) + log.Printf("Failed to parse title for item '%s': %v", title, err) continue } yearWeek, err := parseYearWeek(item.Category) if err != nil { - log.Printf("Failed to parse date for item '%s': %v", item.Title, err) + log.Printf("Failed to parse date for item '%s': %v", title, err) continue } - _, err = insertStmt.Exec(titleAuthor.Title, item.Link, titleAuthor.Author, yearWeek.Week, yearWeek.Year, item.Enclosure.URL) + _, err = insertStmt.Exec(title, item.Link, item.Author, yearWeek.Week, yearWeek.Year, item.Enclosure.URL) if err != nil { log.Printf("Failed to insert item '%s': %v", item.Title, err) continue -- cgit v1.2.3