future stuff
This commit is contained in:
parent
bca13c0d4a
commit
b0b0055d75
38
stream.py
38
stream.py
@ -6,6 +6,7 @@ import re
|
||||
import os
|
||||
import base64
|
||||
import logging
|
||||
import asyncio
|
||||
import streamlink
|
||||
import tornado.web
|
||||
import tornado.routing
|
||||
@ -56,8 +57,6 @@ class ProxyElem():
|
||||
logger.info(e)
|
||||
return ctype
|
||||
async def proxy_url(self, current, path):
|
||||
if proxy_server is None:
|
||||
return data["upstream"]
|
||||
jdata = None
|
||||
data = {}
|
||||
data_list = [data]
|
||||
@ -66,11 +65,12 @@ class ProxyElem():
|
||||
else:
|
||||
data["upstream"] = urllib.parse.urljoin(current, path)
|
||||
data["proxied"] = True
|
||||
ret = None
|
||||
if self.proxy is None:
|
||||
data["proxied"] = False
|
||||
else:
|
||||
data["proxy"] = self.proxy
|
||||
if proxy_server is None:
|
||||
return data["upstream"]
|
||||
try:
|
||||
async with self.local() as session:
|
||||
resp = await session.post(proxy_server, json=data_list)
|
||||
@ -148,22 +148,28 @@ class UpstreamHandler():
|
||||
current = proxy_list.pop()
|
||||
proxy_list = [current] + proxy_list
|
||||
session = current.session()
|
||||
delays.append(AsyncSession(session, session.head(src), current_list, current))
|
||||
task = asyncio.create_task(session.head(src))
|
||||
delays.append(AsyncSession(session, task, current_list, current))
|
||||
done = False
|
||||
for delay in delays:
|
||||
try:
|
||||
resp = await delay.future
|
||||
except Exception as e:
|
||||
logger.info(e)
|
||||
if done:
|
||||
delay.future.cancel()
|
||||
else:
|
||||
new_url = str(resp.url)
|
||||
if new_url.lower().startswith("https://consent.youtube.com"):
|
||||
self.upstream = src
|
||||
self.upstream_safe = urllib.parse.quote(src)
|
||||
try:
|
||||
resp = await delay.future
|
||||
except Exception as e:
|
||||
logger.info(e)
|
||||
else:
|
||||
self.upstream = new_url
|
||||
self.upstream_safe = urllib.parse.quote(new_url)
|
||||
self.proxy = delay.current_proxy
|
||||
proxies[self.provider] = delay.current_proxies
|
||||
done = True
|
||||
new_url = str(resp.url)
|
||||
if new_url.lower().startswith("https://consent.youtube.com"):
|
||||
self.upstream = src
|
||||
self.upstream_safe = urllib.parse.quote(src)
|
||||
else:
|
||||
self.upstream = new_url
|
||||
self.upstream_safe = urllib.parse.quote(new_url)
|
||||
self.proxy = delay.current_proxy
|
||||
proxies[self.provider] = delay.current_proxies
|
||||
for delay in delays:
|
||||
try:
|
||||
await delay.session.close()
|
||||
|
Loading…
Reference in New Issue
Block a user