fix(podcasts): remove query parameters from URL when getting the extension
This commit is contained in:
committed by
Senan Kelly
parent
6aa4c42ce5
commit
19be6f0881
@@ -168,7 +168,7 @@ func (p *Podcasts) AddNewEpisodes(podcast *db.Podcast, items []*gofeed.Item) err
|
|||||||
for _, item := range getEntriesAfterDate(items, *podcastEpisode.PublishDate) {
|
for _, item := range getEntriesAfterDate(items, *podcastEpisode.PublishDate) {
|
||||||
episode, err := p.AddEpisode(podcast.ID, item)
|
episode, err := p.AddEpisode(podcast.ID, item)
|
||||||
if errors.Is(err, ErrNoAudioInFeedItem) {
|
if errors.Is(err, ErrNoAudioInFeedItem) {
|
||||||
log.Println("failed to find audio in feed item, skipping")
|
log.Printf("failed to find audio in feed (%s, %s) item, skipping", podcast.Title, item.Title)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -234,8 +234,13 @@ func (p *Podcasts) AddEpisode(podcastID int, item *gofeed.Item) (*db.PodcastEpis
|
|||||||
return nil, ErrNoAudioInFeedItem
|
return nil, ErrNoAudioInFeedItem
|
||||||
}
|
}
|
||||||
|
|
||||||
func isAudio(mediaType, url string) bool {
|
func isAudio(mediaType, rawItemURL string) (bool, error) {
|
||||||
return mime.TypeByAudioExtension(path.Ext(url)) != ""
|
itemURL, err := url.Parse(rawItemURL)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return mime.TypeByAudioExtension(path.Ext(itemURL.Path)) != "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func itemToEpisode(podcastID, size, duration int, audio string,
|
func itemToEpisode(podcastID, size, duration int, audio string,
|
||||||
@@ -254,7 +259,7 @@ func itemToEpisode(podcastID, size, duration int, audio string,
|
|||||||
|
|
||||||
func (p *Podcasts) findEnclosureAudio(podcastID, duration int, item *gofeed.Item) (*db.PodcastEpisode, bool) {
|
func (p *Podcasts) findEnclosureAudio(podcastID, duration int, item *gofeed.Item) (*db.PodcastEpisode, bool) {
|
||||||
for _, enc := range item.Enclosures {
|
for _, enc := range item.Enclosures {
|
||||||
if !isAudio(enc.Type, enc.URL) {
|
if t, err := isAudio(enc.Type, enc.URL); !t || err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
size, _ := strconv.Atoi(enc.Length)
|
size, _ := strconv.Atoi(enc.Length)
|
||||||
@@ -269,7 +274,7 @@ func (p *Podcasts) findMediaAudio(podcastID, duration int, item *gofeed.Item) (*
|
|||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
for _, ext := range extensions {
|
for _, ext := range extensions {
|
||||||
if !isAudio(ext.Attrs["type"], ext.Attrs["url"]) {
|
if t, err := isAudio(ext.Attrs["type"], ext.Attrs["url"]); !t || err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return itemToEpisode(podcastID, 0, duration, ext.Attrs["url"], item), true
|
return itemToEpisode(podcastID, 0, duration, ext.Attrs["url"], item), true
|
||||||
|
|||||||
Reference in New Issue
Block a user