Closed Peins closed 1 year ago
debug模式
DEBUG Debug on, more information will be shown
┌─────────────────────────────── Traceback (most recent call last) ────────────────────────────────┐
│ E:\anaconda3\lib\runpy.py:197 in _run_module_as_main │
│ │
│ 194 │ main_globals = sys.modules["__main__"].__dict__ │
│ 195 │ if alter_argv: │
│ 196 │ │ sys.argv[0] = mod_spec.origin │
│ > 197 │ return _run_code(code, main_globals, None, │
│ 198 │ │ │ │ │ "__main__", mod_spec) │
│ 199 │
│ 200 def run_module(mod_name, init_globals=None, │
│ │
│ E:\anaconda3\lib\runpy.py:87 in _run_code │
│ │
│ 84 │ │ │ │ │ __loader__ = loader, │
│ 85 │ │ │ │ │ __package__ = pkg_name, │
│ 86 │ │ │ │ │ __spec__ = mod_spec) │
│ > 87 │ exec(code, run_globals) │
│ 88 │ return run_globals │
│ 89 │
│ 90 def _run_module_code(code, init_globals=None, │
│ │
│ E:\anaconda3\Scripts\bilix.exe\__main__.py:7 in <module> │
│ │
│ [Errno 2] No such file or directory: 'E:\\anaconda3\\Scripts\\bilix.exe\\__main__.py' │
│ │
│ E:\anaconda3\lib\site-packages\click\core.py:1128 in __call__ │
│ │
│ 1125 │ │
│ 1126 │ def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any: │
│ 1127 │ │ """Alias for :meth:`main`.""" │
│ > 1128 │ │ return self.main(*args, **kwargs) │
│ 1129 │
│ 1130 │
│ 1131 class Command(BaseCommand): │
│ │
│ E:\anaconda3\lib\site-packages\click\core.py:1053 in main │
│ │
│ 1050 │ │ try: │
│ 1051 │ │ │ try: │
│ 1052 │ │ │ │ with self.make_context(prog_name, args, **extra) as ctx: │
│ > 1053 │ │ │ │ │ rv = self.invoke(ctx) │
│ 1054 │ │ │ │ │ if not standalone_mode: │
│ 1055 │ │ │ │ │ │ return rv │
│ 1056 │ │ │ │ │ # it's not safe to `ctx.exit(rv)` here! │
│ │
│ E:\anaconda3\lib\site-packages\click\core.py:1395 in invoke │
│ │
│ 1392 │ │ │ echo(style(message, fg="red"), err=True) │
│ 1393 │ │ │
│ 1394 │ │ if self.callback is not None: │
│ > 1395 │ │ │ return ctx.invoke(self.callback, **ctx.params) │
│ 1396 │ │
│ 1397 │ def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: │
│ 1398 │ │ """Return a list of completions for the incomplete value. Looks │
│ │
│ E:\anaconda3\lib\site-packages\click\core.py:754 in invoke │
│ │
│ 751 │ │ │
│ 752 │ │ with augment_usage_errors(__self): │
│ 753 │ │ │ with ctx: │
│ > 754 │ │ │ │ return __callback(*args, **kwargs) │
│ 755 │ │
│ 756 │ def forward( │
│ 757 │ │ __self, __cmd: "Command", *args: t.Any, **kwargs: t.Any # noqa: B902 │
│ │
│ E:\anaconda3\lib\site-packages\bilix\__main__.py:301 in main │
│ │
│ 298 │ │ return │
│ 299 │ loop = asyncio.get_event_loop() │
│ 300 │ try: │
│ > 301 │ │ loop.run_until_complete(cor) │
│ 302 │ except KeyboardInterrupt: │
│ 303 │ │ logger.info('[cyan]提示:用户中断,重复执行命令可继续下载') │
│ 304 │ finally: # similar to asyncio.run │
│ │
│ E:\anaconda3\lib\asyncio\base_events.py:647 in run_until_complete │
│ │
│ 644 │ │ if not future.done(): │
│ 645 │ │ │ raise RuntimeError('Event loop stopped before Future completed.') │
│ 646 │ │ │
│ > 647 │ │ return future.result() │
│ 648 │ │
│ 649 │ def stop(self): │
│ 650 │ │ """Stop running the event loop. │
│ │
│ E:\anaconda3\lib\site-packages\bilix\download\downloader_bilibili.py:179 in get_favour │
│ │
│ 176 │ │ :param hierarchy: │
│ 177 │ │ :return: │
│ 178 │ │ """ │
│ > 179 │ │ fav_name, up_name, total_size, bvids = await api.get_favour_page_info(self.clien │
│ 180 │ │ if hierarchy: │
│ 181 │ │ │ name = legal_title(f"【收藏夹】{up_name}-{fav_name}") │
│ 182 │ │ │ hierarchy = self._make_hierarchy_dir(hierarchy, name) │
│ │
│ E:\anaconda3\lib\site-packages\bilix\api\bilibili.py:95 in get_favour_page_info │
│ │
│ 92 │ │ fid = url_or_fid │
│ 93 │ params = {'media_id': fid, 'pn': pn, 'ps': ps, 'keyword': keyword, 'order': 'mtime'} │
│ 94 │ res = await req_retry(client, 'https://api.bilibili.com/x/v3/fav/resource/list', par │
│ > 95 │ data = json.loads(res.text)['data'] │
│ 96 │ fav_name, up_name = data['info']['title'], data['info']['upper']['name'] │
│ 97 │ bvids = [i['bvid'] for i in data['medias'] if i['title'] != '已失效视频'] │
│ 98 │ total_size = data['info']['media_count'] │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
KeyError: 'data'
我运行了一下这个命令,在我的机器上是正常的,能否确认一下你当前网络能正常访问这个url?
│ E:\anaconda3\lib\site-packages\bilix\api\bilibili.py:95 in get_favour_page_info │
│ │
│ 92 │ │ fid = url_or_fid │
│ 93 │ params = {'media_id': fid, 'pn': pn, 'ps': ps, 'keyword': keyword, 'order': 'mtime'} │
│ 94 │ res = await req_retry(client, 'https://api.bilibili.com/x/v3/fav/resource/list', par │
│ > 95 │ data = json.loads(res.text)['data'] │
│ 96 │ fav_name, up_name = data['info']['title'], data['info']['upper']['name'] │
│ 97 │ bvids = [i['bvid'] for i in data['medias'] if i['title'] != '已失效视频'] │
│ 98 │ total_size = data['info']['media_count'] │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
KeyError: 'data'
最好是能确定95行res.text的内容
https://space.bilibili.com/37856001/favlist?fid=1740742701可以访问啊,好像是这个接口问题,访问不了: https://api.bilibili.com/x/v3/fav/resource/list 有时候会报:
s>bilix get_favour 'https://space.bilibili.com/95693059/favlist?fid=857205259' --cookie '******************'
WARNING GET ConnectTimeout url: https://api.bilibili.com/x/v3/fav/resource/list
WARNING GET ConnectTimeout url: https://api.bilibili.com/x/v3/fav/resource/list
Traceback (most recent call last):
File "E:\anaconda3\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "E:\anaconda3\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "E:\anaconda3\Scripts\bilix.exe\__main__.py", line 7, in <module>
File "E:\anaconda3\lib\site-packages\click\core.py", line 1128, in __call__
return self.main(*args, **kwargs)
File "E:\anaconda3\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "E:\anaconda3\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "E:\anaconda3\lib\site-packages\click\core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "E:\anaconda3\lib\site-packages\bilix\__main__.py", line 301, in main
loop.run_until_complete(cor)
File "E:\anaconda3\lib\asyncio\base_events.py", line 647, in run_until_complete
return future.result()
File "E:\anaconda3\lib\site-packages\bilix\download\downloader_bilibili.py", line 179, in get_favour
fav_name, up_name, total_size, bvids = await api.get_favour_page_info(self.client, url_or_fid, keyword=keyword)
File "E:\anaconda3\lib\site-packages\bilix\api\bilibili.py", line 95, in get_favour_page_info
data = json.loads(res.text)['data']
KeyError: 'data'
在你的网络环境下这个接口正常200返回(看样子有时候会超时),但没有'data'字段,里面我猜应该有接口返回的一些错误信息,因为复现不了暂不清楚是什么原因,看样子加了cookie也不管用,可以先确认是否是代理软件的影响,或者换个网络条件试一试(换热点试下)
在你的网络环境下这个接口正常200返回(看样子有时候会超时),但没有'data'字段,里面我猜应该有接口返回的一些错误信息,因为复现不了暂不清楚是什么原因,看样子加了cookie也不管用,可以先确认是否是代理软件的影响,或者换个网络条件试一试(换热点试下)
解决了,是我cmd有问题,不知道为什么,用powershell就没问题,重启电脑也没用,还把代码拉下来打印了上面的res发现没问题
bilix 0.10.4,下载bilibili收藏夹报错:KeyError:'data' 下载单个视频没问题