From 2ebc773863b13091d12439b24bb73ce1a012f11c Mon Sep 17 00:00:00 2001 From: Omar Roth Date: Sun, 17 Mar 2019 18:31:11 -0500 Subject: [PATCH] Add mixes to genre channels --- src/invidious.cr | 9 ++++++++- src/invidious/helpers/helpers.cr | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/invidious.cr b/src/invidious.cr index 375bb538..0a2174ce 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -2471,7 +2471,14 @@ get "/channel/:ucid" do |env| sort_by ||= "last" items, continuation = fetch_channel_playlists(ucid, author, auto_generated, continuation, sort_by) - items.select! { |item| item.is_a?(SearchPlaylist) && !item.videos.empty? } + items.uniq! do |item| + if item.responds_to?(:title) + item.title + elsif item.responds_to?(:author) + item.author + end + end + items.select! { |item| item.responds_to?(:thumbnail_id) && item.thumbnail_id } items = items.map { |item| item.as(SearchPlaylist) } items.each { |item| item.author = "" } else diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr index 1ed33d9e..271aa0c4 100644 --- a/src/invidious/helpers/helpers.cr +++ b/src/invidious/helpers/helpers.cr @@ -416,12 +416,18 @@ def extract_shelf_items(nodeset, ucid = nil, author_name = nil) thumbnail_id = playlist_thumbnail.match(/\/vi\/(?[a-zA-Z0-9_-]{11})\/\w+\.jpg/).try &.["video_id"] end + video_count_label = child_node.xpath_node(%q(.//span[@class="formatted-video-count-label"])) + if video_count_label + video_count = video_count_label.content.strip.match(/^\d+/).try &.[0].to_i? + end + video_count ||= 50 + items << SearchPlaylist.new( playlist_title, plid, author_name, ucid, - 50, + video_count, Array(SearchPlaylistVideo).new, thumbnail_id )