A站弹幕接口

A站弹幕接口

目录

弹幕接口
查找vid号
获取所有弹幕
后记

一、弹幕接口

格式:'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.

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值