summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOmar Roth <omarroth@hotmail.com>2019-01-24 13:52:33 -0600
committerOmar Roth <omarroth@hotmail.com>2019-01-24 13:53:14 -0600
commit952b208a016548ad917737848cf3031e3f8af2d6 (patch)
tree89ff87190fa5c60f7349945c7f3384be2c42ee64
parent40fb29ea2bc93d9bfc53ac91c03910010ade33df (diff)
downloadinvidious-952b208a016548ad917737848cf3031e3f8af2d6.tar.gz
invidious-952b208a016548ad917737848cf3031e3f8af2d6.tar.bz2
invidious-952b208a016548ad917737848cf3031e3f8af2d6.zip
Add retry for /videoplaybacl
-rw-r--r--src/invidious.cr24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 1a96b50a..ad9510c1 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -3644,9 +3644,23 @@ get "/videoplayback" do |env|
host = "https://r#{fvip}---#{mn}.googlevideo.com"
url = "/videoplayback?#{query_params.to_s}"
+ headers = env.request.headers
+ headers.delete("Host")
+ headers.delete("Cookie")
+ headers.delete("User-Agent")
+ headers.delete("Referer")
+
region = query_params["region"]?
- client = make_client(URI.parse(host), proxies, region)
- response = client.head(url)
+
+ response = HTTP::Client::Response.new(403)
+ loop do
+ begin
+ client = make_client(URI.parse(host), proxies, region)
+ response = client.head(url, headers)
+ break
+ rescue ex
+ end
+ end
if response.headers["Location"]?
url = URI.parse(response.headers["Location"])
@@ -3664,12 +3678,6 @@ get "/videoplayback" do |env|
halt env, status_code: 403
end
- headers = env.request.headers
- headers.delete("Host")
- headers.delete("Cookie")
- headers.delete("User-Agent")
- headers.delete("Referer")
-
client = make_client(URI.parse(host), proxies, region)
client.get(url, headers) do |response|
env.response.status_code = response.status_code