Custom error on channel search, handle in search

This commit is contained in:
matthewmcgarvey 2022-01-17 09:49:29 -06:00
parent 212f6d6bf5
commit 97dceb3a5a

View file

@ -1,3 +1,6 @@
class ChannelSearchException < InfoException
end
def channel_search(query, page, channel) def channel_search(query, page, channel)
response = YT_POOL.client &.get("/channel/#{channel}") response = YT_POOL.client &.get("/channel/#{channel}")
@ -6,7 +9,7 @@ def channel_search(query, page, channel)
response = YT_POOL.client &.get("/c/#{channel}") if response.status_code == 404 response = YT_POOL.client &.get("/c/#{channel}") if response.status_code == 404
initial_data = extract_initial_data(response.body) initial_data = extract_initial_data(response.body)
ucid = initial_data.dig?("header", "c4TabbedHeaderRenderer", "channelId").try(&.as_s?) ucid = initial_data.dig?("header", "c4TabbedHeaderRenderer", "channelId").try(&.as_s?)
raise InfoException.new("Impossible to extract channel ID from page") if !ucid raise ChannelSearchException.new("Impossible to extract channel ID from page") if !ucid
else else
ucid = channel ucid = channel
end end
@ -210,7 +213,13 @@ def process_search_query(query, page, user, region)
search_query = (query.split(" ") - operators).join(" ") search_query = (query.split(" ") - operators).join(" ")
if channel if channel
count, items = channel_search(search_query, page, channel) begin
count, items = channel_search(search_query, page, channel)
rescue ChannelSearchException
# most likely reason for this is that they provided an invalid channel id to the search
count = 0
items = [] of ChannelVideo
end
elsif subscriptions elsif subscriptions
if view_name if view_name
items = PG_DB.query_all("SELECT id,title,published,updated,ucid,author,length_seconds FROM ( items = PG_DB.query_all("SELECT id,title,published,updated,ucid,author,length_seconds FROM (