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