// ==UserScript==
// @name 解锁b站vip视频+弹幕移植
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACS0lEQVRYR8WXz2oTURTGv3MnpqhNKy1UWmxRTGdaiLSQRKkKIoK4FVrRPoHu7BMYn0B3+gQquuiuiC6kaFVsAhGEZkKqG/+Vrtp0YWsyR27KlEwz0xnnT3LgwjB37vl+97tzz9whdDiow/pwBCjofN0AJohwKQgkMxYF8Dmt0bxdnhaAQoWTXMczENJBhFvGMgqk4GY6SZXmPgvAmy/cnYijGqrwvmTVHSQup2jLvG0ByJf5EYDbUQIAeJxR6U4LQHGV1VodesTijfQxBdrkaSrL6z0Hlst8i4An7QBgYDar0lMrgM45ItxrCwDjflajnC+AtR8Gvn8zGpz9xwVOjor/Zma/ANt/GIsLNWxt8p7o4IiAmlLQP+C9pvkG+FoyUPxYs52xhFDPKIh3uRviG2ClWIdsTpHoJYymFNdliQzABBsaEZg4p+DwUftliRxAggwOC0xdidma1RaAI92Ea9OHOgcwPqlANruI1AElhsa2dBKXQJEBnDglGlvxWN/BNcE3gKyCS69b64AUlMISwEv4BpDJ3778i/Xfu5XQtFtaLq+9RiCA6gZj/dcuQN8Audod6kvodYZuz9k7UOK7JPDAbXAY/WxgLjtGDy2f408VPi8MLIUh4JbDELhwNknvLQDyQNoTh87AkFuCIP0E/NzcgWYeTC0bdrkNp6Lm9bc4YM4qr/NzEGaCzNJxLONFRqMbzf22JSu/wlcphhwzpsIAIcIHriGXGadX+/MdWDPflTjRxcH+kLYJhYtj5Piz4/0gF4YVNjk6DvAPDb0aMEr8/nEAAAAASUVORK5CYII=
// @version 1.12.3
// @description 功能很少有缺陷,先看粗体字再决定是否要安装。解除B站大会员观影限制,理论支持番剧和放映厅,不支持的视频请反馈留地址让我修复,或自行在代码搜索‘大会员’并添加识别div与语句。
// @author p7
// @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// @match https://www.bilibili.com/bangumi/*
// @match https://vip.parwix.com:4433/*
// @match https://z1.m1907.cn/*
// @match https://api.yueliangjx.com/*
// @match https://showxi.xyz/*
// @match https://okjx.cc/*
// @match https://www.cuan.la/*
// @run-at document-end
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_addStyle
// @namespace https://gf.qytechs.cn/users/789132
// ==/UserScript==
(function () {
/*1.11.6 mod区域*/
let originalInterfaceList = [{
"name": "Mao播放器",
"category": "1",
"url": " https://www.cuan.la/m3u8.php?url="
}, {
"name": "Parwix",
"category": "1",
"url": "https://vip.parwix.com:4433/player/?url="
},
{
"name": "m1907",
"category": "1",
"url": "https://z1.m1907.cn/?jx="
},
{
"name": "月亮",
"category": "1",
"url": "https://api.yueliangjx.com/?url="
},
{
"name": "showxi",
"category": "1",
"url": "https://showxi.xyz/mov/s/?sv=3&url=",
"special": "多线"
},
{
"name": "OK",
"category": "1",
"url": "https://okjx.cc/?url=",
"special": "多线"
},
];
/*mod区域结束*/
var CHANNEL_COUNT = 0
var MAX_DM_COUNT = 10
var player;
var playerRect;
var minpool = [];
var domPool = [];
var domtopdownPool = [];
var listobj
//1.11.6修复弹幕重复问题
let minpoolout = [];
let lastvideotime = 0;
//1.11.7全屏问题
//let lastplaywidth = 0;
//1.12.1 set
let dmblock_scroll;
let dmblock_top;
let dmblock_bottom;
let dmblock_color;
let dmblock_special;
let buiSwitch = 'true';
let repeatSlider = false;
let repeatP = 0; //去重概率[0-100]
let opacitySlider = false;
let opacityNum = 1;
let fontSize = 25;
let fontSizeSlider = false;
let dmspeed = 1;//0.5-1.5
let dmspeedSlider = false;
let dmArea = 1;
let dmAreaSlider = false;
var distance = 25
let xmlhtml;
//console.log(1, window.location.href)
//1.12.2修补设置图标
function xmlToJson(xml) {
// Create the return object
var obj = {};
if (xml.nodeType == 1) { // element
// do attributes
if (xml.attributes.length > 0) {
obj["@attributes"] = {};
for (var j = 0; j < xml.attributes.length; j++) {
var attribute = xml.attributes.item(j);
obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
}
}
} else if (xml.nodeType == 3) { // text
obj = xml.nodeValue;
}
// do children
if (xml.hasChildNodes()) {
for (var i = 0; i < xml.childNodes.length; i++) {
var item = xml.childNodes.item(i);
var nodeName = item.nodeName;
if (typeof (obj[nodeName]) == "undefined") {
obj[nodeName] = xmlToJson(item);
} else {
if (typeof (obj[nodeName].push) == "undefined") {
var old = obj[nodeName];
obj[nodeName] = [];
obj[nodeName].push(old);
}
obj[nodeName].push(xmlToJson(item));
}
}
}
return obj;
};
//1.11.7 稳定发送
function postdownmessage(obj) {
for (var posta = 0; posta <= 3; posta++) {
try {
window.frames[posta].postMessage(obj, '*');
} catch { }
for (var postb = 0; postb <= 3; postb++) {
try {
window.frames[posta].frames[postb].postMessage(obj, '*');
} catch { }
for (var postc = 0; postc <= 3; postc++) {
try {
window.frames[posta].frames[postb].frames[postc].postMessage(obj, '*');
} catch { }
}
}
}
}
function getBV() {
let bv = $("a.av-link[target='_blank']")[0]
if (bv) {
//console.log(bv.innerText);
$.getJSON("https://api.bilibili.com/x/player/pagelist?bvid=" + bv.innerText,
function (result) {
xmlhtml = `https://api.bilibili.com/x/v1/dm/list.so?oid=${result.data[0].cid}`
//ajax解析xml文件
console.log(xmlhtml);
$.ajax({
url: xmlhtml,
dataType: "xml",
success: function (xml) {
//console.log('xmllist', xmlToJson(xml));
let listjson = xmlToJson(xml)
//console.log($('.bilibili-player-video-info-danmaku-number'), listjson.i.d.length)
$('.bilibili-player-video-info-danmaku-number').text(listjson.i.d.length)
//console.log(window.frames.length, listjson.i.d.length);
postdownmessage({
obj: listjson,
str: 'xmllist'
})
}
})
})
} else {
setTimeout(function () {
getBV()
},
500)
}
}
function receiveInfoFromAnotherDomain() {
//首先让window添加一个事件监听函数,表明它可以监听窗口对象的message事件
//它受到事件时,会先判断是否来自指定的Domain(不是所有Domain丢过来的事件它都处理的)
window.addEventListener("message",
function (ev) {
switch (window.location.host) {
case 'www.bilibili.com':
//console.log(ev.origin, ' message to', window.location.href, ev.data);
if (ev.origin != 'https://www.bilibili.com' && ev.origin != 'https://message.bilibili.com') {
console.log(ev.origin, ' message to', window.location.href, ev.data);
if (ev.data.str == 'hasplayer') {
getBV()
}
}
break
default:
window.top.postMessage({
fromweb: window.location.href,
obj: ev.data,
str: '来自iframe:',
from: ev.origin
},
'*');
switch (ev.data.str) {
case 'xmllist':
listobj = ev.data.obj;
break;
case 'checktrue':
buiSwitch = 'true';
break;
case 'checkfalse':
buiSwitch = 'false';
break;
case 'scrollon':
dmblock_scroll = 'on';
//1.12.2点击隐藏滚动弹幕
for (let i = 0; i < CHANNEL_COUNT; i++) {
for (let j = 0; j < domPool[i].length; j++) {
$(domPool[i][j]).show();
}
}
break;
case 'scrolloff':
dmblock_scroll = 'off';
//1.12.2点击隐藏滚动弹幕
for (let i = 0; i < CHANNEL_COUNT; i++) {
for (let j = 0; j < domPool[i].length; j++) {
$(domPool[i][j]).hide();
}
}
break;
case 'topon':
dmblock_top = 'on';
break;
case 'topoff':
dmblock_top = 'off';
break;
case 'bottomon':
dmblock_bottom = 'on';
break;
case 'bottomoff':
dmblock_bottom = 'off';
break;
case 'coloron':
dmblock_color = 'on';
break;
case 'coloroff':
dmblock_color = 'off';
break;
case 'repeatP':
repeatP = ev.data.p;
break;
case 'opacityNum':
opacityNum = ev.data.p;
setdomOpacity();
break;
case 'fontSize':
fontSize = ev.data.p;
setdomFontsize();
break;
case 'dmspeed':
dmspeed = ev.data.p;
break;
case 'dmArea':
dmArea = ev.data.p;
refreshDom()
break;
}
}
})
window.top.postMessage({
fromweb: window.location.href,
obj: 'iframe监听初始化',
str: '来自iframe:',
},
'*');
}
function detecH5Player(findplayertime) {
player = document.querySelector('video');
if (player) {
//console.log(window.location.href+'发现h5')
receiveInfoFromAnotherDomain();
window.top.postMessage({
str: 'hasplayer',
fromweb: window.location.href
},
'*');
playerRect = player.getBoundingClientRect();
initcss();
player.addEventListener('pause',
function () { //暂停开始执行的函数
$('.left').each(function (index, element) {
element.style.willChange = 'auto'
let domRect = element.getBoundingClientRect();
let domLeft = domRect.left - playerRect.left;
$(element).css('transform', `translateX(${domLeft}px)`);
//element.style.left = `${domLeft}px`
$(element).css('transition', `transform 0s linear`);
})
});
//1.11.7
document.addEventListener("fullscreenchange", function (e) {
refreshDom() //player.clientWidth-lastplaywidth
})
//lastplaywidth = player.clientWidth
player.addEventListener('playing',
function () { //暂停开始执行的函数
playtime = (new Date()).getTime()
$('.left').each(function (index, element) {
let domRect = element.getBoundingClientRect()
let domLeft = domRect.left - playerRect.left
let oldS = element.clientWidth + player.clientWidth
let newS = element.clientWidth + domLeft
let oldT = 0.0074 * (element.clientWidth + player.clientWidth) / dmspeed
let newT = newS / oldS * oldT
//console.log(element.clientWidth+','+player.clientWidth+','+oldS+','+newS+','+oldT+','+newT)
$(element).css('transition', `transform ${newT}s linear`);
$(element).addClass('left');
element.style.willChange = 'transform'
//element.style.transform = `translateX(${-element.clientWidth - newS}px)`;
element.style.transform = `translateX(${-element.clientWidth}px)`;
})
});
player.addEventListener('timeupdate',
function () {
//window.top.postMessage({obj:'currentTime1:'+player.currentTime+' '+listobj.i.d.length+' '+minpool.length,str:'来自iframe:',from:window.location.href},'*');
//window.top.postMessage({obj:'currentTime1:'+player.currentTime+' '+ domPool.length+' '+ buiSwitch+' '+minpool.length ,str:'来自iframe:',from:window.location.href},'*');
//1.11.6 修复弹幕重复、前进后退清屏、后退重载弹幕
let lastlen = parseInt(lastvideotime / 60)
let startlen = parseInt(player.currentTime / 60)
if (lastvideotime > player.currentTime) {
for (var c = startlen; c <= lastlen; c++) {
if (minpoolout[c].length != 0) {
minpool[c] = minpool[c].concat(minpoolout[c])
minpoolout[c].length = 0
}
}
refreshDomscreen()
} else if (lastvideotime + 2 < player.currentTime) {
refreshDomscreen()
}
lastvideotime = player.currentTime
if (minpool.length == 0 && listobj) {
minpool = new Array(parseInt(player.duration / 60));
let minlen = minpool.length
for (var a = 0; a <= minlen; a++) {
minpool[a] = []
}
minpoolout = new Array(minlen);
for (var b = 0; b <= minlen; b++) {
minpoolout[b] = []
}
let len = listobj.i.d.length
//window.top.postMessage({obj:'listobj.i.d.length:'+listobj.i.d.length,str:'来自iframe:',from:window.location.href},'*');
for (var j = 0; j < len; j++) {
let strp = listobj.i.d[j]['@attributes'].p
let arrp = strp.split(',');
let arrpJson = {
"time": arrp[0],
"type": arrp[1],
"size": arrp[2],
"rgb": arrp[3],
"pool": arrp[5],
"text": listobj.i.d[j]['#text']
};
try {
minpool[parseInt(arrp[0] / 60)].push(arrpJson);
} catch { }
/*
if (repeatP == 100 || repeatP > Math.floor(Math.random() * 100)) {
let len2 = minpool[parseInt(arrp[0] / 60)].length
let needpush = true
for (var i = 0; i < len2; i++) {
if (minpool[parseInt(arrp[0] / 60)][i].text == arrpJson.text&&minpool[parseInt(arrp[0] / 60)][i].time-arrpJson.time<1) {
needpush = false;
break;
}
}
if (needpush == true) {
try {
minpool[parseInt(arrp[0] / 60)].push(arrpJson);
} catch {}
}
} else {
try {
minpool[parseInt(arrp[0] / 60)].push(arrpJson);
} catch {}
}*/
/*window.top.postMessage({
obj: 'minpool push:' + minpool[parseInt(arrp[0] / 60)][minpool[parseInt(arrp[0] / 60)].length - 1],
str: '来自iframe:',
from: window.location.href
}, '*');*/
}
}
//window.top.postMessage({obj:'currentTime:'+player.currentTime+' '+minpool.length+' '+domPool.length,str:'来自iframe:',from:window.location.href},'*');
$('.topdown').each(function (index, element) {
if (element.innerText != '') {
let nowtime = (new Date()).getTime();
let lasttime = parseInt(nowtime) - parseInt($(element).prop("name"))
//console.log('lasttime:'+lasttime+' '+typeof lasttime);
if (lasttime >= 4500) {
//console.log('lasttime2:'+lasttime+' '+typeof lasttime);
element.innerText = ''
element.name = ''
}
}
});
//window.top.postMessage({obj:buiSwitch.prop("checked"),str:'来自iframe:',from:window.location.href},'*');
if (minpool.length != 0 && domPool.length != 0 && buiSwitch == 'true') {
let channel;
let nowlen = parseInt(player.currentTime / 60);
//console.log('currentTime:'+player.currentTime);
//window.top.postMessage({ obj: 'currentTime:' + player.currentTime + ' ' + minpool[nowlen].length, str: '来自iframe:', from: window.location.href }, '*');
if (!$(player).paused) {
for (var j = minpool[nowlen].length - 1; j > -1; j--) {
//console.log('pool:'+minpool[nowlen][j].pool)
//window.top.postMessage({obj:minpool[nowlen][j],str:'来自iframe:',from:window.location.href},'*');
if (minpool[nowlen][j].time >= player.currentTime && minpool[nowlen][j].time <= player.currentTime + 0.5 && minpool[nowlen][j].type == '1' && dmblock_scroll != 'off') {
if (minpool[nowlen][j].rgb != '16777215' && dmblock_color == 'off') {
continue
}
//1.12.3 重复判断
if (repeatP == 100 || repeatP > Math.floor(Math.random() * 100)) {
let len2 = minpoolout[nowlen].length
//let needpush = true
for (var i = 0; i < len2; i++) {
if (minpoolout[nowlen][i].text == minpool[nowlen][j].text && minpoolout[nowlen][i].time - minpool[nowlen][j].time < 1) {
//console.log('重复')
continue;
}
}
}
channel = getChannel()
//console.log('channel:' + channel)
if (channel != -1) {
let arrpJson = minpool[nowlen][j]
//console.log(minpool[nowlen][j].time+','+player.currentTime+' biu~ [' + minpool[nowlen][j].text + ']');
let dom = domPool[channel].shift() //把数组的第一个元素从其中删除
domPool[channel].push(dom); //向数组的末尾添加一个或多个元素
shootDanmu(dom, arrpJson, channel);
minpoolout[nowlen].push(minpool[nowlen][j])
minpool[nowlen].splice(j, 1);
}
} else if (minpool[nowlen][j].time >= player.currentTime && minpool[nowlen][j].time <= player.currentTime + 0.5 && minpool[nowlen][j].type != '1') {
if (minpool[nowlen][j].type == '4' && dmblock_bottom == 'off') {
continue;
}
if (minpool[nowlen][j].type == '5' && dmblock_top == 'off') {
continue;
}
if (minpool[nowlen][j].rgb != '16777215' && dmblock_color == 'off') {
continue;
}
//1.12.3 重复判断
if (repeatP == 100 || repeatP > Math.floor(Math.random() * 100)) {
let len2 = minpoolout[nowlen].length
//let needpush = true
for (var i = 0; i < len2; i++) {
if (minpoolout[nowlen][i].text == minpool[nowlen][j].text && minpoolout[nowlen][i].time - minpool[nowlen][j].time < 1) {
continue;
}
}
}
channel = gettopdownChannel(minpool[nowlen][j].type);
//console.log('gettopdownChannel:' + channel);
if (channel != -1) {
let arrpJson = minpool[nowlen][j]
//console.log(minpool[nowlen][j].time+','+player.currentTime+' biu~ [' + danmu + ']');
let dom = domtopdownPool[channel];
shoottopdownDanmu(dom, arrpJson, channel);
minpoolout[nowlen].push(minpool[nowlen][j])
minpool[nowlen].splice(j, 1);
}
}
}
}
} else if (buiSwitch == 'false') {
refreshDomscreen();
}
})
} else {
// 轮询检测
setTimeout(function () {
//console.log(window.location.href + '开始检测h5', findplayertime, new Date().getTime() - findplayertime);
if (new Date().getTime() - findplayertime <= 5000) {
detecH5Player(findplayertime)
}
},
500)
}
}
function refreshDomscreen() {
//1.11.6 清除在场弹幕
$('.left').each(function (index, element) {
$(element).css('transition', `transform 0s linear`);
$(element).addClass('right');
element.style.left = 0
element.style.willChange = 'transform'
element.style.transition = null;
element.style.willChange = 'auto'
element.style.transform = `translateX(${player.clientWidth}px)`
//element.style.left = `${player.clientWidth}px`
element.innerText = ''
element.className = 'right';
})
for (let i = 0; i < CHANNEL_COUNT; i++) {
try { domtopdownPool[i].innerText = '' } catch { }
}
$('.right').each(function (index, element) {
element.style.left = 0
element.style.transform = `translateX(${player.clientWidth}px)`
})
$('.left').each(function (index, element) {
//element.removeEventListener('transitionend', recoverLiftdom(element));
//element.addEventListener('transitionend', recoverLiftdom(element));
})
}
let scroll_on = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM11 9h6a1 1 0 010 2h-6a1 1 0 010-2zm-3 2H6V9h2v2zm4 4h-2v-2h2v2zm9 0h-6a1 1 0 010-2h6a1 1 0 010 2z">
</path>
</svg></span>`
let scroll_off = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 15c1.487 0 2.866.464 4 1.255V7a4 4 0 00-4-4H5a4 4 0 00-4 4v14a4 4 0 004 4h11.674A7 7 0 0123 15zM11 9h6a1 1 0 010 2h-6a1 1 0 010-2zm-3 2H6V9h2v2zm4 4h-2v-2h2v2zm2-1a1 1 0 011-1h1a1 1 0 010 2h-1a1 1 0 01-1-1z">
</path>
<path
d="M26.536 18.464a5 5 0 00-7.071 0 5 5 0 000 7.071 5 5 0 107.071-7.071zm-5.657 5.657a3 3 0 01-.586-3.415l4.001 4.001a3 3 0 01-3.415-.586zm4.829-.827l-4.001-4.001a3.002 3.002 0 014.001 4.001z">
</path>
</svg></span>`
let top_on = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM9 9H7V7h2v2zm4 0h-2V7h2v2zm4 0h-2V7h2v2zm4 0h-2V7h2v2z">
</path>
</svg></span>`
let top_off = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 15c1.487 0 2.866.464 4 1.255V7a4 4 0 00-4-4H5a4 4 0 00-4 4v14a4 4 0 004 4h11.674A7 7 0 0123 15zm-4-8h2v2h-2V7zM9 9H7V7h2v2zm4 0h-2V7h2v2zm2-2h2v2h-2V7z">
</path>
<path
d="M26.536 18.464a5 5 0 00-7.071 0 5 5 0 000 7.071 5 5 0 107.071-7.071zm-5.657 5.657a3 3 0 01-.586-3.415l4.001 4.001a3 3 0 01-3.415-.586zm4.829-.827l-4.001-4.001a3.002 3.002 0 014.001 4.001z">
</path>
</svg></span>`
let bottom_on = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM9 21H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2z">
</path>
</svg></span>`
let bottom_off = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 15c1.487 0 2.866.464 4 1.255V7a4 4 0 00-4-4H5a4 4 0 00-4 4v14a4 4 0 004 4h11.674A7 7 0 0123 15zM9 21H7v-2h2v2zm4 0h-2v-2h2v2z">
</path>
<path
d="M26.536 18.464a5 5 0 00-7.071 0 5 5 0 000 7.071 5 5 0 107.071-7.071zm-5.657 5.657a3 3 0 01-.586-3.415l4.001 4.001a3 3 0 01-3.415-.586zm4.829-.827l-4.001-4.001a3.002 3.002 0 014.001 4.001z">
</path>
</svg></span>`
let color_on = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M17.365 11.118c0-.612-.535-1.147-1.147-1.147s-1.147.535-1.147 1.147c0 .611.535 1.147 1.147 1.147s1.147-.536 1.147-1.147zM12.93 9.665c-.764 0-1.376.611-1.376 1.3 0 .689.612 1.301 1.376 1.301s1.376-.612 1.376-1.301-.612-1.3-1.376-1.3zM9.794 11.883c-.764 0-1.376.612-1.376 1.3 0 .689.612 1.3 1.376 1.3s1.376-.611 1.376-1.3c.001-.688-.611-1.3-1.376-1.3zM10.023 15.171c-.612 0-1.147.536-1.147 1.148 0 .611.535 1.146 1.147 1.146s1.147-.535 1.147-1.146c.001-.612-.535-1.148-1.147-1.148zM17.823 12.953c-.611 0-1.147.535-1.147 1.147s.536 1.147 1.147 1.147c.612 0 1.148-.535 1.148-1.147s-.536-1.147-1.148-1.147z">
</path>
<path
d="M23.177 3H4.824C2.683 3 1 4.833 1 7.167v13.665C1 23.167 2.683 25 4.824 25h18.353C25.318 25 27 23.167 27 20.833V7.167C27 4.833 25.318 3 23.177 3zm-3.442 13.624c-1.987.612-4.129-.154-5.046.764-.918.918 1.529 1.606 0 2.219-1.988.84-7.341-.535-8.182-4.053-.841-3.441 2.905-6.5 5.888-7.035 2.906-.535 6.041.841 8.181 2.982 2.065 2.141.765 4.74-.841 5.123z">
</path>
</svg></span>`
let color_off = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M17.823 15.247c.612 0 1.148-.535 1.148-1.147s-.536-1.147-1.148-1.147c-.611 0-1.147.535-1.147 1.147s.536 1.147 1.147 1.147zM17.365 11.118c0-.612-.535-1.147-1.147-1.147s-1.147.535-1.147 1.147c0 .611.535 1.147 1.147 1.147s1.147-.536 1.147-1.147z">
</path>
<path
d="M18.235 16.872c-1.483.086-2.859-.172-3.546.516-.918.918 1.529 1.606 0 2.219-1.988.84-7.341-.535-8.182-4.053-.841-3.441 2.905-6.5 5.888-7.035 2.906-.535 6.041.841 8.181 2.982 1.208 1.253 1.265 2.663.782 3.694A6.938 6.938 0 0123 15c1.487 0 2.866.464 4 1.255V7.167C27 4.833 25.318 3 23.177 3H4.824C2.683 3 1 4.833 1 7.167v13.665C1 23.167 2.683 25 4.824 25h11.85A6.97 6.97 0 0116 22c0-2.025.86-3.85 2.235-5.128z">
</path>
<path
d="M8.876 16.319c0 .611.535 1.146 1.147 1.146s1.147-.535 1.147-1.146c0-.612-.535-1.148-1.147-1.148s-1.147.536-1.147 1.148zM9.794 11.883c-.764 0-1.376.612-1.376 1.3 0 .689.612 1.3 1.376 1.3s1.376-.611 1.376-1.3c.001-.688-.611-1.3-1.376-1.3zM11.553 10.965c0 .689.612 1.301 1.376 1.301s1.376-.612 1.376-1.301-.612-1.3-1.376-1.3-1.376.611-1.376 1.3zM26.536 18.464a5 5 0 00-7.071 0 5 5 0 000 7.071 5 5 0 107.071-7.071zm-5.657 5.657a3 3 0 01-.586-3.415l4.001 4.001a3 3 0 01-3.415-.586zm4.829-.827l-4.001-4.001a3.002 3.002 0 014.001 4.001z">
</path>
</svg></span>
`
let special_on = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM7.849 11.669l.447-.828.492.782.894.184-.536.736.134.966-.85-.321-.804.414.045-.967L7 11.946l.849-.277zm3.352 7.101l-1.43-.506L8.43 19v-1.565L7.357 16.33l1.43-.506.67-1.381.894 1.289 1.475.23-.894 1.289.269 1.519zm7.95-3.9l-2.816-.69-2.458 1.565-.223-2.946-2.145-1.933 2.637-1.151L15.263 7l1.877 2.255 2.86.23-1.52 2.531.671 2.854z">
</path>
</svg></span>`
let special_off = `
<span class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 15c1.487 0 2.866.464 4 1.255V7a4 4 0 00-4-4H5a4 4 0 00-4 4v14a4 4 0 004 4h11.674A7 7 0 0123 15zM7.849 11.669l.447-.828.492.782.894.184-.536.736.134.966-.85-.321-.804.414.045-.967L7 11.946l.849-.277zm3.352 7.101l-1.43-.506L8.43 19v-1.565L7.357 16.33l1.43-.506.67-1.381.894 1.289 1.475.23-.894 1.289.269 1.519zm2.453-5.971l-2.145-1.933 2.637-1.151L15.263 7l1.877 2.255 2.86.23-1.52 2.531.67 2.854-2.816-.69-2.458 1.565-.222-2.946z">
</path>
<path
d="M26.536 18.464a5 5 0 00-7.071 0 5 5 0 000 7.071 5 5 0 107.071-7.071zm-5.657 5.657a3 3 0 01-.586-3.415l4.001 4.001a3 3 0 01-3.415-.586zm4.829-.827l-4.001-4.001a3.002 3.002 0 014.001 4.001z">
</path>
</svg></span>
`
function initcss() {
let css = `.right {
position: absolute;
visibility: hidden;
white - space: nowrap;
/*left: 700px;
transform: translateX(700px);*/
}.left {
position: absolute;
white - space: nowrap;
user - select: none;
/* transition: transform 7s linear; 时间相同 越长的弹幕滑动距离越长 所以越快~ */
}.topdown {
position: absolute;
white - space: nowrap;
user - select: none;
}`
GM_addStyle(css);
refreshDom();
}
function refreshDom() {
let nowCHANNEL_COUNT = Math.floor((player.clientHeight / fontSize - 1)*dmArea);
window.top.postMessage({
obj: { a: 'refreshDom', b: nowCHANNEL_COUNT - CHANNEL_COUNT, c: fontSize },
str: '来自iframe:',
from: window.location.href
}, '*');
if (nowCHANNEL_COUNT - CHANNEL_COUNT > 0) {
// 先new一些span 重复利用这些DOM
//for (let j = nowCHANNEL_COUNT; j > CHANNEL_COUNT; j--) {
for (let j = 0; j < nowCHANNEL_COUNT - CHANNEL_COUNT; j++) {
let doms = [];
for (let i = 0; i < MAX_DM_COUNT; i++) {
// 要全部放进player
let dom = document.createElement('div');
//alert(fontSize)
//dom.style.fontSize = fontSize + 'px';
dom.style.color = 'rgb(255,255,255)';
dom.style.fontFamily = 'SimHei, "Microsoft JhengHei", Arial, Helvetica, sans-serif'
dom.style.fontWeight = 'bold'
dom.style.opacity = '1' //不透明度
dom.style.textShadow = 'rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px';
dom.style.transform = `translateX(${player.clientWidth}px)`
//dom.style.left = `${player.clientWidth}px`
dom.style.willChange = 'auto'
// 初始化dom的位置 通过设置className
dom.className = 'right';
// DOM的通道是固定的 所以设置好top就不需要再改变了
//dom.style.top = (-j + Math.floor(player.clientHeight / fontSize) + 1) * fontSize + 'px';
dom.style.top = j * fontSize + 'px';
player.parentNode.appendChild(dom);
// 放入改通道的DOM池
doms.push(dom);
// 每次到transition结束的时候 就是弹幕划出屏幕了 将DOM位置重置 再放回DOM池
//dom.addEventListener('transitionend', recoverLiftdom(dom));
dom.addEventListener('transitionend', () => {
dom.style.transition = null;
dom.style.willChange='auto'
dom.style.transform=`translateX(${player.clientWidth}px)`
dom.innerText =''
dom.className = 'right';
});
}
domPool.push(doms);
//domPool.unshift(doms);
window.top.postMessage({
obj: { a: 'domPool', b: domPool.length },
str: '来自iframe:',
from: window.location.href
}, '*');
let dom2 = document.createElement('div');
dom2.style.fontSize = fontSize + 'px';
dom2.style.color = 'rgb(255,255,255)';
dom2.style.fontFamily = 'SimHei, "Microsoft JhengHei", Arial, Helvetica, sans-serif'
dom2.style.fontWeight = 'bold'
dom2.style.opacity = '1' //不透明度
dom2.style.textShadow = 'rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px';
dom2.style.willChange = 'auto'
//dom2.style.top = (-j + Math.floor(player.clientHeight / fontSize) + 1) * fontSize + 'px';
dom2.style.top = j * fontSize + 'px';
dom2.style.left = `${(player.clientWidth - dom2.clientWidth) / 2}px`;
dom2.className = 'topdown';
player.parentNode.appendChild(dom2);
domtopdownPool.push(dom2);
//domtopdownPool.unshift(dom2);
}
} else {
//1.11.7 删除多余dom
CHANNEL_COUNT = nowCHANNEL_COUNT
for (let j2 = nowCHANNEL_COUNT; j2 < CHANNEL_COUNT; j2++) {
for (let i2 = 0; i2 < MAX_DM_COUNT; i2++) {
let thisdom = domPool[j2][i2]
thisdom.parentNode.removeChild(thisdom)
}
domPool[j2].length = 0
domPool.splice(j2, 1);
//refreshDomscreen()
let thistopdowndom = domtopdownPool[j2]
thistopdowndom.parentNode.removeChild(thistopdowndom)
domtopdownPool.splice(j2, 1);
}
}
CHANNEL_COUNT = nowCHANNEL_COUNT
/*//1.11.7 修改弹幕默认位置
$('.right').each(function (index, element) {
element.style.transform = `translateX(${player.clientWidth}px)`
})
$('.left').each(function (index, element) {
element.removeEventListener('transitionend',recoverLiftdom(element));
element.addEventListener('transitionend',recoverLiftdom(element));
})
$('.topdown').each(function (index, element) {
element.style.left = `${(player.clientWidth - element.clientWidth) / 2}px`;
})*/
//refreshDomscreen()
let refreshDom_time = parseInt(player.currentTime / 60)
if (minpool.length != 0) {
minpool[refreshDom_time] = minpool[refreshDom_time].concat(minpoolout[refreshDom_time])
minpoolout[refreshDom_time].length = 0
}
}
function recoverLiftdom(dom) {
dom.style.transition = null;
dom.style.willChange = 'auto'
dom.style.transform = `translateX(${player.clientWidth}px)`
//dom.style.left = `${player.clientWidth}px`
dom.innerText = ''
dom.className = 'right';
}
/**
* 获取一个可以发射弹幕的通道 没有则返回-1
*/
function getChannel() {
for (let i = 0; i < CHANNEL_COUNT; i++) {
for (let j = 0; j < domPool[i].length; j++) {
let thisdom = domPool[i][j]
let domRect = thisdom.getBoundingClientRect();
if(domRect.right<=playerRect.left){
recoverLiftdom(domPool[i][j])
}
}
}
for (let i = 0; i < CHANNEL_COUNT; i++) {
let lastNumPos = domPool[i].length - 1
let lastDom = domPool[i][lastNumPos];
//console.log('lastDom:'+lastDom)
if (lastDom) {
if (lastDom.className == 'right') {
//console.log('捷径')
return i
}
let lastDomPos = lastDom.getBoundingClientRect();
//console.log('lastDomPos.right:'+lastDomPos.right+'playerRect.right:'+playerRect.right)
// 轨道中最后一个元素要求已经全部进入展示区域
if (lastDomPos.right > playerRect.right) {
continue
}
let occupyS = lastDomPos.right - playerRect.left
//console.log('playerRect.left:'+occupyS+'player.clientWidth:'+player.clientWidth)
// 追及问题
if (player.clientWidth - occupyS < distance) {
continue
}
for (let j = 0; j < domPool[i].length; j++) {
if (domPool[i][j].className == 'right') {
return i
}
}
}
}
return -1;
}
function gettopdownChannel(type) {
for (let i = 0; i < CHANNEL_COUNT; i++) {
if (type == 4) {
let lastNumPos = domtopdownPool.length - i - 1
let downDom = domtopdownPool[lastNumPos];
if (downDom.innerText == '') {
return i
}
} else if (type == 5) {
let lastNumPos2 = i
let topDom = domtopdownPool[lastNumPos2];
if (topDom.innerText == '') {
return i
}
}
}
return -1;
}
/**
* 根据DOM和弹幕信息 发射弹幕
*/
function shootDanmu(dom, arrpJson, channel) {
dom.innerText = arrpJson.text;
console.log(' biu1~ [' + arrpJson.text + ']' + channel, 0.0074 * (dom.clientWidth + player.clientWidth) / dmspeed);
let num16 = parseInt(arrpJson.rgb).toString(16);
dom.style.color = '#' + (Array(6).join(0) + num16).slice(-6);
dom.style.fontSize = arrpJson.size * fontSize / 25 + 'px';
// 如果为每个弹幕设置 transition 可以保证每个弹幕的速度相同 这里没有保证速度相同
dom.style.transition = `transform ${0.0074 * (dom.clientWidth + player.clientWidth) / dmspeed}s linear`;
// 设置弹幕的位置信息 性能优化 left -> transform
//dom.style.transform = `translateX(${-dom.clientWidth - player.clientWidth}px)`;
dom.style.transform = `translateX(${-dom.clientWidth}px)`;
dom.style.willChange = 'transform';
dom.className = 'left';
}
function shoottopdownDanmu(dom, arrpJson, channel) { //1.11.5 格式化居然把这function丢失了
dom.innerText = arrpJson.text;
dom.name = new Date().getTime();
console.log(' biu2~ [' + arrpJson.text + ']' + channel);// + channel
let num16 = parseInt(arrpJson.rgb).toString(16);
dom.style.fontSize = arrpJson.size * fontSize / 25 + 'px';
dom.style.color = '#' + (Array(6).join(0) + num16).slice(-6);
//dom.style.transform = `translateX(${(player.clientWidth - dom.clientWidth) / 2}px)`;
dom.style.left = `${(player.clientWidth - dom.clientWidth) / 2}px`;
}
var $ = $ || window.$;
/**
* 共有方法
*/
function commonFunction() {
this.GMgetValue = function (name, value) { //得到存在本地的数据
return GM_getValue(name, value);
};
this.GMsetValue = function (name, value) { //设置存在本地的数据
return GM_setValue(name, value);
};
this.addScript = function (url) { //添加脚本
var s = document.createElement('script');
s.setAttribute('src', url);
document.body.appendChild(s);
};
}
//全局统一变量
const commonFunctionObject = new commonFunction();
/**
* 超级解析助手
* @param {Object} originalInterfaceList
* @param {Object} playerNodes
*/
function superVideoHelper() {
this.originalInterfaceList = originalInterfaceList;
this.node = "#player_module";
this.innerParse = function (url) { //内嵌解析
$("#iframe-player").attr("src", url);
};
this.operatOther = function () {
switch (window.location.host) {
case 'www.bilibili.com':
receiveInfoFromAnotherDomain();
//this.addHtmlElements();
//console.log("检测是否为vip视频");
let findviptime = new Date().getTime();
let waitlimit = setInterval(() => {
let viptextArr = [$(".bpx-player-toast-confirm").text(), $(".twp-title").text(), $(".video-float-hint-btn.hint-red").text(), $('.new-twp-btn.right.vip.blue').children('.current').text()];
let vipmatchArr = ['成为大会员', '付费观看', '成为大会员抢先看', '开通大会员观看'];
//let arr2=['成为大会员', '开通大会员观看','正在观看预览,大会员免费看全片', '正在观看预览,付费观看完整版']
let intersection = viptextArr.filter(item => new Set(vipmatchArr).has(item))
//console.log(arr1,arr2,intersection);
if (intersection.length != 0) {
console.log("是vip视频");
this.videoreplace();
clearInterval(waitlimit);
}
if (new Date().getTime() - findviptime >= 5000) {
clearInterval(waitlimit)
}
},
250);
//1.12.1 预防不能解锁vip视频的情况
//this.bottomArea()
this.addHtmlElements()
break
default:
try {
detecH5Player(new Date().getTime())
} catch (err) {
console.log('h5:' + err)
}
break
}
}
this.videoreplace = function () {
//let safediv = window.document.querySelector("#player_placeholder")
//1.11.6 修复m1907存在滚动条(才发现是滚动条) 修复基础不扎实且手贱导致的全屏问题
let videoPlayer = $("<div id='iframe-play-div' style='width:100%;height:92.675%;z-index:1000;'><iframe id='iframe-player' allowfullscreen='true' frameborder='0' width='100%' height='100%' scrolling='no'></iframe></div>");
let index = commonFunctionObject.GMgetValue("index");
//1.12.1 修复接口记忆
if (index == null) {
index = '0'
commonFunctionObject.GMsetValue("index", '0');
}
let url2 = this.originalInterfaceList[index].url + window.location.href;
//console.log(index, url2);
if (document.getElementById("iframe-player") == null) {
//1.11.5 尝试修复多重视频声音 www.cnblogs.com/dzyany/p/14187782.html
let playerb = document.querySelector('video');
if (playerb) {
playerb.pause();
//console.log('playerb.pause');
playerb.addEventListener('timeupdate', function () {
playerb.pause();
//console.log('3playerb.pause');
})
playerb.removeAttribute('src');
playerb.currentSrc = '';
playerb.innerHTML = '';
}
let playera = $(this.node);
//console.log(playera)
playera.empty();
playera.append(videoPlayer);
//1.11.5添加底部区域 1.11.8修复底栏层次问题
this.bottomArea()
}
this.innerParse(url2);
//1.11.5 修复移除vip提示bug
let removetime = new Date().getTime();
let waitlimit = setInterval(() => {
$(".player-limit-mask").remove();
$(".player-limit-mask pay").remove();
$(".twp-container").remove();
$(".twp-mask.twp-float").remove();
if (new Date().getTime() - removetime >= 5000) {
clearInterval(waitlimit)
}
},
250);
}
this.addHtmlElements = function () {
var vipVideoImageBase64 = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC9klEQVRoQ+2ZPWgVQRDH/7/CWqOIYOFHFbRSjJhGMGDpByoIago70cqvUtQgdipWFqawMWghGIidhcHKQAJqEURBRfED1CCCjc3IPu4em31775J7d3m8cAtX3O7szP7nPzszx6EeH/T4+VUD6DaDTQbMbE+3D7MY+8Ckkw8BPFuMki7KDtUAuuh9Z3oZMtBljxY2X9eBwq4raWPNQEmOLKxm+TBgZqsknQ1dAVzNco+ZhWsm6ZakHZLC1mQyrZ5OX2RvzMxnSa8lzQJ/YwLzGDCze5JOeoI/gbVtAMxJ6vPW7wKnkr4qbEuaxccDcGWBsfNV0mjMmSGAg5LGA6XbgFehITPbLel5MN84ZAUAUjMPgWO+zZY7YGbvJW0OvRoB8EjSEW9+BhhIvOvCp0wGfPPbgZfpRAzATUnn56GEmJyLd39cBNxeF99FADTa42BskuQef4wDh9oB2CXpRbDpMPA4nTOz05LuBDLrgW+dAACGIkxfkHTDm/8DrMwEkBxgOskkqdwEcMAD4GLf3YF0PACOe+uFGMgA4Bj4EAAbAGbcXLQOmNklSdeCTRuBT2bWL+lNsLYfeFIRgH2SJgJ7GwCXYjMBrJb0K9jUiHEzG5F02VubA9b4skXvQMiAmW2VdFSSn24/As0kk1mJzeyppL3ewaaBnWY2K2mLNz8S5ueCAMLwz3q/DZxreweSe3BC0v1Ai7tkYXrsB96WwMBCAfQBv3MBJCD+SVrhaXaZ54z3PgUMhpYrZKCF7bbNnJk5BhwT6fghyW8thoGxigE4my6tXwemQlt5AGI1oamDSIFLmCuURiW5BOGPL8C7drGV206b2XdJ6yJKxoDhmPKCIeS61ZZClncxFgLAtcyxrnEwRmknDFQFIFYTWnJ/CVmoGgYSj7Z81OR86Lg7sOgPmnY6s0IpN4TyYrDb6zWAmoEOPVCHUIcO7Hh7/YemYxcWU7AMf3BkNGDF/FP9rkwGqjddkoWWv5Ql6V1yNXUdWHKXBwZ7noH/dP+HQNqheToAAAAASUVORK5CYII=`;
var category_1_html = "";
this.originalInterfaceList.forEach((item, index) => {
if (item.category === "1") {
category_1_html += "<li title='" + item.name + "' data-index='" + index + "'>" + item.name + "</li>";
}
});
//获得自定义位置
var left = 0;
var top = 100;
var cssMould = `#vip_movie_box {cursor:pointer; position:fixed; top:` + top + `px; left:` + left + `px; width:0px; z-index:2147483647; font-size:16px; text-align:left;}
#vip_movie_box .item_text {}
#vip_movie_box .item_text .img_box{width:26px; height:35px;line-height:35px;text-align:center;background-color:#E5212E;}
#vip_movie_box .item_text .img_box >img {width:20px; display:inline-block; vertical-align:middle;}
#vip_movie_box .vip_mod_box_action {display:none; position:absolute; left:26px; top:0; text-align:center; background-color:#272930; border:1px solid gray;}
#vip_movie_box .vip_mod_box_action li{border-radius:2px; font-size:12px; color:#DCDCDC; text-align:center; width:60px; line-height:21px; float:left; border:1px solid gray; padding:0 4px; margin:4px 2px;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:ellipsis;}
#vip_movie_box .vip_mod_box_action li:hover{color:#E5212E; border:1px solid #E5212E;}
#vip_movie_box li.selected{color:#E5212E; border:1px solid #E5212E;}
#vip_movie_box .selected_text {margin-top:5px;}
#vip_movie_box .selected_text .img_box{width:26px; height:35px;line-height:35px;text-align:center;background-color:#E5212E;}
#vip_movie_box .selected_text .img_box >img {width:20px; height:20px;display:inline-block; vertical-align:middle;}
#vip_movie_box .vip_mod_box_selected {display:none;position:absolute; left:26px; top:0; text-align:center; background-color:#F5F6CE; border:1px solid gray;}
#vip_movie_box .vip_mod_box_selected ul{overflow-y: auto;}
#vip_movie_box .vip_mod_box_selected li{border-radius:2px; font-size:12px; color:#393AE6; text-align:center; width:95px; line-height:27px; float:left; border:1px dashed gray; padding:0 4px; margin:4px 2px;display:block;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}
#vip_movie_box .vip_mod_box_selected li:hover{color:#E5212E; border:1px solid #E5212E;}
#vip_movie_box .default-scrollbar-55678::-webkit-scrollbar{width:5px; height:1px;}
#vip_movie_box .default-scrollbar-55678::-webkit-scrollbar-thumb{box-shadow:inset 0 0 5px rgba(0, 0, 0, 0.2); background:#A8A8A8;}
#vip_movie_box .default-scrollbar-55678::-webkit-scrollbar-track{box-shadow:inset 0 0 5px rgba(0, 0, 0, 0.2); background:#F1F1F1;}
`;
GM_addStyle(cssMould);
var htmlMould = `<div id='vip_movie_box'>
<div class='item_text'>
<div class="img_box" id="img_box_6667897iio"><img src='` + vipVideoImageBase64 + `' title='点击跳转到综合解析页面,线路随意选!'/></div>
<div class='vip_mod_box_action' >
<div style='display:flex;'>
<div style='padding:10px 0px; width:380px; max-height:400px; overflow-y:auto;' class="default-scrollbar-55678">
<div style='font-size:16px; text-align:center; color:#E5212E; padding:5px 0px;'><b>线路</b></div>
<ul>` + category_1_html + `<div style='clear:both;'></div></ul>
</div>
</div>
</div>
</div>
</div>`;
$("body").append(htmlMould);
$(".item_text").on("mouseover", () => {
$(".vip_mod_box_action").show();
});
$(".item_text").on("mouseout", () => {
$(".vip_mod_box_action").hide();
});
$(".vip_mod_box_action li").each((liIndex, item) => {
item.addEventListener("click", () => {
//1.11.5同一操作
var index = parseInt($(item).attr("data-index"));
commonFunctionObject.GMsetValue("index", index);
this.videoreplace();
});
});
};
this.bottomArea = function () {
$('#vip_movie_box').remove();
let playera = $(this.node);
//1.11.5添加bottomArea
let bottomcss = ` /*底部背景阴影*/
.bilibili-player-video-bottom-area {
width: 100%;
height: 46px;
background-color: #fff;
-webkit-box-shadow: 0 0 8px #e5e9ef;
box-shadow: 0 0 8px #e5e9ef;
-ms-flex-negative: 0;
flex-shrink: 0;
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
/*1.11.8修复偏移*/
.bilibili-player-video-bottom-area::before {
content: none
}
/*弹幕字体*/
.bilibili-player-video-info-danmaku-number {
height: 14px;
line-height: 14px;
font-size: 14px;
font-weight: 600;
}
/*视频信息文本格式*/
.bilibili-player-video-info {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 0;
-ms-flex: none;
flex: none;
-ms-flex-negative: 1;
flex-shrink: 1;
font-size: 12px;
height: 16px;
line-height: 14px;
color: #505050;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin-right: 12px;
width: 208px;
white-space: nowrap;
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
overflow: hidden;
padding: 0 12px 0 20px;
}
/*弹幕按钮本体*/
.bui-switch .bui-switch-input {
position: absolute;
width: 30px;
height: 20px;
border-radius: 10px;
opacity: 0;
margin: 0;
cursor: pointer;
z-index: 1;
}
/*弹幕按钮主体*/
.bui-switch .bui-switch-body {
display: inline-block;
width: 30px;
height: 20px;
outline: none;
border-radius: 10px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
background: #757575;
margin-right: 11px;
}
.bui-switch .bui-switch-input:checked+.bui-switch-label .bui-switch-body {
background: #00a1d6;
}
/*弹幕按钮dot*/
.bui-switch .bui-switch-dot {
top: 2px;
left: 2px;
border-radius: 100%;
width: 16px;
height: 16px;
background-color: #fff;
color: #757575;
fill: #757575;
line-height: 16px;
text-align: center;
-webkit-box-shadow: 0 3px 1px 0 rgba(0, 0, 0, .05), 0 2px 2px 0 rgba(0, 0, 0, .1), 0 3px 3px 0 rgba(0, 0, 0, .05);
box-shadow: 0 3px 1px 0 rgba(0, 0, 0, .05), 0 2px 2px 0 rgba(0, 0, 0, .1), 0 3px 3px 0 rgba(0, 0, 0, .05);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.bui-switch .bui-switch-body,
.bui-switch .bui-switch-dot {
position: relative;
-webkit-transition: all .3s;
-o-transition: all .3s;
transition: all .3s;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
.bui-switch .bui-switch-input:checked+.bui-switch-label .bui-switch-body .bui-switch-dot {
left: 100%;
margin-left: -18px;
color: #00a1d6;
fill: #00a1d6;
}
/*弹幕按钮图片*/
.bui-switch .bui-switch-dot span {
display: inline-block;
width: 10px;
height: 10px;
font-size: 0;
}
/*弹幕设置*/
/*bui*/
.bui-panel.bui-dark {
border: none;
background: rgba(0, 0, 0, .67);
}
.bui-panel {
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
border-radius: 4px 4px 0 0;
border: 1px solid #e2e2e2;
background: #fff;
overflow: hidden;
}
.bui {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
vertical-align: middle;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.bui-panel-wrap {
position: relative;
-webkit-transition: all .25s;
-o-transition: all .25s;
transition: all .25s;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
.bui-panel-move {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
height: 100%;
-webkit-transform: translateX(0);
transform: translateX(0);
-webkit-transition: -webkit-transform .25s;
transition: -webkit-transform .25s;
-o-transition: transform .25s;
transition: transform .25s;
transition: transform .25s, -webkit-transform .25s;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
/*滑动条*/
.bui-slider {
height: 12px;
cursor: pointer;
}
.bui-slider .bui-track {
position: relative;
width: 100%;
height: 2px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bui-slider.bui-dark .bui-track .bui-bar-wrap,
.bui-slider.bui-dark .bui-track .bui-step .bui-step-item .bui-step-dot {
background: #505050;
}
.bui-slider .bui-track .bui-bar-wrap {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
border-radius: 1.5px;
overflow: hidden;
background: #e7e7e7;
}
.bui-slider .bui-track .bui-bar-wrap .bui-bar,
.bui-slider .bui-track.bui-track-vertical .bui-bar-wrap .bui-bar {
background: #00a1d6;
background: var(--bpx-primary-color, #00a1d6);
}
.bui-slider .bui-track .bui-bar-wrap .bui-bar {
position: absolute;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: #00a1d6;
will-change: transform;
}
.bui-slider .bui-track .bui-thumb {
pointer-events: none;
cursor: pointer;
}
.bui-slider .bui-track .bui-step {
pointer-events: none;
}
.bui-slider .bui-track .bui-step .bui-step-item {
position: absolute;
width: 0;
}
.bui-slider .bui-track .bui-step .bui-step-item .bui-step-dot {
height: 4px;
width: 2px;
background: #e5e9ef;
border-radius: 1px;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.bui-slider.bui-dark .bui-track .bui-bar-wrap,
.bui-slider.bui-dark .bui-track .bui-step .bui-step-item .bui-step-dot {
background: #505050;
}
.bui-slider .bui-track .bui-step .bui-step-item.bui-step-item-0 .bui-step-dot {
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.bui-slider .bui-track .bui-step .bui-step-item.bui-step-item-100 .bui-step-dot {
-webkit-transform: translate(-100%, -50%);
transform: translate(-100%, -50%);
}
.bui-slider .bui-track .bui-step .bui-step-item .bui-step-text {
position: absolute;
bottom: 6px;
left: 50%;
width: 100px;
text-align: center;
font-size: 12px;
color: #999;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
line-height: 12px;
}
.bui-slider.bui-dark .bui-track .bui-step .bui-step-item .bui-step-text {
color: hsla(0, 0%, 100%, .8);
}
.bui-slider .bui-track .bui-step .bui-step-item.bui-step-item-0 .bui-step-text {
text-align: left;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.bui-slider .bui-track .bui-step .bui-step-item.bui-step-item-100 .bui-step-text {
-webkit-transform: translate(-100%, -50%);
transform: translate(-100%, -50%);
text-align: right;
}
.bui-slider .bui-track .bui-thumb .bui-thumb-dot {
width: 12px;
height: 12px;
border-radius: 50%;
background-color: #00a1d6;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
vertical-align: middle;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bui-slider .bui-track .bui-thumb .bui-thumb-tooltip {
position: absolute;
top: -21px;
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
padding: 0 7px;
line-height: 18px;
height: 18px;
font-size: 12px;
background: rgba(21, 21, 21, .8);
border-radius: 4px;
color: #fff;
opacity: 0;
-webkit-transition: opacity .2s ease-in-out;
-o-transition: opacity .2s ease-in-out;
transition: opacity .2s ease-in-out;
pointer-events: none;
}
/*选择框*/
.bui-checkbox {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
position: relative;
cursor: pointer;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.bilibili-player .bui-checkbox .bui-checkbox-input:checked+.bui-checkbox-label .bui-checkbox-icon svg,
.bilibili-player .bui-checkbox:hover .bui-checkbox-icon svg {
fill: #00a1d6;
fill: var(--bpx-primary-color, #00a1d6)
}
.bui-checkbox .bui-checkbox-input {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
opacity: 0;
margin: 0;
cursor: pointer;
z-index: 1;
}
.bui-checkbox .bui-checkbox-label {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
vertical-align: middle;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.bui-checkbox .bui-checkbox-icon {
display: inline-block;
width: 16px;
height: 16px;
margin-right: 4px;
vertical-align: middle;
}
.bui-checkbox .bui-checkbox-icon svg {
vertical-align: top;
fill: #ccd0d7;
-webkit-transition: all .2s;
-o-transition: all .2s;
transition: all .2s;
-webkit-transform: translateZ(0);
transform: translateZ(0);
width: 16px;
height: 16px;
}
.bui-checkbox.bui-dark .bui-checkbox-icon svg {
fill: #fff;
}
.bui-checkbox .bui-checkbox-input:checked+.bui-checkbox-label .bui-checkbox-icon svg,
.bui-checkbox:hover .bui-checkbox-icon svg {
fill: #00a1d6;
fill: var(--bpx-primary-color, #00a1d6);
}
.bui-checkbox .bui-checkbox-input:checked+.bui-checkbox-label .bui-checkbox-icon svg {
fill: #00a1d6;
}
.bui-checkbox .bui-checkbox-input:checked+.bui-checkbox-label .bui-checkbox-icon-default {
display: none;
}
.bui-checkbox .bui-checkbox-input:checked+.bui-checkbox-label .bui-checkbox-icon-selected {
display: inline-block;
}
.bui-checkbox .bui-checkbox-icon-selected {
display: none;
}
.bui-checkbox .bui-checkbox-name {
vertical-align: middle;
font-size: 12px;
line-height: 12px;
color: #222;
-webkit-transition: all .2s;
-o-transition: all .2s;
transition: all .2s;
-webkit-transform: translateZ(0);
transform: translateZ(0);
position: relative;
}
.bui-checkbox.bui-dark .bui-checkbox-name {
color: #fff;
}
.bui-checkbox:hover .bui-checkbox-name {
color: #00a1d6;
color: var(--bpx-primary-color, #00a1d6)
}
.bilibili-player-video-danmaku-setting:hover .bui-panel-item.bui-panel-item-active {
opacity: 1;
pointer-events: auto;
}
.bui-panel-item {
opacity: 0;
pointer-events: none;
-webkit-transition: opacity .1s;
-o-transition: opacity .1s;
transition: opacity .1s;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
/*设置主体1.12.2修复位置*/
.bilibili-player-video-danmaku-setting {
fill: #757575;
font-size: 0;
height: 46px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: relative;
width: 30px;
height: 30px;
line-height: 30px;
margin-right: 11px;
cursor: pointer;
user-select: none;
}
/*设置图标1.12.2修复位置*/
.bilibili-player-video-danmaku-setting .bp-svgicon {
height: 24px;
}
.bilibili-player-video-danmaku-setting .bp-svgicon span {
display: inline-block;
width: 24px;
font-size: 0;
position: absolute;
cursor: pointer;
z-index: 1;
margin: middle;
}
.bilibili-player-video-danmaku-setting:hover .bp-svgicon span {
color: #00a1d6;
fill: #00a1d6;
}
/*设置显示提示*/
.bilibili-player-video-danmaku-setting:hover .bilibili-player-video-danmaku-setting-wrap {
display: inline-block;
}
.bilibili-player-video-danmaku-setting-wrap {
display: none;
cursor: default;
background: none;
border: none;
border-radius: 4px 4px 0 0;
text-align: left;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 298px;
height: 366px;
font-size: 12px;
z-index: 1001;
/* 定位 */
position: absolute;
bottom: 10px;
/* 46px */
right: -149px;
/*-149px */
/*margin-left: 0px;*/
}
.bilibili-player-video-danmaku-setting-box {
position: absolute;
right: 0;
bottom: 35px;
}
.bilibili-player-video-danmaku-setting-box {
background: rgba(21, 21, 21, .9) !important;
border-radius: 2px !important;
}
.bilibili-player-video-danmaku-setting-left {
width: 100%;
height: 100%;
padding: 12px 20px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
/*选项大致*/
.bilibili-player-video-danmaku-setting-left-area,
.bilibili-player-video-danmaku-setting-left-fontsize,
.bilibili-player-video-danmaku-setting-left-opacity,
.bilibili-player-video-danmaku-setting-left-speedplus {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
height: 16px;
line-height: 16px;
margin-bottom: 24px;
}
.bilibili-player-video-danmaku-setting-left-area-title,
.bilibili-player-video-danmaku-setting-left-block-title,
.bilibili-player-video-danmaku-setting-left-fontsize-title,
.bilibili-player-video-danmaku-setting-left-opacity-title,
.bilibili-player-video-danmaku-setting-left-speedplus-title {
text-align: left;
height: 16px;
line-height: 16px;
margin-bottom: 4px;
color: #fff;
}
.bilibili-player-video-danmaku-setting-left-area-content,
.bilibili-player-video-danmaku-setting-left-fontsize-content,
.bilibili-player-video-danmaku-setting-left-opacity-content,
.bilibili-player-video-danmaku-setting-left-speedplus-content {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
width: 200px;
height: 12px;
margin-left: 10px;
}
/*选择框细节*/
.bilibili-player-video-danmaku-setting-left-danmaku-density,
.bilibili-player-video-danmaku-setting-left-danmaku-mask,
.bilibili-player-video-danmaku-setting-left-preventshade {
margin-bottom: 12px;
height: 16px;
line-height: 16px;
float: left;
color: #212121;
}
.bilibili-player-video-danmaku-setting-left-danmaku-density,
.bilibili-player-video-danmaku-setting-left-danmaku-mask {
margin-left: 10px;
}
.bilibili-player-video-danmaku-setting-left-danmaku-density label:hover,
.bilibili-player-video-danmaku-setting-left-danmaku-density label:hover .bpui-icon-checkbox.icon-12checkbox,
.bilibili-player-video-danmaku-setting-left-danmaku-mask label:hover,
.bilibili-player-video-danmaku-setting-left-danmaku-mask label:hover .bpui-icon-checkbox.icon-12checkbox,
.bilibili-player-video-danmaku-setting-left-preventshade label:hover,
.bilibili-player-video-danmaku-setting-left-preventshade label:hover .bpui-icon-checkbox.icon-12checkbox {
-webkit-box-shadow: none !important;
box-shadow: none !important
}
.bilibili-player-video-danmaku-setting-left-danmaku-density:hover .bpui-checkbox-text,
.bilibili-player-video-danmaku-setting-left-danmaku-mask:hover .bpui-checkbox-text,
.bilibili-player-video-danmaku-setting-left-preventshade:hover .bpui-checkbox-text {
color: #00a1d6
}
.bilibili-player-video-danmaku-setting-left-danmaku-density:hover .bpui-icon-checkbox.icon-12checkbox,
.bilibili-player-video-danmaku-setting-left-danmaku-mask:hover .bpui-icon-checkbox.icon-12checkbox,
.bilibili-player-video-danmaku-setting-left-preventshade:hover .bpui-icon-checkbox.icon-12checkbox {
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid #00a1d6
}
/*block*/
.bilibili-player-video-danmaku-setting-left-block {
overflow: hidden;
margin-bottom: 12px;
}
/*第一行打横*/
.bilibili-player-video-danmaku-setting-left-block-content {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-sizing: border-box;
box-sizing: border-box;
height: 42px;
overflow: hidden;
cursor: pointer;
}
/*第一行图标行距*/
.bilibili-player-video-danmaku-setting-left-block-content .bilibili-player-block-filter-type {
position: relative;
width: 28px;
height: 100%;
margin: 0 22px 16px 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: hsla(0, 0%, 100%, .8);
-webkit-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
cursor: pointer;
}
/*第一行图标字体上色*/
.bilibili-player-video-danmaku-setting-left-block-content .bilibili-player-block-filter-type .bilibili-player-block-filter-image {
/*position: relative;*/
display: inline-block;
font-size: 0;
width: 28px;
height: 28px;
line-height: 28px;
top: -5px;
color: hsla(0, 0%, 100%, .8);
fill: hsla(0, 0%, 100%, .8);
}
/*ban弹幕图标字体*/
.bilibili-player-block-filter-type.bpx-player-active .bilibili-player-block-filter-label {
color: #00a1d6!important;
color: var(--bpx-fn-color,#00a1d6)!important;
}
/*ban弹幕图标上色*/
.bilibili-player-block-filter-type.bpx-player-active .bilibili-player-block-filter-image {
color: #00a1d6!important;
color: var(--bpx-fn-color,#00a1d6)!important;
fill: #00a1d6!important;
fill: var(--bpx-fn-color,#00a1d6)!important;
}
.bilibili-player-video-danmaku-setting-left-block-content .bilibili-player-block-filter-type .bilibili-player-block-filter-label {
position: absolute;
left: 0;
bottom: -2px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
height: 16px;
padding: 0;
margin: 0;
text-align: center;
line-height: 16px;
color: hsla(0, 0%, 100%, .8);
font-size: 12px;
-webkit-transition: none;
transition: none;
}
.bilibili-player-video-danmaku-setting-left-block-content .bilibili-player-block-filter-type:hover .bilibili-player-block-filter-image {
color: #fff;
fill: #fff
}
.bilibili-player-video-danmaku-setting-left-block-content .bilibili-player-block-filter-type:hover .bilibili-player-block-filter-label {
color: #fff
}
.bilibili-player-video-danmaku-setting-left-block-content .bilibili-player-block-filter-type.disabled .bilibili-player-block-filter-image {
color: #00a1d6 !important;
fill: #00a1d6 !important
}
.bilibili-player-video-danmaku-setting-left-block-content .bilibili-player-block-filter-type.disabled .bilibili-player-block-filter-label {
color: #00a1d6 !important
}
/*flag*/
.bilibili-player-video-danmaku-setting-left-flag {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin-bottom: 12px;
font-size: 12px;
line-height: 16px;
}
.bilibili-player-video-danmaku-setting-left-flag-title {
-webkit-box-flex: 0;
-ms-flex: none;
flex: none;
color: white;
}
.bilibili-player-video-danmaku-setting-left-flag-content {
width: 100%;
margin-left: 10px;
padding-top: 2px;
opacity: 1
}
.bilibili-player-video-danmaku-setting-left-flag-content .bui-step {
display: none
}
.bilibili-player-video-danmaku-setting-left-flag.bilibili-player-unchecked .bilibili-player-video-danmaku-setting-left-flag-content {
position: relative
}
.bilibili-player-video-danmaku-setting-left-flag.bilibili-player-unchecked .bilibili-player-video-danmaku-setting-left-flag-content .bilibili-player-setting-flag {
opacity: 0
}
.bilibili-player-video-danmaku-setting-left-flag.bilibili-player-unchecked .bilibili-player-video-danmaku-setting-left-flag-content:after {
display: inline-block;
content: "全站视频将按等级屏蔽弹幕";
position: absolute;
top: 0;
left: 0;
color: #999
}
/*fontsize*/
.bilibili-player-video-danmaku-setting-left-fontsize {
margin-bottom: 12px;
}
/*preventshade*/
.bilibili-player-video-danmaku-setting-left-preventshade {
clear: left;
margin-bottom: 14px;
}
/*block-word按钮*/
.bilibili-player-video-danmaku-setting-left-block-word {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
line-height: 24px;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
margin-bottom: 14px;
text-align: center;
cursor: pointer;
}
.bilibili-player-video-danmaku-setting-left-block-word .bilibili-player-video-danmaku-setting-left-block-add,
.bilibili-player-video-danmaku-setting-left-block-word .bilibili-player-video-danmaku-setting-left-block-sync {
width: 126px;
border-radius: 2px;
background: hsla(0, 0%, 100%, .3);
cursor: pointer;
color: white;
}
.bilibili-player-video-danmaku-setting-left-block-word .bilibili-player-video-danmaku-setting-left-block-add:hover,
.bilibili-player-video-danmaku-setting-left-block-word .bilibili-player-video-danmaku-setting-left-block-sync:hover {
background: hsla(0, 0%, 100%, .4);
}
/*更多设置*/
.bilibili-player-video-danmaku-setting-left-more {
clear: left;
color: #fff;
fill: #fff;
line-height: 16px;
height: 16px;
text-align: left;
cursor: pointer;
position: relative;
top: 4px;
}
.bilibili-player-video-danmaku-setting-left-more:hover,
.bilibili-player-video-danmaku-setting-left-more:hover .bp-svgicon {
color: #00a1d6;
fill: #00a1d6;
}
/*箭头*/
.bilibili-player-video-danmaku-setting-left-more .bp-svgicon {
position: absolute;
right: 0;
height: 16px;
width: 16px;
vertical-align: middle;
margin-right: -3px;
}
.bilibili-player-video-danmaku-setting-left-more-text {
vertical-align: middle;
display: inline-block;
-webkit-transition: color .3s;
transition: color .3s;
}
/*线路整体*/
.bilibili-player-video-btn.bilibili-player-video-btn-quality {
fill: #757575;
font-size: 0;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: relative;
width: auto;
height: 64px;
line-height: 30px;
margin-right: 11px;
color: #fff;
/*top: 5px;*/
user-select: none;
}
/*hover*/
.bilibili-player-video-btn-quality:hover .bui-select.bui-select-quality-menu .bui-select-list {
opacity: 1;
display: block;
visibility: visible;
}
/*.bilibili-player-video-btn-quality:hover .bui-select.bui-select-quality-menu .bui-select-result {
background: #00a1d6;
}*/
.bui-select .bui-select-item:hover {
background: #e7e7e7;
}
.bui-select.bui-dark .bui-select-item:hover {
background: hsla(0, 0%, 100%, .1);
}
/*list*/
.bui-select.bui-select-quality-menu .bui-select-list {
font-size: 12px;
width: 169px;
height: auto !important;
text-align: left;
background: rgba(21, 21, 21, .9);
border-radius: 2px;
padding: 0;
-webkit-transition: all .2s;
-o-transition: all .2s;
transition: all .2s;
-webkit-transform: translateZ(0);
transform: translateZ(0);
position: absolute;
/* 定位 */
z-index: 1;
bottom: 35px;
left: 50%;
margin-left: -84.5px;
opacity: 0;
display: none;
}
/*表面*/
.bui-select.bui-select-quality-menu .bui-select-result {
/*background: #757575;*/
background-color: rgb(251, 114, 153);
border-radius: 5px;
/* font-weight: 600; */
width: 100%;
user-select: none;
cursor: pointer;
display: block;
padding: 0 2px;
text-align: center;
color: #fff;
font-size: 12px;
height: 16px;
line-height: 16px;
}
/*选项格式*/
.bilibili-player-video-quality-menu .bui-select-list .bui-select-item {
padding: 0 12px;
height: 36px;
line-height: 36px;
white-space: nowrap;
color: #fff;
cursor: pointer
}
.bilibili-player-video-subtitle-setting-color .bui-select-item>span,
.bilibili-player-video-subtitle-setting-color .bui-select-result>span {
vertical-align: middle
}
.bilibili-player-video-subtitle-setting-color .bui-select-item>span:first-child,
.bilibili-player-video-subtitle-setting-color .bui-select-result>span:first-child {
width: 12px;
height: 12px;
display: inline-block;
border-radius: 2px;
margin-right: 8px
}
.bui-select.bui-select-quality-menu .bui-select-item.bui-select-item-active {
color: #00a1d6;
}
.bilibili-player-video-btn .bilibili-player-video-quality-menu .bilibili-player-bigvip {
position: relative;
color: #fff;
background-color: #f25d8e;
margin-left: 27px;
padding: 0 5px;
border-radius: 8px;
height: 16px;
line-height: 16px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
user-select: none;
float: right;
top: 28%;
}
/*文本*/
.bilibili-player-video-quality-text {
user-select: none;
}`
GM_addStyle(bottomcss);
//1.11.8 接口
let category_1_html = "";
originalInterfaceList.forEach((item, index) => {
if (item.category == "1" && item.special) {
category_1_html += `<li class="bui-select-item" data-index=` + index + `><span class="bilibili-player-video-quality-text">` + item.name + `</span><span class="bilibili-player-bigvip">` + item.special + `</span></li>`;
} else {
category_1_html += `<li class="bui-select-item" data-index=` + index + `><span class="bilibili-player-video-quality-text">` + item.name + `</span></li>`;
}
});
let bottomdiv = `
<div class="bilibili-player-video-bottom-area">
<div class="bilibili-player-video-info">
<div class="bilibili-player-video-info-danmaku player-tooltips-trigger">
<span class="bilibili-player-video-info-danmaku-number"></span>
<span class="bilibili-player-video-info-danmaku-text">条弹幕存在此弹幕池</span>
</div>
</div>
<div class="bui-switch" aria-label="弹幕显示隐藏">
<input class="bui-switch-input" type="checkbox" checked="">
<label class="bui-switch-label">
<span class="bui-switch-name"></span>
<span class="bui-switch-body">
<span class="bui-switch-dot">
<span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10">
<path
d="M1.311 3.759l-.153 1.438h2.186c0 1.832-.066 3.056-.175 3.674-.131.618-.688.959-1.683 1.023-.284 0-.568-.021-.874-.043L.317 8.818c.284.032.59.053.896.053.546 0 .852-.17.929-.511.077-.341.12-1.076.12-2.204H0l.306-3.344h1.847V1.427H.098V.479h3.18v3.28H1.311zM4 1.747h1.311A8.095 8.095 0 004.492.426L5.53.085c.306.426.579.873.809 1.363l-.689.299h1.508c.306-.544.569-1.129.809-1.747l1.082.373c-.219.511-.47.969-.743 1.374h1.268V6.23H7.322v.82H10v1.044H7.322V10H6.208V8.094H3.607V7.05h2.601v-.82H4V1.747zm4.568 3.557v-.831H7.322v.831h1.246zm-2.36 0v-.831H5.016v.831h1.192zM5.016 3.557h1.191v-.873H5.016v.873zm2.306-.873v.873h1.246v-.873H7.322z">
</path>
</svg></span>
</span>
</span>
</label>
</div>
<div class="bilibili-player-video-danmaku-setting">
<span class="bp-svgicon">
<span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<path
d="M16.5 8c1.289 0 2.49.375 3.5 1.022V6a2 2 0 00-2-2H4a2 2 0 00-2 2v10a2 2 0 002 2h7.022A6.5 6.5 0 0116.5 8zM7 13H5a1 1 0 010-2h2a1 1 0 010 2zm2-4H5a1 1 0 010-2h4a1 1 0 010 2z">
</path>
<path
d="M20.587 13.696l-.787-.131a3.503 3.503 0 00-.593-1.051l.301-.804a.46.46 0 00-.21-.56l-1.005-.581a.52.52 0 00-.656.113l-.499.607a3.53 3.53 0 00-1.276 0l-.499-.607a.52.52 0 00-.656-.113l-1.005.581a.46.46 0 00-.21.56l.301.804c-.254.31-.456.665-.593 1.051l-.787.131a.48.48 0 00-.413.465v1.209a.48.48 0 00.413.465l.811.135c.144.382.353.733.614 1.038l-.292.78a.46.46 0 00.21.56l1.005.581a.52.52 0 00.656-.113l.515-.626a3.549 3.549 0 001.136 0l.515.626a.52.52 0 00.656.113l1.005-.581a.46.46 0 00.21-.56l-.292-.78c.261-.305.47-.656.614-1.038l.811-.135A.48.48 0 0021 15.37v-1.209a.48.48 0 00-.413-.465zM16.5 16.057a1.29 1.29 0 11.002-2.582 1.29 1.29 0 01-.002 2.582z">
</path>
</svg></span>
</span>
<div class="bilibili-player-video-danmaku-setting-wrap">
<div class="bilibili-player-video-danmaku-setting-box bui bui-panel bui-dark">
<div class="bui-panel-wrap" style="width: 298px; height: 366px;">
<div class="bui-panel-move" style="width: 564px; transform: translateX(0px);">
<div class="bui-panel-item bui-panel-item-active" style="width: 298px; height: 366px;">
<div class="bilibili-player-video-danmaku-setting-left">
<div class="bilibili-player-video-danmaku-setting-left-block">
<div class="bilibili-player-video-danmaku-setting-left-block-title">按类型屏蔽</div>
<div class="bilibili-player-video-danmaku-setting-left-block-content">
<div class="bilibili-player-block-filter-type "
data-name="ctlbar_danmuku_scroll_on" ftype="scroll"><span
class="bilibili-player-block-filter-image"><span class="bp-svgicon"><svg
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM11 9h6a1 1 0 010 2h-6a1 1 0 010-2zm-3 2H6V9h2v2zm4 4h-2v-2h2v2zm9 0h-6a1 1 0 010-2h6a1 1 0 010 2z">
</path>
</svg></span></span>
<div class="bilibili-player-block-filter-label">滚动</div>
</div>
<div class="bilibili-player-block-filter-type "
data-name="ctlbar_danmuku_top_on" ftype="top"><span
class="bilibili-player-block-filter-image"><span class="bp-svgicon"><svg
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM9 9H7V7h2v2zm4 0h-2V7h2v2zm4 0h-2V7h2v2zm4 0h-2V7h2v2z">
</path>
</svg></span></span>
<div class="bilibili-player-block-filter-label">顶部</div>
</div>
<div class="bilibili-player-block-filter-type "
data-name="ctlbar_danmuku_bottom_on" ftype="bottom"><span
class="bilibili-player-block-filter-image"><span class="bp-svgicon"><svg
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM9 21H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2z">
</path>
</svg></span></span>
<div class="bilibili-player-block-filter-label">底部</div>
</div>
<div class="bilibili-player-block-filter-type "
data-name="ctlbar_danmuku_color_on" ftype="color"><span
class="bilibili-player-block-filter-image"><span class="bp-svgicon"><svg
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M17.365 11.118c0-.612-.535-1.147-1.147-1.147s-1.147.535-1.147 1.147c0 .611.535 1.147 1.147 1.147s1.147-.536 1.147-1.147zM12.93 9.665c-.764 0-1.376.611-1.376 1.3 0 .689.612 1.301 1.376 1.301s1.376-.612 1.376-1.301-.612-1.3-1.376-1.3zM9.794 11.883c-.764 0-1.376.612-1.376 1.3 0 .689.612 1.3 1.376 1.3s1.376-.611 1.376-1.3c.001-.688-.611-1.3-1.376-1.3zM10.023 15.171c-.612 0-1.147.536-1.147 1.148 0 .611.535 1.146 1.147 1.146s1.147-.535 1.147-1.146c.001-.612-.535-1.148-1.147-1.148zM17.823 12.953c-.611 0-1.147.535-1.147 1.147s.536 1.147 1.147 1.147c.612 0 1.148-.535 1.148-1.147s-.536-1.147-1.148-1.147z">
</path>
<path
d="M23.177 3H4.824C2.683 3 1 4.833 1 7.167v13.665C1 23.167 2.683 25 4.824 25h18.353C25.318 25 27 23.167 27 20.833V7.167C27 4.833 25.318 3 23.177 3zm-3.442 13.624c-1.987.612-4.129-.154-5.046.764-.918.918 1.529 1.606 0 2.219-1.988.84-7.341-.535-8.182-4.053-.841-3.441 2.905-6.5 5.888-7.035 2.906-.535 6.041.841 8.181 2.982 2.065 2.141.765 4.74-.841 5.123z">
</path>
</svg></span></span>
<div class="bilibili-player-block-filter-label">彩色</div>
</div>
<div class="bilibili-player-block-filter-type "
data-name="ctlbar_danmuku_special_on" ftype="special"><span
class="bilibili-player-block-filter-image"><span class="bp-svgicon"><svg
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path
d="M23 3H5a4 4 0 00-4 4v14a4 4 0 004 4h18a4 4 0 004-4V7a4 4 0 00-4-4zM7.849 11.669l.447-.828.492.782.894.184-.536.736.134.966-.85-.321-.804.414.045-.967L7 11.946l.849-.277zm3.352 7.101l-1.43-.506L8.43 19v-1.565L7.357 16.33l1.43-.506.67-1.381.894 1.289 1.475.23-.894 1.289.269 1.519zm7.95-3.9l-2.816-.69-2.458 1.565-.223-2.946-2.145-1.933 2.637-1.151L15.263 7l1.877 2.255 2.86.23-1.52 2.531.671 2.854z">
</path>
</svg></span></span>
<div class="bilibili-player-block-filter-label">高级</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-left-flag">
<div class="bilibili-player-video-danmaku-setting-left-flag-title">去重概率</div>
<div class="bilibili-player-video-danmaku-setting-left-flag-content">
<div class="bilibili-player-setting-flag bui bui-slider bui-dark">
<div class="bui-track">
<div class="bui-bar-wrap">
<div class="bui-bar bui-bar-normal" role="progressbar"
style="transform: scaleX(0);"></div>
</div>
<div class="bui-step">
<div class="bui-step-item bui-step-item-0" style="left:0%">
<div class="bui-step-dot"></div>
<div class="bui-step-text"></div>
</div>
<div class="bui-step-item bui-step-item-100" style="left:100%">
<div class="bui-step-dot"></div>
<div class="bui-step-text"></div>
</div>
</div>
<div class="bui-thumb" style="transform: translateX(0px);">
<div class="bui-thumb-tooltip">0%</div>
<div class="bui-thumb-dot"></div>
</div>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-left-preventshade">
<span
class="bilibili-player-video-danmaku-setting-left-preventshade-box bui bui-checkbox bui-dark player-tooltips-trigger"
data-tooltip="2" data-text="视频底部15%部分为空白保留区" data-position="top-left"
data-change-mode="1"><input class="bui-checkbox-input" type="checkbox"
aria-label="防挡字幕">
<label class="bui-checkbox-label">
<span class="bui-checkbox-icon bui-checkbox-icon-default"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M8 6a2 2 0 00-2 2v16a2 2 0 002 2h16a2 2 0 002-2V8a2 2 0 00-2-2H8zm0-2h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-icon bui-checkbox-icon-selected"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M13 18.25l-1.8-1.8c-.6-.6-1.65-.6-2.25 0s-.6 1.5 0 2.25l2.85 2.85c.318.318.762.468 1.2.448.438.02.882-.13 1.2-.448l8.85-8.85c.6-.6.6-1.65 0-2.25s-1.65-.6-2.25 0l-7.8 7.8zM8 4h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-name">防挡字幕</span>
</label></span>
</div>
<div class="bilibili-player-video-danmaku-setting-left-opacity">
<div class="bilibili-player-video-danmaku-setting-left-opacity-title">不透明度</div>
<div class="bilibili-player-video-danmaku-setting-left-opacity-content">
<div class="bilibili-player-setting-opacity bui bui-slider bui-dark">
<div class="bui-track">
<div class="bui-bar-wrap">
<div class="bui-bar bui-bar-normal" role="progressbar"
style="transform: scaleX(1);"></div>
</div>
<div class="bui-thumb" style="transform: translateX(193.5px);">
<div class="bui-thumb-tooltip">100%</div>
<div class="bui-thumb-dot"></div>
</div>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-left-area">
<div class="bilibili-player-video-danmaku-setting-left-area-title">显示区域</div>
<div class="bilibili-player-video-danmaku-setting-left-area-content">
<div class="bilibili-player-setting-area bui bui-slider bui-dark">
<div class="bui-track">
<div class="bui-bar-wrap">
</div>
<div class="bui-step">
<div class="bui-step-item bui-step-item-0" style="left:0%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">1/4屏</div>
</div>
<div class="bui-step-item" style="left:33%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">半屏</div>
</div>
<div class="bui-step-item" style="left:66%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">防挡字幕</div>
</div>
<div class="bui-step-item bui-step-item-100" style="left:100%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">不限</div>
</div>
</div>
<div class="bui-thumb" style="transform: translateX(193.5px);">
<div class="bui-thumb-dot"></div>
</div>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-left-speedplus">
<div class="bilibili-player-video-danmaku-setting-left-speedplus-title">弹幕速度
</div>
<div class="bilibili-player-video-danmaku-setting-left-speedplus-content">
<div class="bilibili-player-setting-speedplus bui bui-slider bui-dark">
<div class="bui-track">
<div class="bui-bar-wrap">
<div class="bui-bar bui-bar-normal" role="progressbar"
style="transform: scaleX(0.5);"></div>
</div>
<div class="bui-step">
<div class="bui-step-item bui-step-item-0" style="left:0%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">慢</div>
</div>
<div class="bui-step-item bui-step-item-100" style="left:100%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">快</div>
</div>
</div>
<div class="bui-thumb" style="transform: translateX(95.5px);">
<div class="bui-thumb-tooltip">100%</div>
<div class="bui-thumb-dot"></div>
</div>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-left-fontsize">
<div class="bilibili-player-video-danmaku-setting-left-fontsize-title">字体大小
</div>
<div class="bilibili-player-video-danmaku-setting-left-fontsize-content">
<div class="bilibili-player-setting-fontsize bui bui-slider bui-dark">
<div class="bui-track">
<div class="bui-bar-wrap">
<div class="bui-bar bui-bar-normal" role="progressbar"
style="transform: scaleX(0.5);"></div>
</div>
<div class="bui-step">
<div class="bui-step-item bui-step-item-0" style="left:0%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">小</div>
</div>
<div class="bui-step-item bui-step-item-100" style="left:100%">
<div class="bui-step-dot"></div>
<div class="bui-step-text">大</div>
</div>
</div>
<div class="bui-thumb" style="transform: translateX(95.5px);">
<div class="bui-thumb-tooltip">100%</div>
<div class="bui-thumb-dot"></div>
</div>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-left-block-word">
<div class="bilibili-player-video-danmaku-setting-left-block-add">浏览XML弹幕</div>
<div class="bilibili-player-video-danmaku-setting-left-block-sync">提取视频地址</div>
</div>
<div class="bilibili-player-video-danmaku-setting-left-more"><span
class="bilibili-player-video-danmaku-setting-left-more-text">更多弹幕设置</span><span
class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path
d="M9.188 7.999l-3.359 3.359a.75.75 0 101.061 1.061l3.889-3.889a.75.75 0 000-1.061L6.89 3.58a.75.75 0 10-1.061 1.061l3.359 3.358z">
</path>
</svg></span></div>
</div>
</div>
<div class="bui-panel-item" style="width: 266px; height: 254px;">
<div class="bilibili-player-video-danmaku-setting-right">
<div class="bilibili-player-video-danmaku-setting-right-more"><span
class="bp-svgicon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path
d="M6.811 8.001l3.359-3.359a.75.75 0 10-1.061-1.061L5.22 7.471a.75.75 0 000 1.061l3.889 3.888a.75.75 0 101.061-1.061L6.811 8.001z">
</path>
</svg></span><span
class="bilibili-player-video-danmaku-setting-right-more-text">更多弹幕设置</span>
</div>
<div class="bilibili-player-video-danmaku-setting-right-separator"></div>
<div class="bilibili-player-video-danmaku-setting-right-fullscreensync">
<span
class="bilibili-player-video-danmaku-setting-right-fullscreensync-box bui bui-checkbox bui-dark"><input
class="bui-checkbox-input" type="checkbox" aria-label="弹幕大小跟随屏幕等比缩放">
<label class="bui-checkbox-label">
<span class="bui-checkbox-icon bui-checkbox-icon-default"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M8 6a2 2 0 00-2 2v16a2 2 0 002 2h16a2 2 0 002-2V8a2 2 0 00-2-2H8zm0-2h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-icon bui-checkbox-icon-selected"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M13 18.25l-1.8-1.8c-.6-.6-1.65-.6-2.25 0s-.6 1.5 0 2.25l2.85 2.85c.318.318.762.468 1.2.448.438.02.882-.13 1.2-.448l8.85-8.85c.6-.6.6-1.65 0-2.25s-1.65-.6-2.25 0l-7.8 7.8zM8 4h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-name">弹幕大小跟随屏幕等比缩放</span>
</label></span>
</div>
<div class="bilibili-player-video-danmaku-setting-right-speedsync">
<span
class="bilibili-player-video-danmaku-setting-right-speedsync-box bui bui-checkbox bui-dark"><input
class="bui-checkbox-input" type="checkbox" aria-label="弹幕速度同步播放倍数">
<label class="bui-checkbox-label">
<span class="bui-checkbox-icon bui-checkbox-icon-default"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M8 6a2 2 0 00-2 2v16a2 2 0 002 2h16a2 2 0 002-2V8a2 2 0 00-2-2H8zm0-2h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-icon bui-checkbox-icon-selected"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M13 18.25l-1.8-1.8c-.6-.6-1.65-.6-2.25 0s-.6 1.5 0 2.25l2.85 2.85c.318.318.762.468 1.2.448.438.02.882-.13 1.2-.448l8.85-8.85c.6-.6.6-1.65 0-2.25s-1.65-.6-2.25 0l-7.8 7.8zM8 4h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-name">弹幕速度同步播放倍数</span>
</label></span>
</div>
<div class="bilibili-player-video-danmaku-setting-right-font">
<div class="bilibili-player-video-danmaku-setting-right-font-title">弹幕字体</div>
<div class="bilibili-player-video-danmaku-setting-right-font-content">
<div
class="bilibili-player-video-danmaku-setting-right-font-content-fontfamily bui bui-select bui-dark">
<div class="bui-select-wrap">
<div class="bui-select-border">
<div class="bui-select-header">
<span class="bui-select-result">黑体</span>
<span class="bui-select-arrow">
<span class="bui-select-arrow-down"></span>
</span>
</div>
<div class="bui-select-list-wrap">
<ul class="bui-select-list" style="border: none;">
<li class="bui-select-item bui-select-item-active"
data-value="SimHei, 'Microsoft JhengHei'">黑体</li>
<li class="bui-select-item " data-value="SimSun">宋体</li>
<li class="bui-select-item " data-value="NSimSun">新宋体
</li>
<li class="bui-select-item " data-value="FangSong">仿宋
</li>
<li class="bui-select-item " data-value="'Microsoft YaHei'">
微软雅黑</li>
<li class="bui-select-item "
data-value="'Microsoft Yahei UI Light'">微软雅黑 Light
</li>
<li class="bui-select-item "
data-value="'Noto Sans CJK SC DemiLight'">Noto Sans
DemiLight</li>
<li class="bui-select-item "
data-value="'Noto Sans CJK SC Regular'">Noto Sans
Regular</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-right-font-bold">
<span
class="bilibili-player-video-danmaku-setting-right-font-bold-box bui bui-checkbox bui-dark"><input
class="bui-checkbox-input" type="checkbox" aria-label="粗体">
<label class="bui-checkbox-label">
<span class="bui-checkbox-icon bui-checkbox-icon-default"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M8 6a2 2 0 00-2 2v16a2 2 0 002 2h16a2 2 0 002-2V8a2 2 0 00-2-2H8zm0-2h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-icon bui-checkbox-icon-selected"><svg
xmlns="http://www.w3.org/2000/svg" width="32" height="32"
viewBox="0 0 32 32">
<path
d="M13 18.25l-1.8-1.8c-.6-.6-1.65-.6-2.25 0s-.6 1.5 0 2.25l2.85 2.85c.318.318.762.468 1.2.448.438.02.882-.13 1.2-.448l8.85-8.85c.6-.6.6-1.65 0-2.25s-1.65-.6-2.25 0l-7.8 7.8zM8 4h16c2.21 0 4 1.79 4 4v16c0 2.21-1.79 4-4 4H8c-2.21 0-4-1.79-4-4V8c0-2.21 1.79-4 4-4z">
</path>
</svg></span>
<span class="bui-checkbox-name">粗体</span>
</label></span>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-right-fontborder">
<div class="bilibili-player-video-danmaku-setting-right-fontborder-title">描边类型
</div>
<div
class="bilibili-player-video-danmaku-setting-right-fontborder-content bui bui-radio bui-dark">
<div class="bui-radio-wrap bui-radio-button">
<div class="bui-radio-group" style="margin: 0 -4px;">
<label class="bui-radio-item" style="margin: 0 4px;">
<input type="radio" class="bui-radio-input" value="0"
name="bui-radio4">
<span class="bui-radio-label">
<span class="bui-radio-text">重墨</span>
</span>
</label>
<label class="bui-radio-item" style="margin: 0 4px;">
<input type="radio" class="bui-radio-input" value="1"
name="bui-radio4">
<span class="bui-radio-label">
<span class="bui-radio-text">描边</span>
</span>
</label>
<label class="bui-radio-item" style="margin: 0 4px;">
<input type="radio" class="bui-radio-input" value="2"
name="bui-radio4">
<span class="bui-radio-label">
<span class="bui-radio-text">45°投影</span>
</span>
</label>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-danmaku-setting-right-separator"></div>
<div class="bilibili-player-video-danmaku-setting-right-reset bui bui-button bui-button-transparent"
tabindex="0" role="button">恢复默认设置</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bilibili-player-video-btn bilibili-player-video-btn-quality bilibili-player-video-btn-quality-mod">
<div class="bilibili-player-video-quality-menu bui bui-select bui-dark bui-select-quality-menu">
<div class="bui-select-wrap">
<div class="bui-select-border">
<div class="bui-select--header">
<span class="bui-select-result">
<span class="bilibili-player-video-quality-text"> 大会员 </span>
</span>
</div>
<div class="bui-select-list-wrap">
<ul class="bui-select-list">
` + category_1_html + `
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
`;
playera.append(bottomdiv);
//1.11.5修复移除关键div导致脚本失效
let playerPlaceholder = document.createElement('div');
playerPlaceholder.id = 'player_placeholder';
playera.append(playerPlaceholder);
//console.log($(".bui-switch-input").prop("checked"),document.querySelector("#player_module > div.bilibili-player-video-bottom-area > div.bui-switch > input").checked)
this.mouseEvent()
this.setbili()
}
this.setbili = function () {
//1.12.1 记忆功能
$(".bilibili-player-block-filter-type").each((liIndex, item) => {
let blockdmname = $(item).attr("data-name")
switch (blockdmname) {
case 'ctlbar_danmuku_scroll_on':
if (dmblock_scroll == 'off') {
$(item).attr("data-name", 'ctlbar_danmuku_scroll_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-scroll-disabled')
this.setdamuicon('ctlbar_danmuku_scroll_off', scroll_off)
for (let i = 0; i < CHANNEL_COUNT; i++) {
try { domtopdownPool[i].innerText = '' } catch { }
}
}
break;
case 'ctlbar_danmuku_top_on':
if (dmblock_top == 'off') {
$(item).attr("data-name", 'ctlbar_danmuku_top_off')
$(item).addClass("bpx-player-active")
// $(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-top-disabled')
this.setdamuicon('ctlbar_danmuku_top_off', top_off)
}
break;
case 'ctlbar_danmuku_bottom_on':
if (dmblock_bottom == 'off') {
$(item).attr("data-name", 'ctlbar_danmuku_bottom_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-bottom-disabled')
this.setdamuicon('ctlbar_danmuku_bottom_off', bottom_off)
}
break;
case 'ctlbar_danmuku_color_on':
if (dmblock_color == 'off') {
$(item).attr("data-name", 'ctlbar_danmuku_color_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-color-disabled')
this.setdamuicon('ctlbar_danmuku_color_off', color_off)
}
break;
case 'ctlbar_danmuku_special_on':
if (dmblock_special == 'off') {
$(item).attr("data-name", 'ctlbar_danmuku_special_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-advanced-disabled')
this.setdamuicon('ctlbar_danmuku_special_off', special_off)
}
break;
default:
break;
}
})
//console.log(buiSwitch)
if (buiSwitch == 'false') {
$(".bui-switch-input").attr("checked", false);
}
//1.12.1接口记忆修复
let index = commonFunctionObject.GMgetValue("index");
$(".bilibili-player-video-btn-quality-mod").find('.bui-select-item').removeClass("bui-select-item-active");
$(".bilibili-player-video-btn-quality-mod").find('.bui-select-item').each(function (lindex, item) {
if ($(item).attr("data-index") == index) {
$(item).addClass("bui-select-item-active");
}
})
//1.12.2去重 透明 设置
$(".bilibili-player-setting-flag").each((lindex, item) => {
let sliderwidth = $(item).width()
//console.log('repeatPrepeatPrepeatP',sliderwidth)
if (sliderwidth == 0) {
sliderwidth = 192
}
//console.log('repeatPrepeatPrepeatP2',sliderwidth)
$(item).find(".bui-bar-normal").css('transform',
`scaleX(${parseInt(repeatP) / 100})`)
$(item).find(".bui-thumb").css('transform',
`translateX(${parseInt(repeatP) / 100 * sliderwidth}px)`)
$(item).find(".bui-thumb-tooltip").text(`${parseInt(repeatP)}%`)
})
$(".bilibili-player-setting-opacity").each((lindex, item) => {
let sliderwidth = $(item).width()
//console.log('opacityopacityopacity',sliderwidth)
if (sliderwidth == 0) {
sliderwidth = 192
}
$(item).find(".bui-bar-normal").css('transform',
`scaleX(${parseFloat(opacityNum)})`)
$(item).find(".bui-thumb").css('transform',
`translateX(${parseFloat(opacityNum) * sliderwidth}px)`)
$(item).find(".bui-thumb-tooltip").text(`${parseInt(parseFloat(opacityNum) * 100)}%`)
})
//1.12.3 字体大小 速度 区域
$(".bilibili-player-setting-speedplus").each((lindex, item) => {
let sliderwidth = $(item).width()
//console.log('repeatPrepeatPrepeatP',sliderwidth)
if (sliderwidth == 0) {
sliderwidth = 192
}
//console.log('repeatPrepeatPrepeatP2',sliderwidth)
$(item).find(".bui-bar-normal").css('transform',
`scaleX(${dmspeed - 0.5})`)
$(item).find(".bui-thumb").css('transform',
`translateX(${(dmspeed - 0.5) * sliderwidth}px)`)
$(item).find(".bui-thumb-tooltip").text(`${parseInt(dmspeed * 100)}%`)
})
$(".bilibili-player-setting-fontsize").each((lindex, item) => {
let sliderwidth = $(item).width()
//console.log('opacityopacityopacity',sliderwidth)
if (sliderwidth == 0) {
sliderwidth = 192
}
$(item).find(".bui-bar-normal").css('transform',
`scaleX(${parseFloat(fontSize / 25)})`)
$(item).find(".bui-thumb").css('transform',
`translateX(${parseFloat(fontSize / 25) * sliderwidth}px)`)
$(item).find(".bui-thumb-tooltip").text(`${parseInt(fontSize / 25*100-50)}%`)
})
$(".bilibili-player-setting-area").each((lindex, item) => {
let sliderwidth = $(item).width()
let sliderpct = 0
//console.log('opacityopacityopacity',sliderwidth)
if (sliderwidth == 0) {
sliderwidth = 192
}
if (dmArea == 1) {
sliderpct=1
} else if (dmArea == 0.85) {
sliderpct=0.65
} else if (dmArea == 0.5) {
sliderpct=0.31
} else {
sliderpct=0
}
$(item).find(".bui-thumb").css('transform',
`translateX(${sliderpct* sliderwidth}px)`)
})
}
this.getset = function () {
//1.12.1 记忆功能
dmblock_scroll = commonFunctionObject.GMgetValue("scroll");
if (dmblock_scroll == null) {
dmblock_scroll = 'on'
commonFunctionObject.GMsetValue("scroll", dmblock_scroll);
}
dmblock_top = commonFunctionObject.GMgetValue("top");
if (dmblock_top == null) {
dmblock_top = 'on'
commonFunctionObject.GMsetValue("top", dmblock_top);
}
dmblock_bottom = commonFunctionObject.GMgetValue("bottom");
if (dmblock_bottom == null) {
dmblock_bottom = 'on'
commonFunctionObject.GMsetValue("bottom", dmblock_bottom);
}
dmblock_color = commonFunctionObject.GMgetValue("color");
if (dmblock_color == null) {
dmblock_color = 'on'
commonFunctionObject.GMsetValue("color", dmblock_color);
}
dmblock_special = commonFunctionObject.GMgetValue("special");
if (dmblock_special == null) {
dmblock_special = 'on'
commonFunctionObject.GMsetValue("special", dmblock_special);
}
buiSwitch = commonFunctionObject.GMgetValue("buiSwitch");
if (buiSwitch == null) {
buiSwitch = 'true'
commonFunctionObject.GMsetValue("buiSwitch", buiSwitch);
}
repeatP = commonFunctionObject.GMgetValue('repeatP');
//console.log('去重读', repeatP,commonFunctionObject.GMgetValue('repeatP'))
if (repeatP == null) {
repeatP = '0'
commonFunctionObject.GMsetValue("repeatP", repeatP);
}
//console.log('去重读2', repeatP,commonFunctionObject.GMgetValue('repeatP'))
opacityNum = commonFunctionObject.GMgetValue('opacityNum');
//console.log('透明读', opacityNum,commonFunctionObject.GMgetValue('opacityNum'))
if (opacityNum == null) {
opacityNum = '1'
commonFunctionObject.GMsetValue("opacityNum", opacityNum);
}
setdomOpacity();
fontSize = commonFunctionObject.GMgetValue('fontSize');
if (fontSize == null) {
fontSize = '25'
commonFunctionObject.GMsetValue("fontSize", fontSize);
}
setdomFontsize();
dmspeed = commonFunctionObject.GMgetValue('dmspeed');
if (dmspeed == null) {
dmspeed = 1
commonFunctionObject.GMsetValue("dmspeed", dmspeed);
}
dmArea = commonFunctionObject.GMgetValue('dmArea');
if (dmArea == null) {
dmArea = 1
commonFunctionObject.GMsetValue("dmArea", dmArea);
}
}
this.mouseEvent = function () {
//1.11.5 弹幕开关
let buiSwitchbtn = $(".bui-switch-input");
buiSwitchbtn.click(function () {
//let buiSwitchbtn = $(".bui-switch-input").prop("checked");
//console.log(buiSwitchbtn);
if ($(".bui-switch-input").prop("checked")) {
postdownmessage({
str: 'checktrue'
})
commonFunctionObject.GMsetValue('buiSwitch', 'true');
//console.log(commonFunctionObject.GMgetValue("buiSwitch"))
} else {
postdownmessage({
str: 'checkfalse'
})
commonFunctionObject.GMsetValue('buiSwitch', 'false');
}
});
//1.11.8 滑块
$(".bui-slider").each(function () {
$(this).mousedown(
function (e) {
$(this).on('mousemove.drag', function (e) {
let el = $(this);
let os = el.offset();
let mouseX = e.pageX - os.left;
let itemlong = el.width() - 6;
//console.log(itemlong,mouseX)
//alert(mouseX/$(this).width())
if (mouseX <= itemlong && mouseX >= -0.5) {
//bilibili-player-setting-area
let sliderpct = Math.ceil(mouseX / itemlong * 100)
let sliderclass = el.attr('class')
//alert(sliderclass.indexOf('bilibili-player-setting-area'))
if (sliderclass.indexOf('bilibili-player-setting-area') != -1) {
if (sliderpct > 83) {
$(this).find(".bui-thumb").css('transform',
`translateX(${itemlong}px)`)
dmArea = 1
} else if (sliderpct > 49) {
$(this).find(".bui-thumb").css('transform',
`translateX(${itemlong * 0.65}px)`
)
dmArea = 0.85
} else if (sliderpct > 16) {
$(this).find(".bui-thumb").css('transform',
`translateX(${itemlong * 0.31}px)`
)
dmArea = 0.5
} else {
$(this).find(".bui-thumb").css('transform',
`translateX(${0}px)`)
dmArea = 0.25
}
} else {
$(this).find(".bui-thumb").css('transform',
`translateX(${mouseX}px)`)
}
$(this).find(".bui-bar-normal").css('transform',
`scaleX(${sliderpct / 100})`)
$(this).find(".bui-thumb-tooltip").css('opacity', `1`)
if (sliderclass.indexOf('bilibili-player-setting-fontsize') != -1 || sliderclass.indexOf('bilibili-player-setting-speedplus') != -1) {
$(this).find(".bui-thumb-tooltip").text(`${50 + sliderpct}%`)
} else {
$(this).find(".bui-thumb-tooltip").text(`${sliderpct}%`)
}
//$(".bilibili-player-video-info-danmaku-text").text(sliderpct)
if (sliderclass.indexOf('bilibili-player-setting-flag') != -1) {
repeatSlider = true;
} else if (sliderclass.indexOf('bilibili-player-setting-opacity') != -1) {
opacitySlider = true;
} else if (sliderclass.indexOf('bilibili-player-setting-fontsize') != -1) {
fontSizeSlider = true;
} else if (sliderclass.indexOf('bilibili-player-setting-speedplus') != -1) {
dmspeedSlider = true;
} else if (sliderclass.indexOf('bilibili-player-setting-area') != -1) {
dmAreaSlider = true;
}
}
})
}
)
})
$(document).mouseup(function (e) {
let slideron = true
//1.12.2 去重和透明
if (repeatSlider == true) {
repeatP = parseInt($(".bilibili-player-setting-flag").find('.bui-thumb-tooltip').text().replace("%", "")).toString()
commonFunctionObject.GMsetValue('repeatP', repeatP);
//console.log('去重写', repeatP,commonFunctionObject.GMgetValue('repeatP'))
postdownmessage({
str: 'repeatP',
p: repeatP
})
} else if (opacitySlider == true) {
opacityNum = (parseInt($(".bilibili-player-setting-opacity").find('.bui-thumb-tooltip').text().replace("%", "")) / 100).toString()
//console.log('透明写', opacityNum,commonFunctionObject.GMgetValue('opacityNum'))
postdownmessage({
str: 'opacityNum',
p: opacityNum
})
} else if (fontSizeSlider == true) {
fontSize = (Math.round($(".bilibili-player-setting-fontsize").find('.bui-thumb-tooltip').text().replace("%", "") / 100 * 25)).toString()
postdownmessage({
str: 'fontSize',
p: fontSize
})
} else if (dmspeedSlider == true) {
dmspeed = $(".bilibili-player-setting-speedplus").find('.bui-thumb-tooltip').text().replace("%", "") / 100
commonFunctionObject.GMsetValue('dmspeed', dmspeed);
postdownmessage({
str: 'dmspeed',
p: dmspeed
})
} else if (dmAreaSlider == true) {
commonFunctionObject.GMsetValue('dmArea', dmArea);
postdownmessage({
str: 'dmArea',
p: dmArea
})
} else {
slideron = false
}
if (slideron == true) {
repeatSlider = false;
opacitySlider = false;
fontSizeSlider = false;
dmspeedSlider = false;
dmAreaSlider == false;
$(".bui-slider").off('mousemove.drag');
$(".bui-slider").find(".bui-thumb-tooltip").css('opacity', `0`)
}
})
//1.11.8 接口按钮
$(".bui-select-item").each((liIndex, item) => {
item.addEventListener("click", () => {
$(".bui-select-item").removeClass("bui-select-item-active");
$(item).addClass("bui-select-item-active")
let index = parseInt($(item).attr("data-index"));
commonFunctionObject.GMsetValue('index', index);
this.videoreplace();
});
});
//1.12.1 设置按钮
//浏览XML弹幕
$('.bilibili-player-video-danmaku-setting-left-block-add').click(function () {
if (xmlhtml != null) { window.open(xmlhtml) } else {
let bv = $("a.av-link[target='_blank']")[0]
if (bv) {
$.getJSON("https://api.bilibili.com/x/player/pagelist?bvid=" + bv.innerText,
function (result) {
xmlhtml = `https://api.bilibili.com/x/v1/dm/list.so?oid=${result.data[0].cid}`
})
}
window.open(xmlhtml)
}
})
$('.bilibili-player-video-danmaku-setting-left-block-sync').click(function () {
//commonFunctionObject.GMopenInTab("https://showxi.xyz/mov/s/?sv=3&url="+window.location.href, false);
window.open("https://xbeibeix.com/api/bilibili/?monkey=" + window.location.href)
})
//屏蔽弹幕类型
$(".bilibili-player-block-filter-type").each((liIndex, item) => {
item.addEventListener("click", () => {
let blockdmname = $(item).attr("data-name")
let blockdmtype = $(item).attr("ftype")
//console.log(blockdmname)
switch (blockdmname) {
case 'ctlbar_danmuku_scroll_on':
$(item).attr("data-name", 'ctlbar_danmuku_scroll_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-scroll-disabled')
commonFunctionObject.GMsetValue(blockdmtype, 'off');
postdownmessage({
str: blockdmtype + 'off'
})
//1.12.2 修复分类屏蔽图标
this.setdamuicon('ctlbar_danmuku_scroll_off', scroll_off)
break;
case 'ctlbar_danmuku_scroll_off':
$(item).attr("data-name", 'ctlbar_danmuku_scroll_on')
$(item).removeClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-scroll')
commonFunctionObject.GMsetValue(blockdmtype, 'on');
postdownmessage({
str: blockdmtype + 'on'
})
//1.12.2 修复分类屏蔽图标
this.setdamuicon('ctlbar_danmuku_scroll_on', scroll_on)
break;
case 'ctlbar_danmuku_top_on':
$(item).attr("data-name", 'ctlbar_danmuku_top_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-top-disabled')
commonFunctionObject.GMsetValue(blockdmtype, 'off');
this.setdamuicon('ctlbar_danmuku_top_off', top_off)
postdownmessage({
str: blockdmtype + 'off'
})
break;
case 'ctlbar_danmuku_top_off':
$(item).attr("data-name", 'ctlbar_danmuku_top_on')
$(item).removeClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-top')
this.setdamuicon('ctlbar_danmuku_top_on', top_on)
commonFunctionObject.GMsetValue(blockdmtype, 'on');
postdownmessage({
str: blockdmtype + 'on'
})
break;
case 'ctlbar_danmuku_bottom_on':
$(item).attr("data-name", 'ctlbar_danmuku_bottom_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-bottom-disabled')
this.setdamuicon('ctlbar_danmuku_bottom_off', bottom_off)
commonFunctionObject.GMsetValue(blockdmtype, 'off');
postdownmessage({
str: blockdmtype + 'off'
})
break;
case 'ctlbar_danmuku_bottom_off':
$(item).attr("data-name", 'ctlbar_danmuku_bottom_on')
$(item).removeClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-bottom')
this.setdamuicon('ctlbar_danmuku_bottom_on', bottom_on)
commonFunctionObject.GMsetValue(blockdmtype, 'on');
postdownmessage({
str: blockdmtype + 'on'
})
break;
case 'ctlbar_danmuku_color_on':
$(item).attr("data-name", 'ctlbar_danmuku_color_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-color-disabled')
commonFunctionObject.GMsetValue(blockdmtype, 'off');
this.setdamuicon('ctlbar_danmuku_color_off', color_off)
postdownmessage({
str: blockdmtype + 'off'
})
break;
case 'ctlbar_danmuku_color_off':
$(item).attr("data-name", 'ctlbar_danmuku_color_on')
$(item).removeClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-color')
this.setdamuicon('ctlbar_danmuku_color_on', color_on)
commonFunctionObject.GMsetValue(blockdmtype, 'on');
postdownmessage({
str: blockdmtype + 'on'
})
break;
case 'ctlbar_danmuku_special_on':
$(item).attr("data-name", 'ctlbar_danmuku_special_off')
$(item).addClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-advanced-disabled')
this.setdamuicon('ctlbar_danmuku_special_off', special_off)
commonFunctionObject.GMsetValue(blockdmtype, 'off');
postdownmessage({
str: blockdmtype + 'off'
})
break;
case 'ctlbar_danmuku_special_off':
$(item).attr("data-name", 'ctlbar_danmuku_special_on')
$(item).removeClass("bpx-player-active")
//$(item).find('use').attr("xlink:href", '#bpx-svg-sprite-dantype-advanced')
this.setdamuicon('ctlbar_danmuku_special_on', special_on)
commonFunctionObject.GMsetValue(blockdmtype, 'on');
postdownmessage({
str: blockdmtype + 'on'
})
break;
default:
break;
}
})
})
}
this.start = function () {
this.operatOther();
this.getset();
}
this.setdamuicon = function (blockname, iconspan) {
$('.bilibili-player-block-filter-type').each((liIndex, item) => {
let blockdmname = $(item).attr("data-name")
//console.log('blockdmnameblockdmname',blockdmname,blockname)
if (blockdmname == blockname) {
$(item).find('.bilibili-player-block-filter-image').empty()
$(item).find('.bilibili-player-block-filter-image').append(iconspan)
}
})
}
}
//1.12.2调节透明
function setdomOpacity() {
commonFunctionObject.GMsetValue('opacityNum', opacityNum);
for (let i = 0; i < CHANNEL_COUNT; i++) {
for (let j = 0; j < domPool[i].length; j++) {
$(domPool[i][j]).css('opacity', parseFloat(opacityNum));
}
}
for (let i2 = 0; i2 < CHANNEL_COUNT; i2++) {
$(domtopdownPool[i2]).css('opacity', parseFloat(opacityNum));
}
}
//1.12.3调节字体
function setdomFontsize() {
commonFunctionObject.GMsetValue('fontSize', fontSize);
//CHANNEL_COUNT = Math.floor(player.clientHeight / fontSize) - 1;
for (let i = 0; i < CHANNEL_COUNT; i++) {
for (let j = 0; j < domPool[i].length; j++) {
//$(domPool[i][j]).css('fontSize', fontSize);
$(domPool[i][j]).css('top', fontSize * i + 'px');
//$(domPool[i][j]).css('top', (-j + Math.floor(player.clientHeight / fontSize) + 1) * fontSize + 'px');
refreshDom()
}
}
for (let i2 = 0; i2 < CHANNEL_COUNT; i2++) {
//$(domtopdownPool[i2]).css('fontSize', fontSize);
$(domtopdownPool[i2]).css('top', fontSize * i2 + 'px');
//$(domtopdownPool[i2]).css('top', (-j + Math.floor(player.clientHeight / fontSize) + 1) * fontSize + 'px');
//CHANNEL_COUNT = Math.floor(player.clientHeight / fontSize) - 1;
refreshDom()
}
}
(new superVideoHelper()).start();
})()