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

【提问】video upload出错-bilibili_api.exceptions.ResponseCodeException.ResponseCodeException: 接口返回错误代码:-111,信息:csrf 校验失败。

Open liangqi opened this issue 3 years ago • 2 comments

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 校验失败。

liangqi avatar Nov 27 '21 20:11 liangqi

检查一下你有没有写错 csrf 值,试试别的 api

MoyuScript avatar Jan 09 '22 12:01 MoyuScript

有什么别的api推荐么?谢谢

liangqi avatar Jan 09 '22 12:01 liangqi