summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsyeopite <syeopite@syeopite.dev>2021-06-25 07:51:51 -0700
committersyeopite <syeopite@syeopite.dev>2021-06-25 07:51:51 -0700
commitaa55e67389ac8c3786c5e0ac4dca3d50f2193e16 (patch)
tree36af58ae4499d62f836bbe47726e1c44a32c6c80 /src
parent5a8825d01682def020acfd2baf95a44b94790f6f (diff)
downloadinvidious-aa55e67389ac8c3786c5e0ac4dca3d50f2193e16.tar.gz
invidious-aa55e67389ac8c3786c5e0ac4dca3d50f2193e16.tar.bz2
invidious-aa55e67389ac8c3786c5e0ac4dca3d50f2193e16.zip
Fix extraction of age restricted videos
Diffstat (limited to 'src')
-rw-r--r--src/invidious/videos.cr12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index 116aafc7..5b2158ec 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -989,9 +989,15 @@ def fetch_video(id, region)
# Try to pull streams from embed URL
if info["reason"]?
- embed_page = YT_POOL.client &.get("/embed/#{id}").body
- sts = embed_page.match(/"sts"\s*:\s*(?<sts>\d+)/).try &.["sts"]? || ""
- embed_info = HTTP::Params.parse(YT_POOL.client &.get("/get_video_info?html5=1&video_id=#{id}&eurl=https://youtube.googleapis.com/v/#{id}&gl=US&hl=en&sts=#{sts}").body)
+ required_parameters = URI::Params.new({
+ "video_id" => [id],
+ "eurl" => ["https://youtube.googleapis.com/v/#{id}"],
+ "html5" => ["1"],
+ "c" => ["TVHTML5"],
+ "cver" => ["6.20180913"],
+ })
+
+ embed_info = HTTP::Params.parse(YT_POOL.client &.get("/get_video_info?#{required_parameters}", headers: HTTP::Headers{"x-youtube-client-version" => "6.20180913"}).body)
if embed_info["player_response"]?
player_response = JSON.parse(embed_info["player_response"])