Improved rss thumbnail coverage

pull/893/head
NicolasNewman 2025-12-03 10:21:53 +07:00
parent 784bf53425
commit c6f3be3e7f
1 changed files with 24 additions and 5 deletions

@ -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 {