summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSamantaz Fox <coding@samantaz.fr>2023-05-02 23:18:40 +0200
committerSamantaz Fox <coding@samantaz.fr>2023-05-02 23:35:37 +0200
commit384a8e200c953ed5be3ba6a01762e933fd566e45 (patch)
treeb8e12c1966a397e2d803dadb3d2b43b0f9d096f7 /src
parent97e3938f5f6741d8645c1bdd37deebc6ddc06151 (diff)
downloadinvidious-384a8e200c953ed5be3ba6a01762e933fd566e45.tar.gz
invidious-384a8e200c953ed5be3ba6a01762e933fd566e45.tar.bz2
invidious-384a8e200c953ed5be3ba6a01762e933fd566e45.zip
Trending: fix mistakes from #3773
Diffstat (limited to 'src')
-rw-r--r--src/invidious/trending.cr18
-rw-r--r--src/invidious/yt_backend/extractors_utils.cr13
2 files changed, 23 insertions, 8 deletions
diff --git a/src/invidious/trending.cr b/src/invidious/trending.cr
index 74bab1bd..fcaf60d1 100644
--- a/src/invidious/trending.cr
+++ b/src/invidious/trending.cr
@@ -20,6 +20,20 @@ def fetch_trending(trending_type, region, locale)
items, _ = extract_items(initial_data)
- # Return items, but ignore categories (e.g featured content)
- return items.reject!(Category), plid
+ extracted = [] of SearchItem
+
+ items.each do |itm|
+ if itm.is_a?(Category)
+ # Ignore the smaller categories, as they generally contain a sponsored
+ # channel, which brings a lot of noise on the trending page.
+ # See: https://github.com/iv-org/invidious/issues/2989
+ next if itm.contents.size < 24
+
+ extracted.concat extract_category(itm)
+ else
+ extracted << itm
+ end
+ end
+
+ return extracted, plid
end
diff --git a/src/invidious/yt_backend/extractors_utils.cr b/src/invidious/yt_backend/extractors_utils.cr
index b247dca8..11d95958 100644
--- a/src/invidious/yt_backend/extractors_utils.cr
+++ b/src/invidious/yt_backend/extractors_utils.cr
@@ -68,16 +68,17 @@ rescue ex
return false
end
-# This function extracts the SearchItems from a Category.
+# This function extracts SearchVideo items from a Category.
# Categories are commonly returned in search results and trending pages.
def extract_category(category : Category) : Array(SearchVideo)
- items = [] of SearchItem
+ return category.contents.select(SearchVideo)
+end
- category.contents.each do |item|
- target << cate_i if item.is_a?(SearchItem)
+# :ditto:
+def extract_category(category : Category, &)
+ category.contents.select(SearchVideo).each do |item|
+ yield item
end
-
- return items
end
def extract_selected_tab(tabs)