[移植b站弹幕到其他视频1]读取bv、弹幕地址并分析 js油猴

该博客介绍了一个名为'bilibili-titlebar'的UserScript,用于从B站(Bilibili)获取番剧的弹幕信息。脚本通过检测视频元素并监听播放事件来获取BV号,然后使用这个BV号从API获取弹幕列表。弹幕数据被解析并按时间分组存储,便于进一步处理。此外,博客提供了详细的代码实现和匹配规则。
摘要由CSDN通过智能技术生成
// ==UserScript==
// @name         bilibili -  title bar
// @name:zh-CN   b 站 - 获取番剧弹幕
// @version      0.2
// @description  bilibili -  title bar 1day:读取番剧bv 1d:读取弹幕地址 1d:分析弹幕地址
// @author       p7
// @homepage     https://blog.csdn.net/qq_42616564/article/details/117711676
// @match        *://www.bilibili.com/bangumi/*
// @match        *://www.bilibili.com/video/*
// @require      https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
// ==/UserScript==



var player

detecH5Player()
function detecH5Player() {
      player = document.querySelector('video')
      if (player) {
        player.addEventListener('play', function () {
          getBV()          
       })} else {
        // 轮询检测
        setTimeout(function () {
          detecH5Player()
        }, 1000)
      }
  }


var bv
//getBV()
function getBV() {
  bv = $("a.av-link[target='_blank']")[0]
  if (bv) {
    //bv= $("a.av-link")[0]
    console.log(bv.innerText)
	getlist(bv.innerText)
  } else {
    setTimeout(function () {
    getBV()}, 500)
  }
}
function getlist(bvv) {

$.getJSON("https://api.bilibili.com/x/player/pagelist?bvid=" + bvv,function(result) {
  
  //console.log(result.data[0].cid); 
  //console.log(`https://api.bilibili.com/x/v1/dm/list.so?oid=${result.data[0].cid}`);
  //console.log('player.duration:' + parseInt(player.duration / 60)); 
  let minpool = new Array(parseInt(player.duration / 60));
  let minlen = minpool.length
  for(var a=0;a<=minlen;a++) {
    minpool[a]=[]
  }
  //minpool.length = parseInt(player.duration / 60)
  //console.log('minpool[6]:' + minpool[6]); 
  var xmlhtml = `https://api.bilibili.com/x/v1/dm/list.so?oid=${result.data[0].cid}` //`https://api.bilibili.com/x/v1/dm/list.so?oid=283060255`
      //ajax解析xml文件
      $.ajax({
        url: xmlhtml,
        dataType: "xml",
        success: function (data) {
          var $data = $(data);
          var $d = $data.find("d");
          var len=$d.length
          for(var i=0;i<len;i++) {
        //console.log($d.eq(i).text()+'|'+ $d.eq(i).attr("p"))
        let strp = $d.eq(i).attr("p")
        let arrp = strp.split(',');
   			let arrpJson = {"time":arrp[0], "type":arrp[1],"rgb":arrp[3],"pool":arrp[5],"text":$d.eq(i).text()};
        //console.log(arrp[0]+'  time:' + parseInt(arrp[0] / 60)); 
        //console.log(parseInt(arrp[0] / 60),arrpJson.time,arrpJson.type,arrpJson.rgb,arrpJson.pool,arrpJson.text)
        minpool[parseInt(arrp[0] / 60)].push(arrpJson)  
        console.log(minpool[parseInt(arrp[0] / 60)][0].text)
        i = i+ 1;
      } 

}})

});

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值