reuse streamlink sessions
This commit is contained in:
		@@ -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)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user