reader/rss: don't add empty tags to RSS items

This commit adds a bunch of checks to prevent reader/rss from adding empty tags
to rss items, as well as some minor refactors like nested conditions and loops
unrolling.
This commit is contained in:
jvoisin 2024-03-25 02:02:50 +01:00 committed by Frédéric Guillot
parent b54fe66809
commit f109e3207c

View file

@ -90,9 +90,9 @@ func (r *RSSAdapter) BuildFeed(baseURL string) *model.Feed {
entry.Title = findEntryTitle(&item) entry.Title = findEntryTitle(&item)
if entry.Title == "" { if entry.Title == "" {
entry.Title = sanitizer.TruncateHTML(entry.Content, 100) entry.Title = sanitizer.TruncateHTML(entry.Content, 100)
} if entry.Title == "" {
if entry.Title == "" { entry.Title = entry.URL
entry.Title = entry.URL }
} }
entry.Author = findEntryAuthor(&item) entry.Author = findEntryAuthor(&item)
@ -101,11 +101,10 @@ func (r *RSSAdapter) BuildFeed(baseURL string) *model.Feed {
} }
// Generate the entry hash. // Generate the entry hash.
for _, value := range []string{item.GUID.Data, entryURL} { if item.GUID.Data != "" {
if value != "" { entry.Hash = crypto.Hash(item.GUID.Data)
entry.Hash = crypto.Hash(value) } else if entryURL != "" {
break entry.Hash = crypto.Hash(entryURL)
}
} }
// Find CommentsURL if defined. // Find CommentsURL if defined.
@ -121,12 +120,27 @@ func (r *RSSAdapter) BuildFeed(baseURL string) *model.Feed {
} }
// Populate entry categories. // Populate entry categories.
entry.Tags = append(entry.Tags, item.Categories...) for _, tag := range item.Categories {
entry.Tags = append(entry.Tags, item.MediaCategories.Labels()...) if tag != "" {
entry.Tags = append(entry.Tags, tag)
}
}
for _, tag := range item.MediaCategories.Labels() {
if tag != "" {
entry.Tags = append(entry.Tags, tag)
}
}
if len(entry.Tags) == 0 { if len(entry.Tags) == 0 {
entry.Tags = append(entry.Tags, r.rss.Channel.Categories...) for _, tag := range r.rss.Channel.Categories {
entry.Tags = append(entry.Tags, r.rss.Channel.GetItunesCategories()...) if tag != "" {
entry.Tags = append(entry.Tags, tag)
}
}
for _, tag := range r.rss.Channel.GetItunesCategories() {
if tag != "" {
entry.Tags = append(entry.Tags, tag)
}
}
if r.rss.Channel.GooglePlayCategory.Text != "" { if r.rss.Channel.GooglePlayCategory.Text != "" {
entry.Tags = append(entry.Tags, r.rss.Channel.GooglePlayCategory.Text) entry.Tags = append(entry.Tags, r.rss.Channel.GooglePlayCategory.Text)
} }