Skip to content

Latest commit

 

History

History
741 lines (558 loc) · 30.8 KB

action.md

File metadata and controls

741 lines (558 loc) · 30.8 KB

弹幕操作

发送视频弹幕

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

请求方式:POST

认证方式:Cookie(SESSDATA)或APP

此接口与漫画弹幕相同

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

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

参数名 类型 内容 必要性 备注
access_key str APP 登录 Token APP 方式必要
type num 弹幕类选择 必要 1:视频弹幕
2:漫画弹幕
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:高级弹幕
9:BAS弹幕(pool必须为2)
rnd num 当前时间戳*1000000 非必要 若无此项,则发送弹幕冷却时间限制为90s
若有此项,则发送弹幕冷却时间限制为5s
colorful num 彩色弹幕 非必要 60001:专属渐变彩色(需要会员)
checkbox_type num 是否带 UP 身份标识 非必要 0:普通
4:带有标识
csrf str CSRF Token(位于 Cookie) 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:当日操作数量超过上限
36718:目前您不是大会员,无法使用会员权益
message str 错误信息 默认为0
ttl num 1
data obj 信息本体

data对象:

字段 类型 内容 备注
action str (?)
animation str 弹幕样式 Json?
colorful_src str 或 obj 渐变彩色样式信息? 当请求参数colorful=60001时有效
dm_content str (?)
dmid num 弹幕 dmid
dmid_str str 弹幕 dmid 字串形式
visible bool (?)

data中的colorful_src对象:

字段 类型 内容 备注
type num 60001
src str 渐变色样式 Json?

示例:

为视频av2/BV1xx411c7mD(cid为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

认证方式:Cookie(SESSDATA)或APP

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

详情见:

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

引导关注卡片

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

参数名 类型 内容 必要性 备注
access_key str APP登录Token APP方式必要
type num 互动弹幕类型 必要 1:UP主头像弹幕
2:关联视频弹幕
5:视频内嵌引导关注按钮
aid num 稿件avid 必要
cid num 视频cid 必要
progress num 弹幕出现在视频内的时间 非必要 单位为毫秒
默认为0
plat num 平台标识 必要 1:web端
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:账号被封停
-111:csrf校验失败
-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 互动弹幕类型 1:UP主头像弹幕
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:关注+三联

示例:

为视频av201947622(cid为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"
    }
}

为视频av201947622(cid为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"
    }
}

为视频av201947622(cid为230709860)的5000ms位置发送视频内嵌引导关注按钮,X坐标为118,Y坐标为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

认证方式:Cookie(SESSDATA)或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:账号被封停
-111:csrf校验失败
-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

认证方式:Cookie(SESSDATA)或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:账号被封停
-111:csrf校验失败
-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

认证方式:Cookie(SESSDATA)或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/add

请求方式:POST

认证方式:Cookie(SESSDATA)或APP

查询指定弹幕点赞状态参阅文档 弹幕点赞查询

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

参数名 类型 内容 必要性 备注
access_key str APP 登录 Token APP 方式必要
dmid num 目标弹幕 dmid 必要
oid num 目标弹幕所在视频 cid 必要
op num 操作 必要 1:点赞
2:取消点赞
platform str 平台标识 非必要 web_player:web 播放器
android:安卓端
csrf str CSRF Token(位于 Cookie) Cookie 方式必要

json回复:

根对象:

字段 类型 内容 备注
code num 返回值 0:成功
-101:账号未登录
-111:csrf 校验失败
-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

认证方式:Cookie(SESSDATA)或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:账号未登录
-111:csrf 校验失败
-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

认证方式:Cookie(SESSDATA) 或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:账号未登录
-111:csrf 校验失败
-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

认证方式:Cookie(SESSDATA) 或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:账号未登录
-111:csrf 校验失败
-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
}