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

【漏洞】弹幕解码错误

Open GYLTP opened this issue 3 years ago • 2 comments

video.py 下弹幕解码出现错误,屏蔽424,425行可以临时解决,应该是b站此处数据接口形式变化了?

代码:

from bilibili_api import video, sync

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

dms = sync(v.get_danmakus(0))

for dm in dms: print(dm)

Traceback (most recent call last):
  File "D:/PycharmProjects/bilibili_spider/【测试】弹幕测试.py", line 5, in <module>
    dms = sync(v.get_danmakus(0))
  File "D:\PycharmProjects\bilibili_spider\venv\lib\site-packages\bilibili_api\utils\sync.py", line 24, in sync
    return loop.run_until_complete(coroutine)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 616, in run_until_complete
    return future.result()
  File "D:\PycharmProjects\bilibili_spider\venv\lib\site-packages\bilibili_api\video.py", line 553, in get_danmakus
    view = await self.get_danmaku_view(cid=cid)
  File "D:\PycharmProjects\bilibili_spider\venv\lib\site-packages\bilibili_api\video.py", line 507, in get_danmaku_view
    read_command_danmakus(reader.bytes_string()))
  File "D:\PycharmProjects\bilibili_spider\venv\lib\site-packages\bilibili_api\video.py", line 425, in read_command_danmakus
    data['extra'] = json.loads(reader_.string())
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Process finished with exit code 1


---

GYLTP avatar Jan 06 '22 01:01 GYLTP

是的 b站昨天更新了弹幕相关接口编码 我也是通过注释源码才得以勉强运行 期待作者更新吧

Joenothing-lst avatar Jan 07 '22 04:01 Joenothing-lst

大佬!你是怎么注释的!求解!

把报错那行data['extra'] = json.loads(reader_.string())注释掉就行

hausliu avatar Jan 10 '22 03:01 hausliu