mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-10-30 20:22:00 +00:00 
			
		
		
		
	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
	 Samantaz Fox
					Samantaz Fox