commit
5017176e39
|
@ -20,6 +20,21 @@ 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
|
||||
|
||||
# Deduplicate items before returning results
|
||||
return extracted.select(SearchVideo).uniq!(&.id), plid
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
||||
category.contents.each do |item|
|
||||
target << cate_i if item.is_a?(SearchItem)
|
||||
return category.contents.select(SearchVideo)
|
||||
end
|
||||
|
||||
return items
|
||||
# :ditto:
|
||||
def extract_category(category : Category, &)
|
||||
category.contents.select(SearchVideo).each do |item|
|
||||
yield item
|
||||
end
|
||||
end
|
||||
|
||||
def extract_selected_tab(tabs)
|
||||
|
|
Loading…
Reference in a new issue