以往一直使用 acdown 自带的 acplay 功能看 acfun 的视频, 然而 acdown 已经停止更新, 并且 acfun 又一次改版。。。
因此想继续用 acplay, 只能把A站的弹幕转换为B站的格式看了。
首先, 想要转换弹幕文件, 我们首先要下载解析出A站和B站的弹幕。 关于如何获取弹幕, 参见https://tiansh.github.io/的ASS 项目。 具体来说, 就是提取cid, 然后下载弹幕。
我借鉴了该项目下载弹幕的程序。 分别是:
A站
// 获取弹幕id
var getVid = function (callback) {
var player, m, vid = null;
try {
player = document.querySelector('iframe#ACFlashPlayer-re');
m = player.src.match(/vid=(\d+)/);
vid = Number(m[1]);
} catch (e) { }
if (!vid) try {
player = document.querySelector('object#ACFlashPlayer-re');
m = player.querySelector('param[name="flashvars"]').getAttribute('value').match(/videoId=(\d+)/);
vid = Number(m[1]);
} catch (e) { }
if (!vid) setTimeout(function () {
getVid(callback);
}, 1000); else callback(vid);
};
// 通过弹幕id获取弹幕内容
// 弹幕内容是A站直接提供的数据
var getDanmaku = function (vid, callback) {
GM_xmlhttpRequest({
'method': 'GET',
// FIXME 最后可能需要个弹幕上限,不过就先这样吧
'url': 'http://static.comment.acfun.mm111.net/' + vid,
'onload': function (resp) {
var data;
try {
data = JSON.parse(resp.responseText);
data = data.reduce(function (x, y) { return