acfun json 弹幕 转换 bilibili xml 弹幕

由于acdown停止更新,作者分享了如何将A站的JSON弹幕转换为B站XML弹幕的过程。首先,通过提取cid下载弹幕,然后使用Python进行转换。在转换过程中遇到编码问题,通过指定编码解决了读写文件时的字符编码错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以往一直使用 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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值