Skip to content

Latest commit

 

History

History
237 lines (177 loc) · 10 KB

action.md

File metadata and controls

237 lines (177 loc) · 10 KB

弹幕操作

发送视频弹幕

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

请求方式:POST

认证方式:Cookie(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 弹幕颜色设置 非必要 十进制RGB888值
默认为16777215(#FFFFFF)白色
fontsize num 弹幕字号设置 非必要 默认为25
pool num 弹幕池选择 非必要 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕)
默认为0
mode num 弹幕类型选择 必要 1:普通弹幕
4:底部弹幕
5:顶部弹幕
7:高级弹幕
9:BAS弹幕(pool必须为2)
rnd num 当前时间戳*1000000 非必要 若无此项,则发送弹幕冷却时间限制为90s
若有此项,则发送弹幕冷却时间限制为5s
csrf str CSRF Token(位于cookie) 必要

json回复:

根对象:

字段 类型 内容 备注
code num 返回值 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36700:系统升级中
36701:弹幕包含被禁止的内容
36702:弹幕长度大于100
36703:发送频率过快
36704:禁止向未审核的视频发送弹幕
36705:您的等级不足,不能发送弹幕
36706:您的等级不足,不能发送顶端弹幕
36707:您的等级不足,不能发送底端弹幕
36708:您的等级不足,不能发送彩色弹幕
36709:您的等级不足,不能发送高级弹幕
36710:您的权限不足,不能发送这种样式的弹幕
36711:该视频禁止发送弹幕
36712:level 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/BV1xx411c7mD(CID为62131)的5s位置发送一条弹幕前来考古(颜色为#FFFFFF,字号25,普通弹幕,游动弹幕)

curl 'http://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
    }
}

撤回弹幕

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

请求方式:POST

认证方式:Cookie(SESSDATA)

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

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

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

json回复:

根对象:

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

示例:

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

curl 'http://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次撤回机会"
}

购买高级弹幕发送权限

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

请求方式:POST

认证方式:Cookie(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:账号被封停
-111:csrf校验失败
-107:硬币不足
-400:请求错误
36007:不允许购买
36009:正在确认中
36010:已购买
message str 返回信息
ttl num 1

示例:

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

curl 'http://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":"已成功购买"
}

检测高级弹幕发送权限

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

请求方式:GET

认证方式:Cookie(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的视频高级弹幕权限购买状态

当前状态为已购买且同意

curl -G 'http://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
    }
}