Files
bilibili-API-collect/danmaku/action.md
T
2020-07-14 18:44:44 +08:00

9.3 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:无此项
36702:弹幕长度大于100
36703:发送频率过快
36709:您的等级不足,不能发送高级弹幕
36710:您的权限不足,不能发送这种样式的弹幕
36711:该视频禁止发送弹幕
36714:弹幕出现时刻超过视频总时长
(其他错误码有待补充)
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:撤回失败,今天撤回的机会已经用完
(其他错误码有待补充)
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:请求错误
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 是否允许申请
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
    }
}