加载中…
正文 字体大小:

截止2017/1/28还有效的AcFun弹幕解析方式

(2017-01-28 20:50:05)
分类: 日记
为什么写这篇博客呢,是因为有人问我acfun的弹幕系统好像总是升级啊,怎么下载弹幕啊,黑科技什么的也总是失效。我笑着对他说,naive,人家可是每几个月就能上线一套新的弹幕系统哦,而且每次都能做到比以前更复杂更难用,这是需要非常深厚的技术实力的。至于升级后慢一点那也是正常现象的,请不要瞎黑人家。

所以我就花时间学习研究了一下目前最新最先进的acfun的弹幕下载/解析方式。当然由于acfun的弹幕系统时时都在升级更新的缘故,我只能保证这个解析方法在几天内是有效的,如果失效的话请不要来找我,我现在已经有点想吐了。


第一步,
获取html源代码,然后找到 data-vid="" 里面的数字,比如4783132,称为此视频的vid

第二步,
访问 http://danmu.aixifan.com/size/4783132
获得每个弹幕池的弹幕数量,会得到一个数组,一共有三个值,例如 [0,62,27076]

第三步,
分别访问这三个地址:
http://danmu.aixifan.com/V4/4783132_0/4073558400000/1000?order=-1
http://danmu.aixifan.com/V4/4783132_1/4073558400000/1000?order=-1
http://danmu.aixifan.com/V4/4783132_2/4073558400000/1000?order=-1
如果数组某个下标的值是0就不用访问了,比如这个包含4783132_0的地址就不用去访问
其中 4073558400000 应该是当前时间戳之类的东西,不能设置得太小了,因为这个东西居然还有别的用处,下面会说
1000是单次获取的弹幕上限,不知道取值范围是多少,最好保持原样

第四步,
对于数组里面值超过1000的,因为一次获取上限是1000,所以要再循环一次去获取所有的弹幕。
例如数组下标是2的,弹幕数量是27076,那么你先要发出个请求(上一步已经做了)
http://danmu.aixifan.com/V4/4783132_2/4073558400000/1000?order=-1

得到的json是类似这样的格式:
[[],[],[{"c":"1463.941,16777215,1,25,1555022,1485606726,105429ba-229c-4cd5-9afd-5b936dc85039","m":"又来"},{"c":"3397.784,16777215,1,25,1743025,1485606697,f3a83477-5225-4d1e-8989-8831656019c3","m":"我快死 了"},{"c":"42.739,16777215,1,25,917649,1485606673,1186cdfb-8193-4518-a5b2-1c3cf49821db","m":"我的箱子"},{"c":"5281.236,16724736,1,25,2943226,1485606658,6c6d72c8-0566-486a-a264-d6a9ae436ae7","m":"咳咳,我想到了EVA"},{"c":"924.301,16777215,1,25,10115189,1485606652,78cb39c1-d0d8-4363-8841-68edba0249eb","m":"23333333333333333333”},{"c":"10565.809,12268492,1,37,1656789,1485576143,6c67b265-1d20-4109-bc6d-dd76893fb279","m":"AC在,爱一直在,2017年1月28日12:02:35  YCC"},{"c":"1664.24,16777215,1,25,2226673,1485576093,9c455928-2503-4a0b-a0a9-d2070d9570ff","m":"流畅、流畅、流畅说三遍"}]]
一共1000条弹幕,具体格式我就不细解释了,a站一直是这个德行。注意我标出红色的部分,这个数字是弹幕的时间戳。
拿到json之后将它解析成弹幕的数组,然后按弹幕时间戳排个序,找到最小的那个时间戳数字。比如上面这个例子,最后那一条弹幕的时间戳是最小的 1485576093
那么接下来你要做的就是用这个数字替换URL中的旧时间戳,就能获得以这条弹幕为基准的,比它早的1000条弹幕了
http://danmu.aixifan.com/V4/4783132_2/1485576093/1000?order=-1

第五步,
循环呗,最终你只要再发出大概27次http请求,就能下载到此vid的所有弹幕了。
而且这个系统的设计决定了你只能一个一个线性下载解析弹幕文件,前一个弹幕下载完成前不能加载后面的弹幕文件,防止了你因为瞎用并发啊之类的技术造成数据错乱什么的错误,是不是特别方便特别友好呀~

截止2017/1/28还有效的AcFun弹幕解析方式

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

       

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有