diff options
| author | Omar Roth <omarroth@hotmail.com> | 2019-01-24 13:52:33 -0600 |
|---|---|---|
| committer | Omar Roth <omarroth@hotmail.com> | 2019-01-24 13:53:14 -0600 |
| commit | 952b208a016548ad917737848cf3031e3f8af2d6 (patch) | |
| tree | 89ff87190fa5c60f7349945c7f3384be2c42ee64 | |
| parent | 40fb29ea2bc93d9bfc53ac91c03910010ade33df (diff) | |
| download | invidious-952b208a016548ad917737848cf3031e3f8af2d6.tar.gz invidious-952b208a016548ad917737848cf3031e3f8af2d6.tar.bz2 invidious-952b208a016548ad917737848cf3031e3f8af2d6.zip | |
Add retry for /videoplaybacl
| -rw-r--r-- | src/invidious.cr | 24 |
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 |
