From b47c880ea5ffd357878b7617c3493d7b1f48f4cf Mon Sep 17 00:00:00 2001 From: sentriz Date: Mon, 12 Dec 2022 18:30:40 +0000 Subject: [PATCH] fix(jukebox): gracefully handle case of no audio in feed item fixes #269 --- podcasts/podcasts.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/podcasts/podcasts.go b/podcasts/podcasts.go index 0905241..1d99b1b 100644 --- a/podcasts/podcasts.go +++ b/podcasts/podcasts.go @@ -24,6 +24,8 @@ import ( "go.senan.xyz/gonic/scanner/tags" ) +var ErrNoAudioInFeedItem = errors.New("no audio in feed item") + const downloadAllWaitInterval = 3 * time.Second const fetchUserAgent = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11` @@ -166,6 +168,10 @@ func (p *Podcasts) AddNewEpisodes(podcast *db.Podcast, items []*gofeed.Item) err } for _, item := range getEntriesAfterDate(items, *podcastEpisode.PublishDate) { episode, err := p.AddEpisode(podcast.ID, item) + if errors.Is(err, ErrNoAudioInFeedItem) { + log.Println("failed to find audio in feed item, skipping") + continue + } if err != nil { return err } @@ -226,9 +232,7 @@ func (p *Podcasts) AddEpisode(podcastID int, item *gofeed.Item) (*db.PodcastEpis } return episode, nil } - // hopefully shouldnt reach here - log.Println("failed to find audio in feed item, skipping") - return nil, nil + return nil, ErrNoAudioInFeedItem } func isAudio(mediaType, url string) bool {