reuse streamlink sessions
This commit is contained in:
parent
278de926e3
commit
0505fee331
@ -111,6 +111,13 @@ for key in providers:
|
|||||||
for proxy in current:
|
for proxy in current:
|
||||||
proxies[key].append(ProxyElem(proxy))
|
proxies[key].append(ProxyElem(proxy))
|
||||||
|
|
||||||
|
proxy_keys = []
|
||||||
|
for proxy_provider in proxies.values():
|
||||||
|
for proxy in proxy_provider:
|
||||||
|
if isinstance(proxy, ProxyElem) and isinstance(proxy.proxy, str):
|
||||||
|
proxy_keys.append(proxy.proxy)
|
||||||
|
stream_providers.setup(proxy_keys)
|
||||||
|
|
||||||
class UpstreamHandler():
|
class UpstreamHandler():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.provider = None
|
self.provider = None
|
||||||
|
@ -5,7 +5,13 @@ import asyncio
|
|||||||
import html.parser
|
import html.parser
|
||||||
import re
|
import re
|
||||||
|
|
||||||
ytimg_pattern = re.compile(r'(https:\/\/[a-z0-9.]+ytimg\.com\/.+\/)[a-z0-9]+(\.[a-z0-9]+)')
|
streamlink_sessions = {}
|
||||||
|
streamlink_default_session = streamlink.Streamlink()
|
||||||
|
def setup(proxies):
|
||||||
|
for proxy in proxies:
|
||||||
|
streamlink_sessions[proxy] = streamlink.Streamlink()
|
||||||
|
streamlink_sessions[proxy].set_option("http-proxy", proxy)
|
||||||
|
streamlink_sessions[proxy].set_option("https-proxy", proxy)
|
||||||
|
|
||||||
class DummyLogger():
|
class DummyLogger():
|
||||||
def debug(self, msg):
|
def debug(self, msg):
|
||||||
@ -88,11 +94,13 @@ class StreamProvider():
|
|||||||
class StreamlinkRunner(StreamProvider):
|
class StreamlinkRunner(StreamProvider):
|
||||||
def stream(self):
|
def stream(self):
|
||||||
try:
|
try:
|
||||||
session = streamlink.Streamlink()
|
session = None
|
||||||
if self.proxy is not None:
|
if self.proxy is None:
|
||||||
session.set_option("https-proxy", self.proxy)
|
session = streamlink_default_session
|
||||||
session.set_option("http-proxy", self.proxy)
|
else:
|
||||||
streams = session.streams(self.upstream)
|
session = streamlink_sessions.get(self.proxy)
|
||||||
|
media = session.resolve_url(self.upstream)
|
||||||
|
streams = media.streams()
|
||||||
if streams is not None:
|
if streams is not None:
|
||||||
for key in reversed(streams):
|
for key in reversed(streams):
|
||||||
stream = streams.get(key)
|
stream = streams.get(key)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user