import{_ as e,c as r,a as l,b as n,d as a,e as p,w as t,r as c,o as i}from"./app-Dgsdh8A6.js";const d={};function D(y,s){const o=c("RouteLink");return i(),r("div",null,[s[10]||(s[10]=l(`

历史弹幕

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

查询历史弹幕日期

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

请求方式:GET

认证方式:Cookie(SESSDATA)

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

url参数:

参数名类型内容必要性备注
typenum1必要
oidnum视频cid必要
monthstr查询目标年月必要YYYY-MM

json回复:

根对象:

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

data数组:

类型内容备注
0str存在弹幕的日期1YYYY-MM-DD
nstr存在弹幕的日期(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'
查看响应示例:
{
    "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'
查看响应示例:
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": null
}

获取历史弹幕protobuf接口

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

请求方式:GET

认证方式:Cookie(SESSDATA)

url参数:

参数名类型内容必要性备注
typenum弹幕类必要1:视频弹幕
oidnum视频cid必要
datestr弹幕日期必要YYYY-MM-DD

proto回复:

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

`,29)),n("p",null,[s[1]||(s[1]=a("详细说明见")),p(o,{to:"/docs/danmaku/danmaku_proto.html"},{default:t(()=>s[0]||(s[0]=[a("protobuf弹幕")])),_:1,__:[0]})]),s[11]||(s[11]=l(`

获取视频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接口

`,6)),n("details",null,[s[4]||(s[4]=n("summary",null,"查看折叠内容:",-1)),s[5]||(s[5]=n("blockquote",null,[n("p",null,"https://api.bilibili.com/x/v2/dm/history")],-1)),s[6]||(s[6]=n("p",null,[n("em",null,"请求方式:GET")],-1)),s[7]||(s[7]=n("p",null,"认证方式:Cookie(SESSDATA)",-1)),s[8]||(s[8]=n("p",null,[n("strong",null,"注:查询历史弹幕需要登录")],-1)),n("p",null,[s[3]||(s[3]=a("结果为")),p(o,{to:"/docs/danmaku/danmaku_xml.html#%E5%BC%B9%E5%B9%95%E6%A0%BC%E5%BC%8F"},{default:t(()=>s[2]||(s[2]=[a("标准xml格式弹幕")])),_:1,__:[2]})]),s[9]||(s[9]=l(`

使用deflate压缩,注意解码

url参数:

参数名类型内容必要性备注
typenum1必要
oidnum视频cid必要
datestr弹幕日期必要YYYY-MM-DD

示例:

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

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 version="1.0" encoding="UTF-8"?>
<i>
    <chatserver>chat.bilibili.com</chatserver>
    <chatid>144541892</chatid>
    <mission>0</mission>
    <maxlimit>1500</maxlimit>
    <state>0</state>
    <real_name>0</real_name>
    <d p="473.43400,1,25,15138834,1579622380,0,ec16f2d,27532609919123456">敬礼</d>
    <d p="3.10200,1,25,16777215,1579622362,0,a2bd7474,27532609920696320">悄默声的更新啊怎么</d>
    <d p="17.52300,1,25,16777215,1579622357,0,972c932b,27532609906016258">久等了</d>
    <d p="40.81800,1,25,16777215,1579622343,0,bbca6701,27532609906540546">不都是乱纪元才浸泡</d>
    <d p="243.39800,1,25,15138834,1579622336,0,77b00ed9,27532609924890624">已阅,狗屁不通。大字报在地上搞搞就行,别弄到天上去</d>
    <d p="559.80000,1,25,16777215,1579622334,0,9affc7f5,27532609909686274">CSSC。。。</d>
    <d p="398.29700,1,25,16777215,1579622331,0,18d4707,27532609926463488">看到了个寂寞</d>
    <d p="34.81000,1,25,38979,1579622327,0,319d7700,27532609926987776">有耳朵了!</d>
    <d p="18.65700,1,25,16777215,1579622321,0,bbca6701,27532609912307714">雪天不用浸泡吧</d>
    <d p="305.99800,1,25,16777215,1579622316,0,878c315b,27532609928560640">未来史学派</d>
    <d p="7.86200,1,25,16777215,1579622309,0,c5136613,27532609913880578">浸泡!!!!!!!</d>
    <d p="368.95600,1,25,16777215,1579622302,0,18d4707,27532609914404866">章召忠</d>
    <d p="25.19800,1,25,16777215,1579622286,0,4dab6898,27532609931706368">mi24av</d>
    <d p="41.10100,1,25,16777215,1579622274,0,33d31036,27532609932230656">泪奔</d>
    <d p="627.69800,1,25,16777215,1579622264,0,d79a826a,27532609933279232">组建太空军</d>
    <d p="310.58900,1,25,16777215,1579622243,0,18d4707,27532609918074882">是未来史学派?</d>
    <d p="723.34800,1,25,16777215,1579622239,0,844fa9e7,27532609919123458">刘培强还行</d>
    …………
<i>
`,7))])])}const m=e(d,[["render",D]]),v=JSON.parse('{"path":"/docs/danmaku/history.html","title":"历史弹幕","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1704464133000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"lb-chc","username":"lb-chc","email":"69136546+lb-chc@users.noreply.github.com","commits":1,"url":"https://github.com/lb-chc"}],"changelog":[{"hash":"5d188bf9b209ca112581ee7f36ccd359f4a7953f","time":1704464133000,"email":"69136546+lb-chc@users.noreply.github.com","author":"lb-chc","message":"Update history.md (#927)"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/danmaku/history.md"}');export{m as comp,v as data};