bilibili-api icon indicating copy to clipboard operation
bilibili-api copied to clipboard

【漏洞】{抓取弹幕时使用get_danmakus出错}

Open hzcx998 opened this issue 3 years ago • 0 comments

Python 版本: 3.8

模块版本: 9.1.0

运行环境: Windows10

模块路径: bilibili_api.video

报错信息:

Traceback (most recent call last):
  File "getdanmakus.py", line 5, in <module>
    dms = sync(v.get_danmakus(0))
  File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\utils\sync.py", line 24, in sync
    return loop.run_until_complete(coroutine)
  File "D:\DevApp\Anaconda3\lib\asyncio\base_events.py", line 616, in run_until_complete
    return future.result()
  File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\video.py", line 555, in get_danmakus
    view = await self.get_danmaku_view(cid=cid)
  File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\video.py", line 509, in get_danmaku_view
    read_command_danmakus(reader.bytes_string()))
  File "D:\DevApp\Anaconda3\lib\site-packages\bilibili_api\video.py", line 427, in read_command_danmakus
    data['extra'] = json.loads(reader_.string())
  File "D:\DevApp\Anaconda3\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "D:\DevApp\Anaconda3\lib\json\decoder.py", line 340, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 3 (char 2)

报错代码:

from bilibili_api import video, sync

v = video.Video(bvid='BV1AV411x7Gs')

dms = sync(v.get_danmakus(0))

for dm in dms:
    print(dm)

我感觉是获取到的视频在解析过程中传递给json的参数有问题,就打印了一下,果然不对。

get_danmaku_view->read_command_danmakus:
elif t == 9:
    print(reader_.string())                
    data['extra'] = json.loads(reader_.string())
╚Ahh
╚AHHOhttp://i0.hdslb.com/bfs/feed-admin/d831cbae67aee1a8fe1cc463f

hzcx998 avatar Jan 11 '22 17:01 hzcx998