HFrost0 / bilix

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

最新版的源码(修复加密请求接口)中quote(keyword)报错 #140

Closed yushiro closed 1 year ago

yushiro commented 1 year ago
Traceback (most recent call last):
  File "F:\bilibili\bilix\bilix\download\utils.py", line 90, in wrapped
    return await func(client, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "F:\bilibili\bilix\bilix\sites\bilibili\api.py", line 184, in get_up_info
    params = {"mid": mid, "order": order, "ps": ps, "pn": pn, "keyword": quote(keyword)}
                                                                         ^^^^^^^^^^^^^^
  File "C:\Users\i9700k\AppData\Local\Programs\Python\Python311\Lib\urllib\parse.py", line 868, in quote
    return quote_from_bytes(string, safe)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\i9700k\AppData\Local\Programs\Python\Python311\Lib\urllib\parse.py", line 898, in quote_from_bytes
    raise TypeError("quote_from_bytes() expected bytes")
TypeError: quote_from_bytes() expected bytes

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\i9700k\.virtualenvs\bilibili-BpYKjIOd\Scripts\bilix.exe\__main__.py", line 7, in <module>
  File "C:\Users\i9700k\.virtualenvs\bilibili-BpYKjIOd\Lib\site-packages\click\core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\i9700k\.virtualenvs\bilibili-BpYKjIOd\Lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\i9700k\.virtualenvs\bilibili-BpYKjIOd\Lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\i9700k\.virtualenvs\bilibili-BpYKjIOd\Lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "F:\bilibili\bilix\bilix\cli\main.py", line 374, in main
    loop.run_until_complete(cor)
  File "C:\Users\i9700k\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 650, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "F:\bilibili\bilix\bilix\sites\bilibili\downloader.py", line 251, in get_up
    up_name, total_size, bv_ids = await api.get_up_info(self.client, url_or_mid, 1, ps, order, keyword)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "F:\bilibili\bilix\bilix\download\utils.py", line 94, in wrapped
    raise APIParseError(e, func) from e
bilix.exception.APIParseError: APIParseError Caused by TypeError in <bilix.sites.bilibili.api:get_up_info>

好像还是因为keyword是None引起的, 我本地的代码修改为params = {"mid": mid, "order": order, "ps": ps, "pn": pn, "keyword": quote("" if keyword is None else keyword)}, 就可以正常运行了。

HFrost0 commented 1 year ago

keyword的默认值是空字符串'',可能你之前的代码使用None作为默认值了

bilix的代码里面应该都是使用的''

HFrost0 commented 1 year ago

哦,我知道了,0.x版本从命令行传递过来的keyword确实是None

HFrost0 commented 1 year ago

之后的1.x版本会将函数本身的默认值作为命令行默认值,之后就没有这个问题,你觉得值得再改一下这里吗

yushiro commented 1 year ago

嗯, 不修改对我到没啥影响, 我自己本地运行的代码已经修复了, 我是担心有其他人也遇到同样的问题。 或者你早日发布1.x版本

HFrost0 commented 1 year ago

我想还是有一些用户需要使用0.x版本,1.x版本还需要打磨。最近会继续更新0.x版本