Code cleanup
This commit is contained in:
parent
d93a7b315d
commit
af02917766
@ -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
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
32
src/invidious/search/ctoken.cr
Normal file
32
src/invidious/search/ctoken.cr
Normal 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
|
Loading…
Reference in New Issue
Block a user