From ba046660fcdc0b965dcda77e5994ba8854d7b100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=B3=E5=92=B3?= <76099203+wwkk2580@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:27:18 +0800 Subject: [PATCH] fix: huya prioritizes using TX CDN (#993) --- streamget/spider.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/streamget/spider.py b/streamget/spider.py index d8b3376..332bef2 100644 --- a/streamget/spider.py +++ b/streamget/spider.py @@ -397,8 +397,37 @@ async def get_huya_app_stream_url(url: str, proxy_addr: OptionalStr = None, cook 'flv_url': flv_url, } ) - flv_url = 'https://' + play_url_list[0]['flv_url'].split('://')[1] - record_url = flv_url + #print(json.dumps(play_url_list, indent=4, ensure_ascii=False)) + # flv_url = 'https://' + play_url_list[0]['flv_url'].split('://')[1] + # record_url = flv_url + + # 设定优先级,优先选择 TX,2025/03/14时AL不可用 + priority_order = ["TX", "HW", "HS", "AL"] + + # 查找优先的 flv_url + selected_flv_url = None + selected_cdn_type = None + + for cdn in priority_order: + for item in play_url_list: + if item["cdn_type"] == cdn: + selected_flv_url = item["flv_url"] + selected_cdn_type = cdn + break + if selected_flv_url: + break + + # 处理 flv_url,确保使用 https + if selected_flv_url: + flv_url = 'https://' + selected_flv_url.split('://')[1] + + # 如果选择的是 TX,执行额外的字符串替换 + if selected_cdn_type == "TX": + flv_url = flv_url.replace("&ctype=tars_mp", "&ctype=huya_webh5").replace("&fs=bhct", "&fs=bgct") + + record_url = flv_url + else: + record_url = None return { 'anchor_name': anchor_name,