bac

历史弹幕

注:历史弹幕的xml接口已经失效,现已改为protobuf接口

查询历史弹幕日期

https://api.bilibili.com/x/v2/dm/history/index

请求方式:GET

认证方式:Cookie(SESSDATA)

注:查询历史弹幕需要登录

url参数:

参数名 类型 内容 必要性 备注
type num 1 必要  
oid num 视频cid 必要  
month str 查询目标年月 必要 YYYY-MM

json回复:

根对象:

字段 类型 内容 备注
code num 返回值 0:成功
-400:请求错误
-101:账号未登录
message str 错误信息 默认为0
ttl num 1  
data 有弹幕:array
无弹幕:null
日期列表  

data数组:

类型 内容 备注
0 str 存在弹幕的日期1 YYYY-MM-DD
n str 存在弹幕的日期(n+1) YYYY-MM-DD
…… str …… ……

示例:

查询了cid为144541892的视频位于2020年1月中有历史弹幕记录的日期

curl -G 'https://api.bilibili.com/x/v2/dm/history/index' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=144541892' \
--data-urlencode 'month=2020-01' \
-b 'SESSDATA=xxx'
查看响应示例: ```json { "code": 0, "message": "0", "ttl": 1, "data": [ "2020-01-21", "2020-01-22", "2020-01-23", "2020-01-24", "2020-01-25", "2020-01-26", "2020-01-27", "2020-01-28", "2020-01-29", "2020-01-30", "2020-01-31" ] } ```

返回结果的 data 项说明这些日期有弹幕发送。若查询的月份中视频无弹幕,则 data 项为 null

curl -G 'https://api.bilibili.com/x/v2/dm/history/index' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=144541892' \
--data-urlencode 'month=2019-12' \
-b 'SESSDATA=xxx'
查看响应示例: ```json { "code": 0, "message": "0", "ttl": 1, "data": null } ```

获取历史弹幕protobuf接口

https://api.bilibili.com/x/v2/dm/web/history/seg.so

请求方式:GET

认证方式:Cookie(SESSDATA)

url参数:

参数名 类型 内容 必要性 备注
type num 弹幕类 必要 1:视频弹幕
oid num 视频cid 必要  
date str 弹幕日期 必要 YYYY-MM-DD

proto回复:

porto定义见:bilibili.community.service.dm.v1.DmSegMobileReply

详细说明见protobuf弹幕

获取视频av84271171(cid=144541892)2020-01-21的历史弹幕

注:proto定义需要编译

import requests
import google.protobuf.text_format as text_format
import bilibili.community.service.dm.v1_pb2 as Danmaku

url = 'https://api.bilibili.com/x/v2/dm/web/history/seg.so'
params = {
    'type':1,           #弹幕类型
    'oid':144541892,    #cid
    'date':'2020-01-21' #弹幕日期
}
cookies = {
    'SESSDATA':'xxx'
}
resp = requests.get(url,params,cookies=cookies)
data = resp.content

danmaku_seg = Danmaku.DmSegMobileReply()
danmaku_seg.ParseFromString(data)

print(text_format.MessageToString(danmaku_seg.elems[0],as_utf8=True))

输出:

id: 27532611677585408
progress: 300507
mode: 1
fontsize: 25
color: 16777215
midHash: "2a28d4a6"
content: "章北海的老爹"
ctime: 1579621359
idStr: "27532611677585408"

获取历史弹幕xml接口

查看折叠内容: > https://api.bilibili.com/x/v2/dm/history *请求方式:GET* 认证方式:Cookie(SESSDATA) **注:查询历史弹幕需要登录** 结果为[标准xml格式弹幕](/bac/docs/danmaku/danmaku_xml.html#弹幕格式) **使用deflate压缩,注意解码** **url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | -------- | ------ | ---------- | | type | num | 1 | 必要 | | | oid | num | 视频cid | 必要 | | | date | str | 弹幕日期 | 必要 | YYYY-MM-DD | **示例:** 获取视频`av84271171(cid=144541892)`2020-01-21的历史弹幕 ```shell curl -G 'https://api.bilibili.com/x/v2/dm/history' \ --data-urlencode 'type=1' \ --data-urlencode 'oid=144541892' \ --data-urlencode 'date=2020-01-21' \ -b 'SESSDATA=xxx' \ --compressed -o 'danmaku.xml' ```
查看响应示例: ```xml chat.bilibili.com 144541892 0 1500 0 0 敬礼 悄默声的更新啊怎么 久等了 不都是乱纪元才浸泡 已阅,狗屁不通。大字报在地上搞搞就行,别弄到天上去 CSSC。。。 看到了个寂寞 有耳朵了! 雪天不用浸泡吧 未来史学派 浸泡!!!!!!! 章召忠 mi24av 泪奔 组建太空军 是未来史学派? 刘培强还行 ………… ``` </details> </details>