Code cleanup

This commit is contained in:
Samantaz Fox 2022-03-27 01:20:00 +01:00
parent d93a7b315d
commit af02917766
No known key found for this signature in database
GPG key ID: F42821059186176E
5 changed files with 41 additions and 80 deletions

View file

@ -77,10 +77,6 @@ Metrics/CyclomaticComplexity:
# process_video_params(query, preferences) => [20/10]
- src/invidious/videos.cr
# produce_search_params(page, sort, ...) => [29/10]
# process_search_query(query, page, ...) => [14/10]
- src/invidious/search.cr
#src/invidious/playlists.cr:327:5

View file

@ -8,7 +8,7 @@ require "../src/invidious/channels/*"
require "../src/invidious/videos"
require "../src/invidious/comments"
require "../src/invidious/playlists"
require "../src/invidious/search"
require "../src/invidious/search/ctoken"
require "../src/invidious/trending"
require "spectator"

View file

@ -1,3 +1,11 @@
# Exception used to hold the bogus UCID during a channel search.
class ChannelSearchException < InfoException
getter channel : String
def initialize(@channel)
end
end
# Exception used to hold the name of the missing item
# Should be used in all parsing functions
class BrokenTubeException < Exception

View file

@ -1,75 +0,0 @@
class ChannelSearchException < InfoException
getter channel : String
def initialize(@channel)
end
end
def produce_channel_search_continuation(ucid, query, page)
if page <= 1
idx = 0_i64
else
idx = 30_i64 * (page - 1)
end
object = {
"80226972:embedded" => {
"2:string" => ucid,
"3:base64" => {
"2:string" => "search",
"6:varint" => 1_i64,
"7:varint" => 1_i64,
"12:varint" => 1_i64,
"15:base64" => {
"3:varint" => idx,
},
"23:varint" => 0_i64,
},
"11:string" => query,
"35:string" => "browse-feed#{ucid}search",
},
}
continuation = object.try { |i| Protodec::Any.cast_json(i) }
.try { |i| Protodec::Any.from_json(i) }
.try { |i| Base64.urlsafe_encode(i) }
.try { |i| URI.encode_www_form(i) }
return continuation
end
def process_search_query(query, page, user, region)
# Parse legacy query
filters, channel, search_query, subscriptions = Invidious::Search::Filters.from_legacy_filters(query)
if !channel.nil? && !channel.empty?
items = Invidious::Search::Processors.channel(search_query, page, channel)
elsif subscriptions
if user
user = user.as(Invidious::User)
items = Invidious::Search::Processors.subscriptions(query, page, user)
else
items = [] of ChannelVideo
end
else
search_params = filters.to_yt_params(page: page)
items = search(search_query, search_params, region)
end
# Light processing to flatten search results out of Categories.
# They should ideally be supported in the future.
items_without_category = [] of SearchItem | ChannelVideo
items.each do |i|
if i.is_a? Category
i.contents.each do |nest_i|
if !nest_i.is_a? Video
items_without_category << nest_i
end
end
else
items_without_category << i
end
end
{search_query, items_without_category, filters}
end

View file

@ -0,0 +1,32 @@
def produce_channel_search_continuation(ucid, query, page)
if page <= 1
idx = 0_i64
else
idx = 30_i64 * (page - 1)
end
object = {
"80226972:embedded" => {
"2:string" => ucid,
"3:base64" => {
"2:string" => "search",
"6:varint" => 1_i64,
"7:varint" => 1_i64,
"12:varint" => 1_i64,
"15:base64" => {
"3:varint" => idx,
},
"23:varint" => 0_i64,
},
"11:string" => query,
"35:string" => "browse-feed#{ucid}search",
},
}
continuation = object.try { |i| Protodec::Any.cast_json(i) }
.try { |i| Protodec::Any.from_json(i) }
.try { |i| Base64.urlsafe_encode(i) }
.try { |i| URI.encode_www_form(i) }
return continuation
end