HFrost0 / bilix

⚡️Lightning-fast async download tool for bilibili and more
Apache License 2.0
1.6k stars 166 forks source link

视频 / 分 P 名称含半角冒号导致无法下载 #117

Closed imgradeone closed 1 year ago

imgradeone commented 1 year ago

出于部分原因,log 中隐藏了具体视频名称与 UP 主,抱歉带来不便

视频 / 分 P 名称含半角冒号的内容会直接提示参数错误,我不知道如何 workaround。
我的操作是使用 get_up;使用 get_video 没有这个问题

bilix 0.16.0

Traceback (most recent call last):
  File "C:\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Python310\Scripts\bilix.exe\__main__.py", line 7, in <module>
  File "C:\Python310\lib\site-packages\click\core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "C:\Python310\lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "C:\Python310\lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Python310\lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "C:\Python310\lib\site-packages\bilix\__main__.py", line 370, in main
    loop.run_until_complete(cor)
  File "C:\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete
    return future.result()
  File "C:\Python310\lib\site-packages\bilix\download\downloader_bilibili.py", line 230, in get_up_videos
    await asyncio.gather(*cors)
  File "C:\Python310\lib\site-packages\bilix\download\downloader_bilibili.py", line 241, in _get_up_videos_by_page
    await asyncio.gather(
  File "C:\Python310\lib\site-packages\bilix\download\downloader_bilibili.py", line 276, in get_series
    await asyncio.gather(*cors)
  File "C:\Python310\lib\site-packages\bilix\download\downloader_bilibili.py", line 375, in get_video
    await asyncio.gather(*cors)
  File "C:\Python310\lib\site-packages\bilix\download\base_downloader_part.py", line 180, in get_file
    await merge_files(file_list, new_path=file_path)
  File "C:\Python310\lib\site-packages\bilix\utils.py", line 58, in merge_files
    os.rename(first_file, new_path)
OSError: [WinError 87] 参数错误。: 'videos/【up】********/【****】************************/P1-(22.01.20)4:3-a-0-2234326' -> 'videos/【up】********/【****】************************/P1-(22.01.20)4:3-a'
HFrost0 commented 1 year ago

正常来说标题中的非法字符已经会被规则

re.sub(r"[/\\:*?\"<>|\n]", '', s)

去掉(例如),不太清楚为什么你的这个里面会有

imgradeone commented 1 year ago

我的操作是使用 get_up;使用 get_video 没有这个问题

HFrost0 commented 1 year ago

可能up主的名称中含有非法字符,这个之前没注意处理

imgradeone commented 1 year ago

其实我放出的屏蔽部分信息的 log 处是分 P 名称含半角冒号

HFrost0 commented 1 year ago

如果不方便公开,你可以通过邮件的形式把链接发给我,这样子我真的不太好定位

imgradeone commented 1 year ago

具体 log 已经 email xwx

HFrost0 commented 1 year ago

没有收到哦,麻烦检查一下是不是成功发到hhlfrost@gmail.com了

imgradeone commented 1 year ago

刚刚发现没发出去😶可能我 Outlook 抽风了,待会再试

imgradeone commented 1 year ago

现在发过去了qwq

HFrost0 commented 1 year ago

🥹定位出来了,因为逻辑上疏忽了一处替换非法字符的处理,当主标题过长,分标题中含有非法字符时使用s及其他调用get_series的方法都会有问题