A站弹幕接口
目录
一、弹幕接口
↶
格式:'http://danmu.aixifan.com/V4/' + vid号 + '_2/4073558400000/1000?order=-1'
e.g.
测试视频:ac10103751
vid号:10099233
链接拼接:http://danmu.aixifan.com/V4/10099233_2/4073558400000/1000?order=-1
查看结果:
二、查找vid号
↶
1.打开视频页面,按F12,开启开发者工具(没有出现就再刷新页面)
2.选择
3.使用快捷键,Ctrl + F,开启快速查找,在浏览器底部出现这个即可
4.输入data-vid,就可以找到vid号,然后可以拼接链接
三、获取所有弹幕
↶
1.访问链接:http://danmu.aixifan.com/size/10099233
【PS.这个链接也是拼接而成:'http://danmu.aixifan.com/size/'+vid号
】
得到以下的结果:
从这里不难得出,4291就是视频弹幕池的总量(之后的访问数值就会变动,可自行尝试)
2.拼接出三个链接,分别访问
http://danmu.aixifan.com/V4/10099233_0/4073558400000/1000?order=-1
http://danmu.aixifan.com/V4/10099233_1/4073558400000/1000?order=-1
http://danmu.aixifan.com/V4/10099233_2/4073558400000/1000?order=-1
我们发现,第一个链接和第二个链接都是空的,而第三个链接就是我们上面拼接的,可以大致得出结论:链接中 0,1,2 分别对应上述数组中的 0,1,2 位置【大概是这样吧~】
3.链接中的1000代表了获取量,而1000正好是每次弹幕获取上限,4073558400000可以把它暂时当做时间戳,具体做法:
(1)因为有时间戳,可以编写一段转换代码,方便我们观察:
import time
def convert(timestamp):
time_local = time.localtime(timestamp)
format_time = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
return format_time
if __name__ == '__main__':
while True:
print(convert(int(input())))
(2)访问第三个链接,http://danmu.aixifan.com/V4/10099233_2/4073558400000/1000?order=-1
大致样式:
[[],[],[{"c":"123.383,16777215,1,25,1126931,1555049950,
7fd55085-b4ee-479d-8d46-18849a768a87","m":"我上大学的时候来过这里,我是西政的"},
...
{"c":"20.2230458,16777215,1,25,3516746,
1554995162,21b778b7-1940-4065-8e6b-8f98733ab323","m":"来了老弟先投蕉"}]]
(3)取第一条和最后一条弹幕的Unix戳,并进行转换
1555049950:2019-04-12 14:19:10
1554995162:2019-04-11 23:06:02
(4)将最后一条弹幕的Unix戳【即,1554995162】替换4073558400000,链接拼接结果为:http://danmu.aixifan.com/V4/10099233_2/1554995162/1000?order=-1
(5)访问上述链接,出现结果:
[[],[],[{"c":"48.999999999998842,16777215,1,25,10410722,1554995135,
9ac09cdb-b88a-4719-8a5b-0a0a330ef4ca","m":"老子放假了,你在哪"},
...
{"c":"153.77000000000521,16777215,1,25,284394,1554983294,
37d7b475-c68a-47ed-8e3d-5213b489369d","m":"✌️"}]]
(6)重复第三步,得到结果
1554995135:2019-04-11 23:05:35
1554983294:2019-04-11 19:48:14
(7)通过比对时间,我们发现可以通过这个方式,可以获取之前的弹幕。这样的话,通过每个弹幕文件的最后一条弹幕的Unix戳,就可以访问到之前时间的弹幕,以此类推,就可以获取所有的弹幕了。
四、后记
↶
Danmaku2ASS
的作者在xml2ass
中所写的:
# It is unwise to wrap a JSON object in an array!
# See this: http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx/
# Do never follow what Acfun developers did!
AcFun开发者果然厉害!
参考链接【能想出来的都是大佬,十分感谢】:截止2017/1/28还有效的AcFun弹幕解析方式
相关链接:B站弹幕接口
点我回顶部 ☚
Fin.