bilibili-API-collect/danmaku/action.md
2020-07-17 23:50:28 +08:00

9.8 KiB
Raw Blame History

弹幕操作

发送视频弹幕

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

请求方式POST

需要登录(SESSDATA)

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

参数名 类型 内容 必要性 备注
type num 1 必要
oid num 视频CID 必要
msg str 弹幕内容 必要 长度小于100字符
bvid str 视频bvID 必要(可选) avID与bvID任选一个
aid num 视频avID 必要(可选) avID与bvID任选一个
progress num 弹幕出现在视频内的时间 非必要 单位为毫秒
默认为0
color num 弹幕颜色设置 非必要 详见[「弹幕」中的属性 p](danmaku.md#属性 p)
默认为16777215#FFFFFF白色
fontsize num 弹幕字号设置 非必要 详见[「弹幕」中的属性 p](danmaku.md#属性 p)
默认为25
pool num 弹幕池选择 非必要 0普通弹幕
1字幕弹幕
2BAS弹幕
默认为0
mode num 弹幕类型选择 必要 1普通
4底部
5顶部
7高级
9BASpool必须为2
rnd num 16位10进制随机数 非必要 若无此项则发送弹幕冷却时间限制为90s
若有此项则发送弹幕冷却时间限制为5s
csrf str CSRF Token位于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的5s位置发送一条弹幕前来考古(颜色为#FFFFFF字号25普通弹幕游动弹幕

curl -b "SESSDATA=xxx" -d "type=1&oid=62131&msg=%e5%89%8d%e6%9d%a5%e8%80%83%e5%8f%a4&aid=2&progress=5000&color=16777215&fontsize=25&pool=0&mode=1&rnd=3456789987654321&csrf=xxx" "http://api.bilibili.com/x/v2/dm/post"

同curl -b "SESSDATA=xxx" -d "type=1&oid=62131&msg=%e5%89%8d%e6%9d%a5%e8%80%83%e5%8f%a4&bvid=BV1xx411c7mD&progress=5000&color=16777215&fontsize=25&pool=0&mode=1&rnd=3456789987654321&csrf=xxx" "http://api.bilibili.com/x/v2/dm/post"

{
    "code":0,
    "message":"0",
    "ttl":1,
    "data":{
        "action":"",
        "dmid":32161968826613767,
        "dmid_str":"32161968826613767",
        "visible":true
    }
}

撤回弹幕

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

请求方式POST

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

需要登录(SESSDATA)

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

参数名 类型 内容 必要性 备注
dmid num 弹幕dmID 必要
cid num 视频CID 必要
csrf str CSRF Token位于cookie 必要

json回复

根对象:

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

示例:

撤回视频CID为168901231弹幕ID为32310301474947077的弹幕

curl -b "SESSDATA=xxx" -d "dmid=32310301474947077&cid=168901231&csrf=xxx" "http://api.bilibili.com/x/dm/recall"

{
    "code": 0,
    "message": "撤回成功你还有3次撤回机会"
}

购买高级弹幕发送权限

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

请求方式POST

需要登录(SESSDATA)

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

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

参数名 类型 内容 必要性 备注
mode str sp 必要
cid num 视频CID 必要
csrf str CSRF Token位于cookie 必要

json回复

根对象:

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

示例:

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

curl -b "SESSDATA=xxx" -d "mode=sp&cid=168901231&csrf=xxx" "http://api.bilibili.com/x/dm/adv/buy"

{
    "code":0,
    "message":"已成功购买"
}

检测高级弹幕发送权限

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

请求方式GET

需要登录(SESSDATA)

url参数

参数名 类型 内容 必要性 备注
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的视频高级弹幕权限购买状态

当前状态为已购买且同意

https://api.bilibili.com/x/dm/adv/state?cid=168901231&mode=sp

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "coins": 2,
        "confirm": 1,
        "accept": true,
        "hasBuy": true
    }
}