bilibili-API-collect/danmaku/action.md
2023-01-18 12:12:58 +08:00

32 KiB
Raw Blame History

弹幕操作


发送视频弹幕

https://api.bilibili.com/x/v2/dm/post

请求方式POST

认证方式CookieSESSDATA或APP

此接口与漫画弹幕相同

mode=6的逆向弹幕与mode=8的代码弹幕不可发送

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
type num 弹幕类选择 必要 1视频弹幕
oid num 视频cid 必要
msg str 弹幕内容 必要 长度小于100字符
bvid str 稿件bvid 必要(可选) avid与bvid任选一个
aid num 稿件avid 必要(可选) avid与bvid任选一个
progress num 弹幕出现在视频内的时间 非必要 单位为毫秒
默认为0
color num 弹幕颜色设置 非必要 十进制RGB888值
默认为16777215#FFFFFF白色
fontsize num 弹幕字号设置 非必要 默认为25
极小12
超小16
18
标准25
36
超大45
极大64
pool num 弹幕池选择 非必要 0普通池
1字幕池
2特殊池代码/BAS弹幕
默认为0
mode num 弹幕类型选择 必要 1普通弹幕
4底部弹幕
5顶部弹幕
7高级弹幕
9BAS弹幕pool必须为2
rnd num 当前时间戳*1000000 非必要 若无此项则发送弹幕冷却时间限制为90s
若有此项则发送弹幕冷却时间限制为5s
csrf str CSRF Token位于cookie Cookie方式必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-102账号被封停
-111csrf校验失败
-400请求错误
-404无此项
36700系统升级中
36701弹幕包含被禁止的内容
36702弹幕长度大于100
36703发送频率过快
36704禁止向未审核的视频发送弹幕
36705您的等级不足不能发送弹幕
36706您的等级不足不能发送顶端弹幕
36707您的等级不足不能发送底端弹幕
36708您的等级不足不能发送彩色弹幕
36709您的等级不足不能发送高级弹幕
36710您的权限不足不能发送这种样式的弹幕
36711该视频禁止发送弹幕
36712level 1用户发送弹幕的最大长度为20
36713稿件未付费
36714弹幕发送时间不合法
36715当日操作数量超过上限
message str 错误信息 默认为0
ttl num 1
data obj 信息本体

data对象:

字段 类型 内容 备注
action str 作用尚不明确
dmid num 弹幕dmid
dmid_str str 弹幕dmid 字串形式
visible bool true 作用尚不明确

示例:

为视频av2/BV1xx411c7mDcid为62131的5000ms位置发送一条弹幕前来考古(颜色为#FFFFFF字号25普通弹幕游动弹幕

curl 'https://api.bilibili.com/x/v2/dm/post' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=62131' \
--data-urlencode 'msg=前来考古' \
--data-urlencode 'aid=2' \
--data-urlencode 'progress=5000' \
--data-urlencode 'color=16777215' \
--data-urlencode 'fontsize=25' \
--data-urlencode 'pool=0' \
--data-urlencode 'mode=1' \
--data-urlencode 'rnd=3456789987654321' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code":0,
    "message":"0",
    "ttl":1,
    "data":{
        "action":"",
        "dmid":32161968826613767,
        "dmid_str":"32161968826613767",
        "visible":true
    }
}

发送互动弹幕

https://api.bilibili.com/x/v2/dm/command/post

请求方式POST

认证方式CookieSESSDATA或APP

2020-09-25 B站更新了互动弹幕功能包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能

详情见:

【客户端更新】6.10版本更新UP主支持发布关联视频弹幕

引导关注卡片

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
type num 互动弹幕类型 必要 1UP主头像弹幕
2关联视频弹幕
5视频内嵌引导关注按钮
aid num 稿件avid 必要
cid num 视频cid 必要
progress num 弹幕出现在视频内的时间 非必要 单位为毫秒
默认为0
plat num 平台标识 必要 1web端
2安卓端
8视频管理页面
data str json序列 必要
dmid num 修改互动弹幕的弹幕id 非必要 注:修改弹幕plat必须为8
csrf str CSRF Token位于cookie Cookie方式必要

data参数json序列

类型为【UP主头像弹幕】时

字段 类型 内容 备注
msg str 弹幕内容

类型为【关联视频弹幕】时:

字段 类型 内容 备注
msg str 弹幕内容
bvid str 关联视频的bvid

类型为【视频内嵌引导关注按钮】时:

字段 类型 内容 备注
duration num 持续时间 单位为毫秒
posX num X坐标 区间:[118-549]
posY num Y坐标 区间:[82-293]

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-102账号被封停
-111csrf校验失败
-400请求错误
-404无此项
-500服务器错误
36711该视频禁止发送弹幕
79026发送失败请勿填写当前稿件bvid
79024发送失败请输入正确的bvid
79036该指令弹幕超出限制
79037关注弹幕坐标溢出
message str 错误信息 默认为0
ttl num 1
data 正确时obj
错误时null
信息本体

data对象:

字段 类型 内容 备注
command str 指令? UP主头像弹幕#UP#
关联视频弹幕:#LINK#
视频内嵌引导关注按钮:#ATTENTION#
content str 弹幕内容
extra str 弹幕数据 json序列
id num 弹幕dmid
idStr str 弹幕dmid 字串形式
mid num 用户mid
oid num 视频cid
progress num 弹幕出现在视频内的时间
type num 互动弹幕类型 1UP主头像弹幕
2关联视频弹幕
5视频内嵌引导关注按钮

extra序列数据:

类型为【UP主头像弹幕】时

字段 类型 内容 备注
icon str UP主头像url

类型为【关联视频弹幕】时:

字段 类型 内容 备注
aid num 关联视频的avid
title str 关联视频的标题
bvid str 关联视频的bvid

类型为【视频内嵌引导关注按钮】时:

字段 类型 内容 备注
duration num 持续时间 单位为毫秒
posX num X坐标 区间:[118-549]
posY num Y坐标 区间:[82-293]
icon str 按钮图片url 不应该是关注按钮吗,但这个是圆形的
type num 关注按钮类型 0仅关注
1仅三联
2关注+三联

示例:

为视频av201947622cid为230709860的5000ms位置发送一条UP主头像弹幕test

curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=1' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"msg":"test"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "id": 39053842117558279,
        "oid": 230709860,
        "mid": 293793435,
        "type": 1,
        "command": "#UP#",
        "content": "test",
        "extra": "{\"icon\":\"http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg\"}",
        "idStr": "39053842117558279"
    }
}

为视频av201947622cid为230709860的5000ms位置发送一条发送关联视频弹幕测试1234关联视频为BV1kz4y1X7XP

curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=2' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"bvid":"BV1kz4y1X7XP","msg":"测试1234"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "id": 39054383689236483,
        "oid": 230709860,
        "mid": 293793435,
        "type": 2,
        "command": "#LINK#",
        "content": "测试1234",
        "progress": 11925,
        "extra": "{\"aid\":583785685,\"title\":\"【cmd】访问api 命令行也能上B站\",\"bvid\":\"BV1kz4y1X7XP\"}",
        "idStr": "39054383689236483"
    }
}

为视频av201947622cid为230709860的5000ms位置发送视频内嵌引导关注按钮X坐标为118Y坐标为82持续时间为5000ms

curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=5' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"duration":5000,"posX":118,"posY":82}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "id": 39055158405496839,
        "oid": 230709860,
        "mid": 293793435,
        "type": 5,
        "command": "#ATTENTION#",
        "progress": 5000,
        "extra": "{\"duration\":5000,\"posX\":118,\"posY\":82}",
        "idStr": "39055158405496839"
    }
}

撤回弹幕

https://api.bilibili.com/x/dm/recall

请求方式POST

认证方式CookieSESSDATA或APP

仅能撤回自己两分钟内的弹幕且每天只有3次机会

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
dmid num 弹幕dmid 必要
cid num 视频cid 必要
csrf str CSRF Token位于cookie Cookie方式必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-102账号被封停
-111csrf校验失败
-400请求错误
-404无此项
36301撤回失败弹幕发送已过2分钟
36302撤回失败弹幕已经被删除或撤回
36303撤回失败今天撤回的机会已经用完
36304撤回失败服务器出错
message str 错误信息 成功后显示剩余次数
ttl num 1

示例:

撤回cid=168901231下的弹幕32310301474947077的弹幕

curl 'https://api.bilibili.com/x/dm/recall' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'dmid=32310301474947077' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code": 0,
    "message": "撤回成功你还有3次撤回机会"
}

购买高级弹幕发送权限

https://api.bilibili.com/x/dm/adv/buy

请求方式POST

认证方式CookieSESSDATA或APP

购买一次需要2硬币同时向up主发送请求

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
mode str sp 必要
cid num 视频cid 必要
csrf str CSRF Token位于cookie Cookie方式必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-102账号被封停
-111csrf校验失败
-107硬币不足
-400请求错误
36007不允许购买
36009正在确认中
36010已购买
message str 返回信息
ttl num 1

示例:

购买视频cid为168901231的高级弹幕发送权限

curl 'https://api.bilibili.com/x/dm/adv/buy' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code":0,
    "message":"已成功购买"
}

检测高级弹幕发送权限

https://api.bilibili.com/x/dm/adv/state

请求方式GET

认证方式CookieSESSDATA或APP

url参数

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
mode str sp 必要
cid num 视频cid 必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
--400请求错误
message str 错误信息 默认为0
ttl num 1
data 有效时obj
无效时null
有效时:信息本体

data对象:

字段 类型 内容 备注
coins num 需要支付的硬币数
confirm num 是否同意 1同意
2未同意
未购买时无此项
accept bool 是否允许申请 true允许
false不允许
hasBuy bool 是否已购买 true已购买
未购买时无此项

示例:

查询视频cid为168901231的视频高级弹幕权限购买状态

当前状态为已购买且同意

curl -G 'https://api.bilibili.com/x/dm/adv/state' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "coins": 2,
        "confirm": 1,
        "accept": true,
        "hasBuy": true
    }
}

查询弹幕点赞数

https://api.bilibili.com/x/v2/dm/thumbup/stats

请求方式GET

认证方式CookieSESSDATA或APP

url参数

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
oid num 视频cid 必要
ids nums 弹幕dmid列表 必要 多个id之间用,分隔

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-400请求错误
message str 错误信息 默认为0
ttl num 1
data obj 信息本体

data对象:

字段 类型 内容 备注
{弹幕id} obj 弹幕id对应的信息 id分别对应请求参数中的ids,下同
…… obj 弹幕id对应的信息

{弹幕id}对象:

字段 类型 内容 备注
likes num 点赞数
user_like num 是否点赞 0未点赞
1已点赞
需要登录(Cookie或APP)
未登录恒为0
id_str str 弹幕dmid

示例

查询cid=236871317下的弹幕356000744823848993888097522037555939052528418553863点赞数

curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \
--data-urlencode 'oid=236871317' \
--data-urlencode 'ids=39019145405661191,38880975220375559,39052528418553863' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "38880975220375559": {
            "likes": 1,
            "user_like": 1,
            "id_str": "38880975220375559"
        },
        "39019145405661191": {
            "likes": 3,
            "user_like": 1,
            "id_str": "39019145405661191"
        },
        "39052528418553863": {
            "likes": 2,
            "user_like": 0,
            "id_str": "39052528418553863"
        }
    }
}

点赞弹幕

https://api.bilibili.com/x/v2/dm/thumbup/add

请求方式POST

认证方式CookieSESSDATA或APP

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
dmid num 弹幕dmid 必要
oid num 视频cid 必要
op num 操作 必要 1点赞
2取消点赞
platform str 平台 非必要
csrf str CSRF Token位于cookie Cookie方式必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-111csrf 校验失败
-400请求错误
36106该弹幕已被删除
36805该视频禁止点赞弹幕
65004取消赞失败 未点赞过
65006已赞过
message str 错误信息 默认为0
tll num 1

示例

cid=145928946下的弹幕35600074482384899点赞

curl 'https://api.bilibili.com/x/v2/dm/thumbup/add' \
--data-urlencode 'dmid=35600074482384899' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'op=1' \
--data-urlencode 'platform=web_player' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code":0,
    "message":"0",
    "ttl":1
}

举报弹幕

https://api.bilibili.com/x/dm/report/add

请求方式POST

认证方式CookieSESSDATA或APP

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
cid num 视频cid 必要
dmid num 弹幕dmid 必要
reason num 举报类型 必要 类型代码见下表
content str 其他举报备注 非必要 reason=11时有效
csrf str CSRF Token位于cookie Cookie方式必要

举报类型reason

代码 含义
1 违法违禁
2 色情低俗
3 赌博诈骗
4 人身攻击
5 侵犯隐私
6 垃圾广告
7 引战
8 剧透
9 恶意刷屏
10 视频无关
11 其他
12 青少年不良

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-111csrf 校验失败
-400请求错误
36201举报弹幕不存在
36203举报原因类型错误
36204已举报
message str 错误信息 默认为空
tll num 1 举报失败时

示例

举报cid=145928946下的弹幕35600074482384899,理由是引战

curl 'https://api.bilibili.com/x/dm/report/add' \
--data-urlencode 'cid=145928946' \
--data-urlencode 'dmid=35600074482384899' \
--data-urlencode 'reason=7' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code":0,
    "message":""
}

保护&删除弹幕

https://api.bilibili.com/x/v2/dm/edit/state

请求方式POST

认证方式CookieSESSDATA 或APP

注:只能操作自己的稿件或有骑士权限的稿件

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
type num 弹幕类选择 必要 1视频弹幕
oid num 视频cid 必要
dmids nums 弹幕dmid 必要 多个id之间用,分隔
state num 操作代码 必要 1删除弹幕
2弹幕保护
3取消保护
csrf str CSRF Token位于cookie Cookie方式必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-111csrf 校验失败
-400请求错误
-403访问权限不足
message str 错误信息 默认为0
ttl num 1

示例

删除cid=145928946下的弹幕356000744823848993906730491851571739082777041174531

curl 'https://api.bilibili.com/x/v2/dm/edit/state' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \
--data-urlencode 'state=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code":0,
    "message":"0",
    "ttl":1
}

修改字幕池

https://api.bilibili.com/x/v2/dm/edit/pool

请求方式POST

认证方式CookieSESSDATA 或APP

注:只能操作自己的稿件或有骑士权限的稿件

正文参数( application/x-www-form-urlencoded

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
type num 弹幕类选择 必要 1视频弹幕
oid num 视频cid 必要
dmids nums 弹幕dmid 必要 多个id之间用,分隔
pool num 操作代码 必要 0移出字幕池
1移入字幕池
csrf str CSRF Token位于cookie Cookie方式必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-101账号未登录
-111csrf 校验失败
-400请求错误
-403访问权限不足
message str 错误信息 默认为0
ttl num 1

示例

cid=145928946下的弹幕356000744823848993906730491851571739082777041174531移入字幕池

curl 'https://api.bilibili.com/x/v2/dm/edit/state' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'pool=1' \
--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
    "code":0,
    "message":"0",
    "ttl":1
}