fix: val name err (#962)

* allowed u+00b0 u+30FB

* fix error

* change val name

* fix wrong ffmpeg output format
This commit is contained in:
XuanRan_Nyan authored and GitHub committed 2024-06-20 02:12:36 +00:00
1 parent 1ad6522cb5
commit fb21fe8e17
2 files changed
+17 -11

No files matched your search

+8 -2
View File
@@ -203,7 +203,13 @@ class DownloadBase(ABC):
output_args += self.opt_args
args = ['ffmpeg', '-y', *input_args, *output_args, '-c', 'copy', '-f', self.suffix,
if self.suffix.lower() == 'ts':
output_args += ['-f', 'mpegts']
elif self.suffix.lower() == 'mkv':
output_args += ['-f', 'matroska']
else:
output_args += ['-f', self.suffix]
args = ['ffmpeg', '-y', *input_args, *output_args, '-c', 'copy',
f'{fmt_file_name}.{self.suffix}.part']
with subprocess.Popen(args, stdin=subprocess.DEVNULL if not streamlink_proc else streamlink_proc.stdout,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as proc:
@@ -492,7 +498,7 @@ def get_valid_filename(name):
'{self.fname}%Y-%m-%dT%H_%M_%S'
"""
# s = str(name).strip().replace(" ", "_") #因为有些人会在主播名中间加入空格,为了避免和录播完毕自动改名冲突,所以注释掉
s = re.sub(r"(?u)[^-\w.%{}\[\]【】「」()\s]", "", str(name))
s = re.sub(r"(?u)[^-\w.%{}\[\]【】「」()・°\s]", "", str(name))
if s in {"", ".", ".."}:
raise RuntimeError("Could not derive file name from '%s'" % name)
return s
+9 -9
View File
@@ -73,17 +73,17 @@ class Huya(DownloadBase):
logger.error(f"{self.plugin_msg}: 没有可用的链接")
return False
cdnNameList = list(stream_urls.keys())
if perf_cdn not in cdnNameList:
logger.warning(f"{self.plugin_msg}: {perf_cdn} CDN不存在,自动切换到 {cdnNameList[0]}")
perf_cdn = cdnNameList[0]
cdn_name_list = list(stream_urls.keys())
if perf_cdn not in cdn_name_list:
logger.warning(f"{self.plugin_msg}: {perf_cdn} CDN不存在,自动切换到 {cdn_name_list[0]}")
perf_cdn = cdn_name_list[0]
# 虎牙直播流只允许连接一次
if cdn_fallback:
_url = await self.acheck_url_healthy(stream_urls[perf_cdn])
if _url is None:
logger.info(f"{self.plugin_msg}: 提供如下CDN {cdnNameList}")
for cdn in cdnNameList:
logger.info(f"{self.plugin_msg}: 提供如下CDN {cdn_name_list}")
for cdn in cdn_name_list:
if cdn == perf_cdn:
continue
logger.info(f"{self.plugin_msg}: cdn_fallback 尝试 {cdn}")
@@ -145,10 +145,10 @@ class Huya(DownloadBase):
logger.error(f"{self.plugin_msg}: build_stream_url {stream_name} {anti_code}")
return {}
# HY 和 HYZJ 均为 P2P
sStreams = {item['sCdnType']: \
streams = {item['sCdnType']: \
f"{item[f's{protocol}Url']}/{stream_name}.{suffix}?{anti_code}" \
for item in stream_info if 'HY' not in item['sCdnType']}
return sStreams
return streams
def build_query(sStreamName, sAntiCode) -> str:
@@ -191,4 +191,4 @@ def build_query(sStreamName, sAntiCode) -> str:
"sdk_sid": str(int(time.time() * 1000)),
"codec": "264",
}
return '&'.join([f"{k}={v}" for k, v in anticode.items()])
return '&'.join([f"{k}={v}" for k, v in anti_code.items()])