// ==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;
}
}})
});
}