From 97dceb3a5a8037fffc28b0e2deca4ebc42b24177 Mon Sep 17 00:00:00 2001 From: matthewmcgarvey Date: Mon, 17 Jan 2022 09:49:29 -0600 Subject: [PATCH] Custom error on channel search, handle in search --- src/invidious/search.cr | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/invidious/search.cr b/src/invidious/search.cr index 0bb7c69d..6cb61e7d 100644 --- a/src/invidious/search.cr +++ b/src/invidious/search.cr @@ -1,3 +1,6 @@ +class ChannelSearchException < InfoException +end + def channel_search(query, page, 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 initial_data = extract_initial_data(response.body) 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 ucid = channel end @@ -210,7 +213,13 @@ def process_search_query(query, page, user, region) search_query = (query.split(" ") - operators).join(" ") 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 if view_name items = PG_DB.query_all("SELECT id,title,published,updated,ucid,author,length_seconds FROM (