forked from midou/invidious
		
	Merge pull request #2821 from matthewmcgarvey/channel-search
Handle invalid channel id in channel: search
This commit is contained in:
		@@ -55,6 +55,8 @@ module Invidious::Routes::Search
 | 
			
		||||
 | 
			
		||||
      begin
 | 
			
		||||
        search_query, count, videos, operators = process_search_query(query, page, user, region: region)
 | 
			
		||||
      rescue ex : ChannelSearchException
 | 
			
		||||
        return error_template(404, "Unable to find channel with id of '#{HTML.escape(ex.channel)}'. Are you sure that's an actual channel id? It should look like 'UC4QobU6STFB0P71PMvOGN5A'.")
 | 
			
		||||
      rescue ex
 | 
			
		||||
        return error_template(500, ex)
 | 
			
		||||
      end
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,10 @@
 | 
			
		||||
class ChannelSearchException < InfoException
 | 
			
		||||
  getter channel : String
 | 
			
		||||
 | 
			
		||||
  def initialize(@channel)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def channel_search(query, page, channel)
 | 
			
		||||
  response = YT_POOL.client &.get("/channel/#{channel}")
 | 
			
		||||
 | 
			
		||||
@@ -5,8 +12,8 @@ def channel_search(query, page, channel)
 | 
			
		||||
    response = YT_POOL.client &.get("/user/#{channel}")
 | 
			
		||||
    response = YT_POOL.client &.get("/c/#{channel}") if response.status_code == 404
 | 
			
		||||
    initial_data = extract_initial_data(response.body)
 | 
			
		||||
    ucid = initial_data["header"]["c4TabbedHeaderRenderer"]?.try &.["channelId"].as_s?
 | 
			
		||||
    raise InfoException.new("Impossible to extract channel ID from page") if !ucid
 | 
			
		||||
    ucid = initial_data.dig?("header", "c4TabbedHeaderRenderer", "channelId").try(&.as_s?)
 | 
			
		||||
    raise ChannelSearchException.new(channel) if !ucid
 | 
			
		||||
  else
 | 
			
		||||
    ucid = channel
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user