bilibili-api
bilibili-api copied to clipboard
【提问】video upload出错-bilibili_api.exceptions.ResponseCodeException.ResponseCodeException: 接口返回错误代码:-111,信息:csrf 校验失败。
Python 版本: 3.9.7
模块版本: 9.1.0
运行环境: Linux
现状:
https://bili.moyu.moe/#/examples/video_uploader 和 https://github.com/MoyuScript/bilibili-api-docs/blob/main/docs/examples/video_uploader.md 好像并不能工作。第一次用这个库,谢谢。参考了 #243 中评论的部分代码。
代码:
#!/usr/bin/python
# encoding: utf-8
import asyncio
from bilibili_api import sync, video_uploader, Credential
async def main():
SESSDATA = ''
BUVID3 = ''
BILI_JCT = ''
credential = Credential(sessdata=SESSDATA, bili_jct=BILI_JCT, buvid3=BUVID3)
meta = {
"copyright": 2,
"source": "https://www.youtube.com/watch?v=6zWbbB1xtvM",
"desc": "https://www.youtube.com/watch?v=6zWbbB1xtvM",
"dynamic": "#越野滑雪##滑雪##世界杯##芬兰#",
"interactive": 0,
"open_elec": 1,
"no_reprint": 1,
"subtitles": {
"lan": "",
"open": 0
},
"tag": "YouTube",
"tid": 238,
"title": "国际雪联|越野滑雪|2021/22世界杯|芬兰卢卡|男子古典式短距离|胜利者|Alexander Terentev(俄罗斯",
"up_close_danmaku": True,
"up_close_reply": True
}
page = video_uploader.VideoUploaderPage(path = 'fis-20211127.mp4', title = '国际雪联|越野滑雪|2021/22世界杯|芬兰卢卡|男子古典式短距离|胜利者|Alexander Terentev(俄罗斯' , description=
'https://www.youtube.com/watch?v=6zWbbB1xtvM')
uploader = video_uploader.VideoUploader([page], meta, credential)
@uploader.on("__ALL__")
async def ev(data):
print(data)
await uploader.start()
sync(main())
出错信息
./test4.py
{'name': 'PREUPLOAD', 'data': {<bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>: <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>}}
{'name': 'PRE_PAGE', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>}}
{'name': 'PRE_CHUNK', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>, 'offset': 0, 'chunk_number': 0, 'total_chunk_count': 3}}
{'name': 'PRE_CHUNK', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>, 'offset': 10485760, 'chunk_number': 1, 'total_chunk_count': 3}}
{'name': 'PRE_CHUNK', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>, 'offset': 20971520, 'chunk_number': 2, 'total_chunk_count': 3}}
{'name': 'AFTER_CHUNK', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>, 'offset': 20971520, 'chunk_number': 2, 'total_chunk_count': 3}}
{'name': 'AFTER_CHUNK', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>, 'offset': 0, 'chunk_number': 0, 'total_chunk_count': 3}}
{'name': 'AFTER_CHUNK', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>, 'offset': 10485760, 'chunk_number': 1, 'total_chunk_count': 3}}
{'name': 'PRE_PAGE_SUBMIT', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>}}
{'name': 'AFTER_PAGE_SUBMIT', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>}}
{'name': 'AFTER_PAGE', 'data': {'page': <bilibili_api.video_uploader.VideoUploaderPage object at 0x7f2b113ddeb0>}}
{'name': 'PRE_SUBMIT', 'data': {'copyright': 2, 'source': 'https://www.youtube.com/watch?v=6zWbbB1xtvM', 'desc': 'https://www.youtube.com/watch?v=6zWbbB1xtvM', 'dynamic': '#越野滑雪##滑雪##世界杯##芬兰#', 'interactive': 0, 'open_elec': 1, 'no_reprint': 1, 'subtitles': {'lan': '', 'open': 0}, 'tag': 'YouTube', 'tid': 238, 'title': '国际雪联|越野滑雪|2021/22世界杯|芬兰卢卡|男子古典式短距离|胜利者|Alexander Terentev(俄罗斯', 'up_close_danmaku': True, 'up_close_reply': True, 'cover': '', 'videos': [{'title': '国际雪联|越野滑雪|2021/22世界杯|芬兰卢卡|男子古典式短距离|胜利者|Alexander Terentev(俄罗斯', 'desc': 'https://www.youtube.com/watch?v=6zWbbB1xtvM', 'filename': 'n211128a2lxpj92gsvcmxqorel8tiq49', 'cid': 450416419}]}}
{'name': 'SUBMIT_FAILED', 'data': {'err': ResponseCodeException('csrf 校验失败')}}
Traceback (most recent call last):
File "/home/liangqi/bin/./test4.py", line 42, in <module>
sync(main())
File "/home/liangqi/.local/lib/python3.9/site-packages/bilibili_api/utils/sync.py", line 24, in sync
return loop.run_until_complete(coroutine)
File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/home/liangqi/bin/./test4.py", line 39, in main
await uploader.start()
File "/home/liangqi/.local/lib/python3.9/site-packages/bilibili_api/video_uploader.py", line 411, in start
raise e
File "/home/liangqi/.local/lib/python3.9/site-packages/bilibili_api/video_uploader.py", line 404, in start
result = await task
File "/home/liangqi/.local/lib/python3.9/site-packages/bilibili_api/video_uploader.py", line 387, in _main
result = await self._submit(videos, cover_url)
File "/home/liangqi/.local/lib/python3.9/site-packages/bilibili_api/video_uploader.py", line 658, in _submit
raise err
File "/home/liangqi/.local/lib/python3.9/site-packages/bilibili_api/video_uploader.py", line 649, in _submit
resp = await request('POST', api['url'], params={"csrf": self.credential.bili_jct}, data=json.dumps(meta), headers={
File "/home/liangqi/.local/lib/python3.9/site-packages/bilibili_api/utils/network.py", line 154, in request
raise ResponseCodeException(code, msg, resp_data)
bilibili_api.exceptions.ResponseCodeException.ResponseCodeException: 接口返回错误代码:-111,信息:csrf 校验失败。
检查一下你有没有写错 csrf 值,试试别的 api
有什么别的api推荐么?谢谢