diff --git a/internal/glance/widget-rss.go b/internal/glance/widget-rss.go index c66dc16..dd36f94 100644 --- a/internal/glance/widget-rss.go +++ b/internal/glance/widget-rss.go @@ -334,7 +334,7 @@ func (widget *rssWidget) fetchItemsFromFeedTask(request rssFeedRequest) ([]rssFe } else { rssItem.ChannelName = feed.Title } - + if item.Image != nil { rssItem.ImageURL = item.Image.URL } else if url := findThumbnailInItemExtensions(item); url != "" { @@ -388,15 +388,34 @@ func (widget *rssWidget) fetchItemsFromFeedTask(request rssFeedRequest) ([]rssFe } func findThumbnailInItemExtensions(item *gofeed.Item) string { - media, ok := item.Extensions["media"] + media, ok := item.Extensions["media"] - if !ok { - return "" - } + if !ok { + enclosures := item.Enclosures + if len(enclosures) == 0 { + return "" + } + return recursiveFindThumbnailInEnclosures(enclosures) + } return recursiveFindThumbnailInExtensions(media) } +func recursiveFindThumbnailInEnclosures(enclosures []*gofeed.Enclosure) string { + url := "" + + for _, enclosure := range enclosures { + switch enclosure.Type { + case "image/generic": + url = enclosure.URL + case "image/jpeg", "image/png", "image/gif": + return enclosure.URL + } + } + + return url +} + func recursiveFindThumbnailInExtensions(extensions map[string][]gofeedext.Extension) string { for _, exts := range extensions { for _, ext := range exts {