future stuff
This commit is contained in:
		
							
								
								
									
										14
									
								
								stream.py
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								stream.py
									
									
									
									
									
								
							@@ -6,6 +6,7 @@ import re
 | 
				
			|||||||
import os
 | 
					import os
 | 
				
			||||||
import base64
 | 
					import base64
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
 | 
					import asyncio
 | 
				
			||||||
import streamlink
 | 
					import streamlink
 | 
				
			||||||
import tornado.web
 | 
					import tornado.web
 | 
				
			||||||
import tornado.routing
 | 
					import tornado.routing
 | 
				
			||||||
@@ -56,8 +57,6 @@ class ProxyElem():
 | 
				
			|||||||
            logger.info(e)
 | 
					            logger.info(e)
 | 
				
			||||||
        return ctype
 | 
					        return ctype
 | 
				
			||||||
    async def proxy_url(self, current, path):
 | 
					    async def proxy_url(self, current, path):
 | 
				
			||||||
        if proxy_server is None:
 | 
					 | 
				
			||||||
            return data["upstream"]
 | 
					 | 
				
			||||||
        jdata = None
 | 
					        jdata = None
 | 
				
			||||||
        data = {}
 | 
					        data = {}
 | 
				
			||||||
        data_list = [data]
 | 
					        data_list = [data]
 | 
				
			||||||
@@ -66,11 +65,12 @@ class ProxyElem():
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            data["upstream"] = urllib.parse.urljoin(current, path)
 | 
					            data["upstream"] = urllib.parse.urljoin(current, path)
 | 
				
			||||||
        data["proxied"] = True
 | 
					        data["proxied"] = True
 | 
				
			||||||
        ret = None
 | 
					 | 
				
			||||||
        if self.proxy is None:
 | 
					        if self.proxy is None:
 | 
				
			||||||
            data["proxied"] = False
 | 
					            data["proxied"] = False
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            data["proxy"] = self.proxy
 | 
					            data["proxy"] = self.proxy
 | 
				
			||||||
 | 
					        if proxy_server is None:
 | 
				
			||||||
 | 
					            return data["upstream"]
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            async with self.local() as session:
 | 
					            async with self.local() as session:
 | 
				
			||||||
                resp = await session.post(proxy_server, json=data_list)
 | 
					                resp = await session.post(proxy_server, json=data_list)
 | 
				
			||||||
@@ -148,13 +148,19 @@ class UpstreamHandler():
 | 
				
			|||||||
                    current = proxy_list.pop()
 | 
					                    current = proxy_list.pop()
 | 
				
			||||||
                    proxy_list = [current] + proxy_list
 | 
					                    proxy_list = [current] + proxy_list
 | 
				
			||||||
                    session = current.session()
 | 
					                    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:
 | 
					                for delay in delays:
 | 
				
			||||||
 | 
					                    if done:
 | 
				
			||||||
 | 
					                        delay.future.cancel()
 | 
				
			||||||
 | 
					                    else:
 | 
				
			||||||
                        try:
 | 
					                        try:
 | 
				
			||||||
                            resp = await delay.future
 | 
					                            resp = await delay.future
 | 
				
			||||||
                        except Exception as e:
 | 
					                        except Exception as e:
 | 
				
			||||||
                            logger.info(e)
 | 
					                            logger.info(e)
 | 
				
			||||||
                        else:
 | 
					                        else:
 | 
				
			||||||
 | 
					                            done = True
 | 
				
			||||||
                            new_url = str(resp.url)
 | 
					                            new_url = str(resp.url)
 | 
				
			||||||
                            if new_url.lower().startswith("https://consent.youtube.com"):
 | 
					                            if new_url.lower().startswith("https://consent.youtube.com"):
 | 
				
			||||||
                                self.upstream = src
 | 
					                                self.upstream = src
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user