summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/invidious/search.cr13
1 files 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 (