fix:ipv6 result

This commit is contained in:
guorong.zheng 2024-12-02 16:10:02 +08:00
parent e5c236334b
commit a764270848

View file

@ -1,12 +1,14 @@
from aiohttp import ClientSession, TCPConnector
from time import time
import asyncio import asyncio
import re import re
from utils.config import config
import utils.constants as constants
from utils.tools import is_ipv6, remove_cache_info, get_resolution_value, get_logger
import subprocess import subprocess
from time import time
import yt_dlp import yt_dlp
from aiohttp import ClientSession, TCPConnector
import utils.constants as constants
from utils.config import config
from utils.tools import is_ipv6, remove_cache_info, get_resolution_value, get_logger
logger = get_logger(constants.log_path) logger = get_logger(constants.log_path)
@ -42,9 +44,9 @@ async def get_speed_yt_dlp(url, timeout=config.sort_timeout):
if "width" in info and "height" in info if "width" in info and "height" in info
else None else None
) )
return (fps, resolution) return fps, resolution
except: except:
return (float("inf"), None) return float("inf"), None
async def get_speed_requests(url, timeout=config.sort_timeout, proxy=None): async def get_speed_requests(url, timeout=config.sort_timeout, proxy=None):
@ -52,7 +54,7 @@ async def get_speed_requests(url, timeout=config.sort_timeout, proxy=None):
Get the speed of the url by requests Get the speed of the url by requests
""" """
async with ClientSession( async with ClientSession(
connector=TCPConnector(verify_ssl=False), trust_env=True connector=TCPConnector(verify_ssl=False), trust_env=True
) as session: ) as session:
start = time() start = time()
end = None end = None
@ -144,7 +146,7 @@ async def check_stream_speed(url_info):
if frame is None or frame == float("inf"): if frame is None or frame == float("inf"):
return float("inf") return float("inf")
url_info[2] = resolution url_info[2] = resolution
return (url_info, frame) return url_info, frame
except Exception as e: except Exception as e:
print(e) print(e)
return float("inf") return float("inf")
@ -155,7 +157,7 @@ speed_cache = {}
async def get_speed(url, ipv6_proxy=None, callback=None): async def get_speed(url, ipv6_proxy=None, callback=None):
""" """
Get the speed of the url Get the speed (response time and resolution) of the url
""" """
try: try:
cache_key = None cache_key = None
@ -168,14 +170,14 @@ async def get_speed(url, ipv6_proxy=None, callback=None):
if cache_key in speed_cache: if cache_key in speed_cache:
return speed_cache[cache_key][0] return speed_cache[cache_key][0]
if ipv6_proxy and url_is_ipv6: if ipv6_proxy and url_is_ipv6:
speed = 0 speed = (0, None)
else: else:
speed = await get_speed_yt_dlp(url) speed = await get_speed_yt_dlp(url)
if cache_key and cache_key not in speed_cache: if cache_key and cache_key not in speed_cache:
speed_cache[cache_key] = speed speed_cache[cache_key] = speed
return speed return speed
except: except:
return float("inf") return float("inf"), None
finally: finally:
if callback: if callback:
callback() callback()
@ -215,8 +217,8 @@ def sort_urls_by_speed_and_resolution(name, data, logger=None):
else: else:
resolution_value = get_resolution_value(resolution) if resolution else 0 resolution_value = get_resolution_value(resolution) if resolution else 0
return ( return (
config.response_time_weight * response_time config.response_time_weight * response_time
- config.resolution_weight * resolution_value - config.resolution_weight * resolution_value
) )
filter_data.sort(key=combined_key) filter_data.sort(key=combined_key)