mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-10-31 20:51:56 +00:00 
			
		
		
		
	Merge pull request #2195 from B0pol/trending
Use youtubei API for trending
This commit is contained in:
		| @@ -25,12 +25,14 @@ end | ||||
|  | ||||
| #################################################################### | ||||
| # request_youtube_api_browse(continuation) | ||||
| # request_youtube_api_browse(browse_id, params) | ||||
| # request_youtube_api_browse(browse_id, params, region) | ||||
| # | ||||
| # Requests the youtubei/v1/browse endpoint with the required headers | ||||
| # and POST data in order to get a JSON reply in english US that can | ||||
| # and POST data in order to get a JSON reply in english that can | ||||
| # be easily parsed. | ||||
| # | ||||
| # The region can be provided, default is US. | ||||
| # | ||||
| # The requested data can either be: | ||||
| # | ||||
| #  - A continuation token (ctoken). Depending on this token's | ||||
| @@ -49,11 +51,11 @@ def request_youtube_api_browse(continuation : String) | ||||
|   return _youtube_api_post_json("/youtubei/v1/browse", data) | ||||
| end | ||||
|  | ||||
| def request_youtube_api_browse(browse_id : String, params : String) | ||||
| def request_youtube_api_browse(browse_id : String, params : String, region : String = "US") | ||||
|   # JSON Request data, required by the API | ||||
|   data = { | ||||
|     "browseId" => browse_id, | ||||
|     "context"  => make_youtube_api_context("US"), | ||||
|     "context"  => make_youtube_api_context(region), | ||||
|   } | ||||
|  | ||||
|   # Append the additionnal parameters if those were provided | ||||
|   | ||||
| @@ -2,31 +2,19 @@ def fetch_trending(trending_type, region, locale) | ||||
|   region ||= "US" | ||||
|   region = region.upcase | ||||
|  | ||||
|   trending = "" | ||||
|   plid = nil | ||||
|  | ||||
|   if trending_type && trending_type != "Default" | ||||
|     if trending_type == "Music" | ||||
|       trending_type = 1 | ||||
|     elsif trending_type == "Gaming" | ||||
|       trending_type = 2 | ||||
|     elsif trending_type == "Movies" | ||||
|       trending_type = 3 | ||||
|     end | ||||
|  | ||||
|     response = YT_POOL.client &.get("/feed/trending?gl=#{region}&hl=en").body | ||||
|  | ||||
|     initial_data = extract_initial_data(response) | ||||
|     url = initial_data["contents"]["twoColumnBrowseResultsRenderer"]["tabs"][trending_type]["tabRenderer"]["endpoint"]["commandMetadata"]["webCommandMetadata"]["url"] | ||||
|     url = "#{url}&gl=#{region}&hl=en" | ||||
|  | ||||
|     trending = YT_POOL.client &.get(url).body | ||||
|     plid = extract_plid(url) | ||||
|   else | ||||
|     trending = YT_POOL.client &.get("/feed/trending?gl=#{region}&hl=en").body | ||||
|   if trending_type == "Music" | ||||
|     params = "4gINGgt5dG1hX2NoYXJ0cw%3D%3D" | ||||
|   elsif trending_type == "Gaming" | ||||
|     params = "4gIcGhpnYW1pbmdfY29ycHVzX21vc3RfcG9wdWxhcg%3D%3D" | ||||
|   elsif trending_type == "Movies" | ||||
|     params = "4gIKGgh0cmFpbGVycw%3D%3D" | ||||
|   else # Default | ||||
|     params = "" | ||||
|   end | ||||
|  | ||||
|   initial_data = extract_initial_data(trending) | ||||
|   initial_data = request_youtube_api_browse("FEtrending", params: params, region: region) | ||||
|   trending = extract_videos(initial_data) | ||||
|  | ||||
|   return {trending, plid} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Samantaz Fox
					Samantaz Fox