// ==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.11.4 // @description test // @author p7 // @match https://www.bilibili.com/* // @match https://vip.parwix.com:4433/* // @match https://z1.m1907.cn/* // @match https://api.yueliangjx.com/* // @match https://showxi.xyz/* // @match https://okjx.cc/* // @run-at document-end // @grant GM_openInTab // @grant GM.openInTab // @grant GM_getValue // @grant GM.getValue // @grant GM_setValue // @grant GM.setValue // @grant GM_addStyle // @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js // @namespace https://greasyfork.org/users/789132 // @downloadURL none // ==/UserScript== (function () { var player var playerRect var minpool=[] //var minpoolout=[] var domPool = []; var domtopdownPool = []; var listobj var distance = 25 var fontSize = 25; 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; }; function getBV(vipiframe) { 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) { var xmlhtml = `https://api.bilibili.com/x/v1/dm/list.so?oid=${result.data[0].cid}` //`https://api.bilibili.com/x/v1/dm/list.so?oid=283060255` //ajax解析xml文件 $.ajax({ url: xmlhtml, dataType: "xml", success: function (xml) { vipiframe.postMessage({obj:xmlToJson(xml),str:'xmllist'},'*'); } })}) } else { setTimeout(function () { getBV(vipiframe)}, 500) } } function receiveInfoFromAnotherDomain(){ //首先让window添加一个事件监听函数,表明它可以监听窗口对象的message事件 //它受到事件时,会先判断是否来自指定的Domain(不是所有Domain丢过来的事件它都处理的) window.addEventListener("message",function(ev){ switch (window.location.host) { case 'www.bilibili.com': if(ev.origin!='https://www.bilibili.com'&&ev.origin!='https://message.bilibili.com'){ console.log(ev.origin,' message to',window.location.href,ev.data); //window.postMessage({str:'test1'},ev.origin); if(window.frames[0]&&ev.data.str!='来自iframe:'){ //window.frames[0].postMessage({str:'test2'},'*'); if(ev.data.str=='hasplayer'){ getBV(window.frames[0]) } } if(window.frames[0].frames[0]&&ev.data.str!='来自iframe:'){ //window.frames[0].frames[0].postMessage({str:'test3'},'*'); if(ev.data.str=='hasplayer'){ getBV(window.frames[0].frames[0]) } } } break default: //if(ev.origin=='https://www.bilibili.com'){ //console.log(ev.origin,' message to',window.location.href,ev.data); window.top.postMessage({web:window.location.href,obj:ev.data,str:'来自iframe:',from:ev.origin},'*'); if(ev.data.str=='xmllist'){ listobj=ev.data.obj } }}) //将json字符串转为json对象,然后从中分离出原始信息 //var personInfoJSON = JSON.parse(ev.data); } function detecH5Player(findplayertime) { player = document.querySelector('video') if (player) { //console.log(window.location.href+'发现h5') receiveInfoFromAnotherDomain() window.top.postMessage({str:'hasplayer',web:window.location.href},'*'); playerRect = player.getBoundingClientRect() initcss() player.addEventListener('pause', function () {//暂停开始执行的函数 //console.log('pause') //console.log($('video')[0].paused) $('.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).css('transition',`transform 0s linear`); }) }); 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) 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}px)`; }) }) player.addEventListener('timeupdate', function () { if(minpool.length==0&&listobj){ //window.top.postMessage({obj:'player.duration:'+player.duration,str:'来自iframe:',from:window.location.href},'*'); 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= 4500){ //console.log('lasttime2:'+lasttime+' '+typeof lasttime); element.innerText = '' element.name = '' } } }) if(minpool.length!=0 && domPool.length!=0){ 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'){ 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') { 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 { // 轮询检测 setTimeout(function () { console.log(window.location.href+'开始检测h5',findplayertime,new Date().getTime()-findplayertime) if(new Date().getTime()-findplayertime<=5000){ detecH5Player(findplayertime)} }, 500) } } let hasPosition = []; var MAX_DM_COUNT = 8 var CHANNEL_COUNT = 0 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(){ MAX_DM_COUNT = 10; CHANNEL_COUNT = Math.floor(player.clientHeight/fontSize); // 先new一些span 重复利用这些DOM for (let j = 0; j < 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.willChange='auto' // 初始化dom的位置 通过设置className dom.className = 'right'; // DOM的通道是固定的 所以设置好top就不需要再改变了 dom.style.top = j * fontSize + 'px'; player.parentNode.appendChild(dom); // 放入改通道的DOM池 doms.push(dom); // 每次到transition结束的时候 就是弹幕划出屏幕了 将DOM位置重置 再放回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); 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 * fontSize + 'px'; dom2.className = 'topdown'; player.parentNode.appendChild(dom2); domtopdownPool.push(dom2); } } /** * 获取一个可以发射弹幕的通道 没有则返回-1 */ function getChannel() { for (let i = 0; i < CHANNEL_COUNT; i++) { //let channelArray = 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 + ']'); let num16 = parseInt(arrpJson.rgb).toString(16) dom.style.color = '#' + (Array(6).join(0) + num16).slice(-6) dom.style.fontSize = arrpJson.size + 'px' // 如果为每个弹幕设置 transition 可以保证每个弹幕的速度相同 这里没有保证速度相同 dom.style.transition = `transform ${0.0074*(dom.clientWidth+player.clientWidth)}s linear`; // 设置弹幕的位置信息 性能优化 left -> transform dom.style.transform = `translateX(${-dom.clientWidth}px)`; dom.style.willChange='transform' dom.className = 'left'; } function shoottopdownDanmu(dom, arrpJson, channel) { dom.innerText = arrpJson.text; dom.name = new Date().getTime() console.log(' biu2~ [' + arrpJson.text + ']'); let num16 = parseInt(arrpJson.rgb).toString(16) dom.style.fontSize = arrpJson.size + 'px' dom.style.color = '#' + (Array(6).join(0) + num16).slice(-6) // 设置弹幕的位置信息 性能优化 left -> transform dom.style.transform = `translateX(${(player.clientWidth-dom.clientWidth)/2}px)`; } var $ = $ || window.$; var originalInterfaceList = [ {"name":"Parwix","category":"1","url":"https://vip.parwix.com:4433/player/?url="}, {"name":"月亮","category":"1","url":"https://api.yueliangjx.com/?url="}, {"name":"1907","category":"1","url":"https://z1.m1907.cn/?jx="}, {"name":"showxi[多线]","category":"1","url":"https://showxi.xyz/mov/s/?sv=3&url="}, {"name":"OK[多线]","category":"1","url":"https://okjx.cc/?url="}, ]; /** * 共有方法 */ function commonFunction(){ this.GMgetValue = function (name, value) { //得到存在本地的数据 if (typeof GM_getValue === "function") { return GM_getValue(name, value); } else { return GM.getValue(name, value); } }; this.GMsetValue = function(name, value){ //设置存在本地的数据 if (typeof GM_setValue === "function") { return GM_setValue(name, value); } else { return GM.setValue(name, value); } }; this.GMaddStyle = function(css){ //插入css var myStyle = document.createElement('style'); myStyle.textContent = css; var doc = document.head || document.documentElement; doc.appendChild(myStyle); }; this.GMopenInTab = function(url, open_in_background){ //新标签页打开网址 if (typeof GM_openInTab === "function") { GM_openInTab(url, open_in_background); } else { GM.openInTab(url, open_in_background); } }; 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.elementId = Math.ceil(Math.random()*100000000); this.innerParse = function(url) { //内嵌解析 $("#iframe-player").attr("src", url); }; 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 += "
  • " + item.name + "
  • "; } }); //获得自定义位置 var left = 0; var top = 100; var Position = commonFunctionObject.GMgetValue("Position_" + window.location.host); if(!!Position){ left = Position.left; top = Position.top; } var cssMould = `#vip_movie_box`+this.elementId+` {cursor:pointer; position:fixed; top:` + top + `px; left:` + left + `px; width:0px; z-index:2147483647; font-size:16px; text-align:left;} #vip_movie_box`+this.elementId+` .item_text {} #vip_movie_box`+this.elementId+` .item_text .img_box{width:26px; height:35px;line-height:35px;text-align:center;background-color:#E5212E;} #vip_movie_box`+this.elementId+` .item_text .img_box >img {width:20px; display:inline-block; vertical-align:middle;} #vip_movie_box`+this.elementId+` .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`+this.elementId+` .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`+this.elementId+` .vip_mod_box_action li:hover{color:#E5212E; border:1px solid #E5212E;} #vip_movie_box`+this.elementId+` li.selected{color:#E5212E; border:1px solid #E5212E;} #vip_movie_box`+this.elementId+` .selected_text {margin-top:5px;} #vip_movie_box`+this.elementId+` .selected_text .img_box{width:26px; height:35px;line-height:35px;text-align:center;background-color:#E5212E;} #vip_movie_box`+this.elementId+` .selected_text .img_box >img {width:20px; height:20px;display:inline-block; vertical-align:middle;} #vip_movie_box`+this.elementId+` .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`+this.elementId+` .vip_mod_box_selected ul{overflow-y: auto;} #vip_movie_box`+this.elementId+` .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`+this.elementId+` .vip_mod_box_selected li:hover{color:#E5212E; border:1px solid #E5212E;} #vip_movie_box`+this.elementId+` .default-scrollbar-55678::-webkit-scrollbar{width:5px; height:1px;} #vip_movie_box`+this.elementId+` .default-scrollbar-55678::-webkit-scrollbar-thumb{box-shadow:inset 0 0 5px rgba(0, 0, 0, 0.2); background:#A8A8A8;} #vip_movie_box`+this.elementId+` .default-scrollbar-55678::-webkit-scrollbar-track{box-shadow:inset 0 0 5px rgba(0, 0, 0, 0.2); background:#F1F1F1;} ` commonFunctionObject.GMaddStyle(cssMould); var htmlMould = `
    线路
      ` + category_1_html + `
    `; $("body").append(htmlMould); }; this.mouseEvent = function(){ $(".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", () => { var videoPlayer = $("
    "); var index = parseInt($(item).attr("data-index")); var url = this.originalInterfaceList[index].url + window.location.href; if (document.getElementById("iframe-player") == null) { var player = $(this.node); player.empty(); player.append(videoPlayer); } this.innerParse(url); //把播放链接加入到自定义的div //把点击过的标红 $(".vip_mod_box_action li").removeClass("selected"); $(item).addClass("selected"); commonFunctionObject.GMsetValue("index",index); }); }); }; this.operatOther = function(){ //console.log(window.location.host) switch (window.location.host) { case 'www.bilibili.com': receiveInfoFromAnotherDomain() this.addHtmlElements(); //console.log("检测是否为vip视频"); let findviptime= new Date().getTime() let waitlimit = setInterval(() => { let arr1=[$(".bpx-player-toast-confirm").text(),$(".twp-title").text()] let arr2=['成为大会员','付费观看','成为大会员抢先看'] //let arr2=['成为大会员', '开通大会员观看','正在观看预览,大会员免费看全片', '正在观看预览,付费观看完整版'] let intersection = arr1.filter(item => new Set(arr2).has(item)) //console.log(arr1,arr2,intersection); if(intersection.length!=0){ console.log("是vip视频"); $(".player-limit-mask").remove(); $(".player-limit-mask pay").remove(); //$(".twp-container").hide() //$(".twp-mask.twp-float").hide() this.videoreplace() clearInterval(waitlimit); } if(new Date().getTime()-findviptime>=5000){ clearInterval(waitlimit) } }, 250); break default: try{ detecH5Player(new Date().getTime()) }catch(err){ console.log('h5:'+err) } break }} this.videoreplace = function(){ let videoPlayer = $("
    "); let index = commonFunctionObject.GMgetValue("index"); $(".vip_mod_box_action li").eq(index).addClass("selected"); if(index==null){ index=0 } let url2 = this.originalInterfaceList[index].url + window.location.href; console.log(index,url2); //alert(url); if (document.getElementById("iframe-player") == null) { let player = $(this.node); player.empty(); player.append(videoPlayer); } this.innerParse(url2); } this.start = function(){ this.operatOther(); this.mouseEvent(); } }; (new superVideoHelper()).start(); //最后统一调用 /* try{ //let web = window.location.href //if(web.indexOf("bilibili") != -1){ }catch(e){ console.log("全网VIP解析:error:"+e); }*/ })()