diff --git a/src/invidious/trending.cr b/src/invidious/trending.cr index 910a99d8..34e8cabb 100644 --- a/src/invidious/trending.cr +++ b/src/invidious/trending.cr @@ -18,10 +18,10 @@ def fetch_trending(trending_type, region, locale) 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" + bp = initial_data["contents"]["twoColumnBrowseResultsRenderer"]["tabs"][trending_type]["tabRenderer"]["endpoint"]["browseEndpoint"]["params"].to_s - trending = YT_POOL.client &.get(url).body - plid = extract_plid(url) + trending = YT_POOL.client &.get("#{url}&gl=#{region}&hl=en").body + plid = extract_plid(bp) else trending = YT_POOL.client &.get("/feed/trending?gl=#{region}&hl=en").body end @@ -32,12 +32,10 @@ def fetch_trending(trending_type, region, locale) return {trending, plid} end -def extract_plid(url) - return url.try { |i| URI.parse(i).query } - .try { |i| HTTP::Params.parse(i)["bp"] } - .try { |i| URI.decode_www_form(i) } +def extract_plid(bp) + return bp.try { |i| URI.decode_www_form(i) } .try { |i| Base64.decode(i) } .try { |i| IO::Memory.new(i) } .try { |i| Protodec::Any.parse(i) } - .try &.["44:0:embedded"]?.try &.["2:1:string"]?.try &.as_s + .try &.["44:0:embedded"]?.try &.["3:0:string"]?.try &.as_s end