眼不见为净,耳不听为清,心不想则静
// ==UserScript==// @name BiliBili Tags Blocker BiliBili标签屏蔽助手// @namespace https://greasyfork.org/zh-CN/users/924205-xiao-xi// @version 0.11.2.2// @description 眼不见为净,耳不听为清,心不想则静// @author xiaoxi// @license MIT// @include *://www.bilibili.com/*// @include *://t.bilibili.com/*// @include *://search.bilibili.com/*// @icon https://www.google.com/s2/favicons?sz=64&domain=bilibili.com// @require https://cdn.bootcdn.net/ajax/libs/jquery/2.2.4/jquery.min.js// @require https://unpkg.com/[email protected]/dist/ajaxhook.min.js// @require https://cdn.jsdelivr.net/npm/[email protected]/minified/arrive.min.js// @require https://greasyfork.org/scripts/407543-block-obj/code/Block_Obj.js?version=963893// @grant GM_xmlhttpRequest// @grant unsafeWindow// @grant GM_getValue// @grant GM.getValue// @grant GM_setValue// @grant GM.setValue// @grant GM_setClipboard// @grant GM.setClipboard// @grant GM_registerMenuCommand// @grant GM_addValueChangeListener// @run-at document-start// ==/UserScript==var tagsBlocker = {functionEnable: true,onlyChangeColorEnable: false,printLog: false,blurMode: false,hiddenMode: false,tagsArray: [],titlesArray: [],userNameArray: [],};var href = location.href;var matchSearch = href.match(/search.bilibili/);var matchPopular = href.match(/popular/);var matchRank = href.match(/\/popular\/rank/);var matchPost = href.match(/t.bilibili/);var matchVideo = href.match(/\/video\/BV/);var matchHome = href.match(/bilibili.com/);var blockObj = new Block_Obj('Tags_Blocker');const BASIC_STYLE = `.block_obj_checkbox_label {padding-left: 13px;}`;const bvTagsApi = 'https://api.bilibili.com/x/web-interface/view/detail/tag?bvid=';const searchAllApi = 'https://api.bilibili.com/x/web-interface/search/all/v2?';const searchVideoApi = 'https://api.bilibili.com/x/web-interface/search/type?search_type=video&';const videoInfoApi = 'https://api.bilibili.com/x/web-interface/view?bvid=';//加载选项document.arrive("body", { fireOnAttributesModification: true, onceOnly: true, existing: true }, function() {initSettingUI()});function initSettingUI(){blockObj.init({id: 'tagsBlocker',menu: '屏蔽设置',style: BASIC_STYLE,field: [{id: 'version',label: 'v0.11.2.2',type: 's',},{id: 'functionEnable',label: '启用屏蔽功能',title: '总开关',type: 'c',default: true,},{id: 'onlyChangeColorEnable',label: '看看屏蔽了什么',title: '更改屏蔽视频的背景色',type: 'c',default: false,},{id: 'printLog',label: '在控制台输出匹配的视频信息',title: '。。',type: 'c',default: false,},{label: '屏蔽模式',type: 's',},{id: 'blurMode',label: '模糊模式',type: 'c',default: false,},{id: 'hiddenMode',label: '隐藏模式',type: 'c',default: false,},{label: '标签关键字',type: 's',},{id: 'tagInput',label: '',placeholder: ' 同时输入多个时以英文逗号分隔 ',type: 'i',list_id: 'tagsArray',},{id: 'tagsArray',type: 'l',default: [],},{label: '标题关键字 (例如‘原 神’标题,请输入‘原神’)',type: 's',},{id: 'titleInput',label: '',placeholder: ' 同时输入多个时以英文逗号分隔 ',type: 'i',list_id: 'titlesArray',},{id: 'titlesArray',type: 'l',default: [],},{label: '用户名称 (动态页)',type: 's',},{id: 'nameInput',label: '',placeholder: ' 同时输入多个时以英文逗号分隔 ',type: 'i',list_id: 'userNameArray',},{id: 'userNameArray',type: 'l',default: [],},],events: {save: config => {tagsBlocker = config;},change: config => {tagsBlocker = config;},},})}class VideoCard{constructor(card,title,bv) {this.card = card; //DOM元素this.title = replaceAllSymbol(title); //标题this.bv = bv; //bv号this.av = null; //av号this.tags = null; //标签this.arcurl = null; //av号链接this.pic = null; //封面this.duration = null; //时长this.description = null; //简介this.play = null; //播放数this.danmaku = null; //弹幕数this.pubdate = null; //上传时间 , 时间戳this.senddate = null; //更新时间 , 时间戳this.displaytime = null; //显示时间this.mid = null; //up主IDthis.author = null; //up主this.typeName = null; //视频类型this.match = null; //匹配的标签this.where = null; //来源}}class Listener{constructor(targetNode, nth, parameter, options = {}) {this.targetNode = targetNode;this.nth = nth;this.options = options;this.parameter = parameter;}init(initMethod,callMethod){let targetNode = this.targetNode;let options = this.options;let parameter = this.parameter;let nth = this.nth;let node = null;function callback(mutationsList, observer) {if(mutationsList.length >= 1 && mutationsList[0].addedNodes.length != 0){callFunc(callMethod,mutationsList)}if(parameter == 'search'){callFunc(callMethod,mutationsList)}}let mutationObserver = new MutationObserver(callback);let checkTarget = setInterval(function () {if(node != undefined && node != null && node.length != 0){clearInterval(checkTarget);mutationObserver.observe(node, options);callFunc(initMethod,node)}else{node = $(targetNode)[nth];}}, 50);}}class Match{init(url,parameter,process,callMethod){return new Promise(function(resolve) {$.ajax(url + parameter.bv, {method: 'GET',headers: {"content-type": "application/json"},async: true,success: function (r###lt) {parameter.tags = r###lt.dataresolve(callFunc(callMethod,parameter,process));},error: function (r###lt) {console.log(r###lt)},});});}id(url,id,callMethod){return new Promise(function(resolve) {GM_xmlhttpRequest({method: 'GET',url: url + id,headers: {"content-type": "application/json"},async: true,onload: function (r###lt) {console.log(r###lt)//r###lt = JSON.parse(r###lt.responseText).data.r###lt;resolve(callFunc(callMethod,r###lt,id));},});});}searchInit(url,callMethod){return new Promise(function(resolve) {GM_xmlhttpRequest({method: 'GET',url: url,headers: {"content-type": "application/json"},onload: function (r###lt) {r###lt = JSON.parse(r###lt.responseText).data.r###lt;if(r###lt.length== 11){r###lt = r###lt[r###lt.length-1].data}resolve(callFunc(callMethod,r###lt,url));},});});}}var match = new Match();//==视频页==//async function videoInit(card){let info = $(card).children(".card-box").children(".info").children("a")let href = $(info).attr("href");let title = $(info).children('span').attr("title");let videoCard = $(card);let bv = getBvcountber(href);let v1 = new VideoCard(videoCard,title,bv);//if(bv != null){// let r###lt = await match.id(videoInfoApi,bv,getUserId);// v1.mid = r###lt.data.owner.mid// }return Promise.resolve(v1)}function videoListenerInit(targetNode){$.each($(targetNode).children(".video-page-card"), function(i, card){let v1 = videoInit(card).then(v1 =>{match.init(bvTagsApi,v1,true,finalMatch);});});}function videoListenerCall(targetNode){$.each(targetNode, function(i, m){let v1 = videoInit(m.addedNodes[0]).then(v1 =>{match.init(bvTagsApi,v1,true,finalMatch);});});}function ad1(){//.video-page-special-card//#live_recommand_report//#activity_votedocument.arrive(".video-page-special-card", { fireOnAttributesModification: true, onceOnly: true, existing: true }, function() {$(this).css({"display":"none"});});document.arrive("#live_recommand_report", { fireOnAttributesModification: true, onceOnly: true, existing: true }, function() {$(this).css({"display":"none"});});document.arrive("#activity_vote", { fireOnAttributesModification: true, onceOnly: true, existing: true }, function() {$(this).css({"display":"none"});});//结束视频$(document).arrive('.bpx-player-ending-related', {fireOnAttributesModification: true, onceOnly: true, existing: true},function(){$(this).remove();$('.bpx-player-ending-functions').animate({marginTop: 145, opacity: 'show'}, "slow");})$(document).arrive('.bpx-player-popup', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).remove();})$(document).arrive('.bpx-player-follow', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).remove();})//三连$(document).arrive('.bpx-player-popup-guide-all', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).remove();})//投票$(document).arrive('.bpx-player-popup-vote', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).remove();})//跳转其他视频$(document).arrive('.bpx-player-link', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).remove();})//评分$(document).arrive('.bpx-player-score', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).remove();})//推广视频$(document).arrive('.video-ad-creative-card', {fireOnAttributesModification: true, onceOnly: true, existing: true},function(){$(this).css({"display":"none"})})//右下角推广$(document).arrive('#right-bottom-banner', {fireOnAttributesModification: true, onceOnly: true, existing: true},function(){$(this).css({"display":"none"})})}$(document).arrive('.reply-notice', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).css({"display":"none"})})$(document).arrive('.trending', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){$(this).css({"display":"none"})})//==动态导航栏==//function barListenerInit(targetNode){let navbarListener = new Listener('.video-list', 0 , 'null', {childList: true})navbarListener.init(navbarListenerInit,navbarListenerCall)}function barListenerCall(targetNode){targetNode.map(r => {if(r.addedNodes[0] != null){let tab = $(r.addedNodes[0])if(tab.hasClass('video-tab')){let navbarListener = new Listener('.video-list', 0, 'null', {childList: true})navbarListener.init(navbarListenerInit,navbarListenerCall)}}})}async function navbarInit(card){let href = $(card).children(".main-container").children("a").attr("href");let title = $(card).children(".main-container").children(".center-box").children("a").attr('title')let name = $(card).children(".main-container").children(".center-box").children(".name-line").children(".user-name").text()let videoCard = $(card);let bv = getBvcountber(href)let v1 = new VideoCard(videoCard,title,bv);v1.author = name;v1.where = 'navbar'// if(bv != null){//let r###lt = await match.id(videoInfoApi,bv,getUserId);// v1.mid = r###lt.data.owner.mid// }return Promise.resolve(v1)}function navbarListenerInit(targetNode){let checkTarget = setInterval(function () {if($(targetNode).children(".list-item").length > 1){clearInterval(checkTarget);$.each($(targetNode).children(".list-item"), function(i, card){let v1 = navbarInit(card).then(v1 =>{match.init(bvTagsApi,v1,true,finalMatch);});});}}, 50);}function navbarListenerCall(targetNode){$.each(targetNode, function(i, m){let v1 = navbarInit(m.addedNodes[0]).then(v1 =>{match.init(bvTagsApi,v1,true,finalMatch);});});}//==热门页面==//async function initPopularVideoInfo(url){let l1 = url.indexOf('pn=');let num = url.substring(l1+3,url.length)let videoCardList = $(".video-card__content");console.log(videoCardList)if(videoCardList != null && videoCardList != undefined && videoCardList.length != 0){if(num != 1){if(tagsBlocker.blurMode){videoCardList = videoCardList.slice((num-1)*20,videoCardList.length)}}for(var i = 0 ; i < videoCardList.length ; i++){let href = $(videoCardList[i]).children("a").attr("href");let videoCard = $(videoCardList[i]).parent(".video-card");let title = $($(videoCard).children(".video-card__info")).children("p").attr("title");let v1 = new VideoCard(videoCard,title,"BV"+getBvcountber(href));v1.where = 'popular'// if(v1.bv != null){// let r###lt = await match.id(videoInfoApi,v1.bv,getUserId).then(r###lt => {// v1.mid = r###lt.data.owner.mid// });// }match.init(bvTagsApi,v1,true,finalMatch)}}}//==排行榜==//async function initRankVideoInfo(){let videoCardList = $(".rank-item");if(!location.href.match(/\/rank\/bangumi/) || !location.href.match(/\/rank\/guochan/) || !location.href.match(/\/rank\/documentary/) || !location.href.match(/\/rank\/movie/) || !location.href.match(/\/rank\/tv/) || !location.href.match(/\/rank\/variety/)){if(videoCardList != null && videoCardList != undefined && videoCardList.length != 0){for(var i = 0 ; i < videoCardList.length ; i++){let info = $(videoCardList[i]).children(".content").children(".info").children("a");let href = $(info).attr("href");let title = $(info).text();let videoCard = $(videoCardList[i]);let v1 = new VideoCard(videoCard,title,"BV"+getBvcountber(href));// if(v1.bv != null){// let r###lt = await match.id(videoInfoApi,v1.bv,getUserId).then(r###lt => {// v1.mid = r###lt.data.owner.mid// });// }match.init(bvTagsApi,v1,true,finalMatch)}}}}//==搜索页==//function initSearchVideoInfo(responses){let checkTarget = setInterval(function () {if(responses.length >= 1){let r = []let checkTarget1 = setInterval(function () {if(r.length > 1 ){setVideoInfo(r[0])clearInterval(checkTarget1);}else{$.each(responses,function(i,t){if(t.r###lt_type == 'video'){r.push(t)}})}}, 50);clearInterval(checkTarget);}}, 50);}function setVideoInfo(tagList){let videoList = $('.video-list.clearfix').children('.video-item.matrix')videoList.each(function(i,v){let tags = tagList.data[i].tag.split(',');let typeName = tagList.data[i].typename;let title = $($($(v).children('.info')).children('.headline')).children('a').attr('title')let v1 = new VideoCard($(v),title,-1);let newTags = [];tags.map(function(item) {let t = {tag_name : item}newTags.push(t)});v1.tags = newTags;v1.typeName = typeName;finalMatch(v1,true)})}//总页数var pageCount = 5;//date 范围//type api类型//rank 第一行选项//duration 第二行选项//channel 频道//channel2 子频道//second 范围秒//rangeDate 对比时间var selectedDuration = {date:null,type:null,rank:null,duration:null,channel:null,channel2:null,second:null,rangeDate:null};//监听URL前进后退变化window.onpopstate = function() {reSetDuration()};function switcherListenerInit(r###lt){let all = $(r###lt);beforeReSetDuration(all)}function switcherListenerCall(r###lt){let all = $(r###lt[0].target);beforeReSetDuration(all)}function beforeReSetDuration(all){if(all.hasClass('is-active')){selectedDuration.type = searchAllApireSetDuration()}let video = $($('.v-switcher-header-item')[1]);if(video.hasClass('is-active')){selectedDuration.type = searchVideoApireSetDuration()}}function reSetDuration(){setTimeout(function(){if(selectedDuration.date!= null){$(selectedDuration.date).addClass('active')generateApi(selectedDuration,false)}},500);}function reSetOption(){$(document).arrive('.filter-type.clearfix.order', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){let op1 = '<li id="filter-item-week" class="filter-item"><a>一周之内</a><li>'let op2 = '<li id="filter-item-month" class="filter-item"><a>一月之内</a><li>'let op3 = '<li id="filter-item-year" class="filter-item"><a>一年之内</a><li>'$(this).append(op1);$(this).append(op2);$(this).append(op3);let week = $('#filter-item-week');let month = $('#filter-item-month');let year = $('#filter-item-year');week.click(function(){week.addClass('active')month.removeClass('active')year.removeClass('active')selectedDuration.date = '#filter-item-week';selectedDuration.second = 604800;generateApi(selectedDuration,false)});month.click(function(){month.addClass('active')week.removeClass('active')year.removeClass('active')selectedDuration.date = '#filter-item-month';selectedDuration.second = 2678400;generateApi(selectedDuration,false)});year.click(function(){year.addClass('active')week.removeClass('active')month.removeClass('active')selectedDuration.date = '#filter-item-year';selectedDuration.second = 31536000;generateApi(selectedDuration,false)});})// $(document).arrive('.pages', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){// let next = '<li id="next_list" class="page-item"><button class="pagination-btn num-btn">下一批</button><li>';// $(this).append(next);// next = $('#next_list')// next.click(function(){// let preview = '<li class="page-item prev"><button class="nav-btn iconfont icon-arrowdown2">上一页</button></li>';// $('.pages').prepend(preview);// generateApi(selectedDuration,true)// });// })}function generateApi(date,next){selectedDuration.rangeDate = (Math.round(new Date() / 1000)) - date.second;let most = $('.filter-item,.order').children().slice(0,5)most.each(function(i,v){if($(v).hasClass('active')){let option = $(v).children('a').text()if(option == '综合排序'){selectedDuration.rank = '&order=totalrank'}if(option == '最多点击'){selectedDuration.rank = '&order=click'}if(option == '最新发布'){selectedDuration.rank = '&order=pubdate'}if(option == '最多弹幕'){selectedDuration.rank = '&order=dm'}if(option == '最多收藏'){selectedDuration.rank = '&order=stow'}}});let duration = $('.filter-item,.duration').children()duration.each(function(i,v){if($(v).hasClass('active')){let option = $(v).children('a').text()if(option == '全部时长'){selectedDuration.duration = '&duration=0'}if(option == '10分钟以下'){selectedDuration.duration = '&duration=1'}if(option == '10-30分钟'){selectedDuration.duration = '&duration=2'}if(option == '30-60分钟'){selectedDuration.duration = '&duration=3'}if(option == '60分钟以上'){selectedDuration.duration = '&duration=4'}}});selectedDuration.channel = '&tids_1=0'let keyWord = 'keyword='+$('#search-keyword').val()let page = $('.page-item.active').children('button').text().trim();if(next){page = Number(page+5)}let currentPage = '&page='+pagelet url = selectedDuration.type+keyWord+currentPage+selectedDuration.rank+selectedDuration.duration+selectedDuration.channelgetPageData(url)}async function getPageData(url){//请求并返回全部页面数据requsetOtherPage(url).then(list =>{//根据时间戳排序sortByDate(list).then(r###lt =>{//匹配标签matchVideoCard(r###lt).then(r###lt =>{//陈列排序后的视频displayVideoCard(r###lt)})})})}//请求并返回全部页面数据async function requsetOtherPage(url){let currentPagePrefix = url.indexOf('&page=');let currentPag###ffix = url.indexOf('&order');let currentPage = Number(url.substring(currentPagePrefix+6,currentPag###ffix))let allVideoCards = []for(var i = currentPage ; i < currentPage + pageCount ; i++){await match.searchInit(url,initPageData).then(list =>{list.map(v => { allVideoCards.push(v) })})url = url.replace('&page='+ i,'&page='+ Number(i+1))}return Promise.resolve(allVideoCards)}function initPageData(r###lt,url){return new Promise(function(resolve) {let list = [];r###lt.map((v,i) => {if(v.pubdate > selectedDuration.rangeDate){let v1 = new VideoCard(null,v.title,v.bvid);v1.av = v.aid;v1.arcurl = v.arcurl;v1.pic = v.pic;v1.duration = v.duration;v1.typename = v.typename;v1.description = v.description;v1.play = v.play;v1.danmaku = v.danmaku;v1.pubdate = v.pubdate;v1.senddate = v.senddate;v1.displaytime = date('Y-m-d',v.pubdate);v1.mid = v.mid;v1.author = v.author;list.push(v1)}resolve(list)})});}//根据时间戳排序function sortByDate(allVideoCards){return new Promise(function(resolve) {if(allVideoCards.length > 0){for (var i=0;i<allVideoCards.length;i++){for (var j=i;j<allVideoCards.length;j++){if(allVideoCards[i].pubdate < allVideoCards[j].pubdate){let n = allVideoCards[i]allVideoCards[i] = allVideoCards[j]allVideoCards[j] = n;}}}}resolve(allVideoCards)});}//匹配标签function matchVideoCard(allVideoCards){return new Promise(function(resolve) {let count = 0if(allVideoCards.length > 0){allVideoCards.map((r###lt,i) =>{match.init(bvTagsApi,r###lt,false,finalMatch).then(v =>{if(v instanceof VideoCard){r###lt = v;count += 1if(allVideoCards.length == count){resolve(allVideoCards)}}});})}else{resolve(allVideoCards)}});}//陈列排序后的视频function displayVideoCard(allVideoCards){let cardList = $('.video-list.clearfix');cardList.empty();if(allVideoCards.length > 0){allVideoCards.map((v,i) =>{if(v.match == null){let template = "<li class='video-item matrix'><a href='"+v.arcurl+"' title='"+v.title+"' target='_blank' class='img-anchor'> <div class='img'><div class='lazy-img'> <img alt='' src='"+v.pic+"' width='720' data-resolution-width='1620'></div><span class='so-imgTag_rb'>"+v.duration+"</span><div class='watch-later-trigger watch-later'></div><span class='mask-video'></span></div></a><div class='info'><div class='headline clearfix'><span class='type hide'>"+v.typename+"</span><a title='"+v.title+"' href='"+v.arcurl+"' target='_blank' class='title'>"+v.title+"</a></div><div class='des hide'>"+v.description+"</div><div class='tags'><span title='观看' class='so-icon watch-num'><i class='icon-playtime'></i>"+v.play+" </span><span title='弹幕' class='so-icon hide'><i class='icon-subtitle'></i>"+v.danmaku+" </span><span title='上传时间' class='so-icon time'><i class='icon-date'></i>"+v.displaytime+" </span><span title='up主' class='so-icon'><i class='icon-uper'></i><a href='https://space.bilibili.com/"+v.mid+"?from=search' target='_blank' class='up-name'>"+v.author+" </a></span></div></div></li>"cardList.append(template);}});}}//==动态==//async function initPostVideoInfo(){let postCardList = $(".bili-dyn-list__items").children(".bili-dyn-list__item");for(var i = 0 ; i < postCardList.length ; i++){let name = $(postCardList[i]).children(".bili-dyn-item").children(".bili-dyn-item__main").children(".bili-dyn-item__header").children(".bili-dyn-title").children(".bili-dyn-title__text").text()let info = $(postCardList[i]).children(".bili-dyn-item").children(".bili-dyn-item__main").children(".bili-dyn-item__body").children(".bili-dyn-content").children(".bili-dyn-content__orig").children(".bili-dyn-content__orig__major").children("a");let bv = getBvcountber($(info).attr("href"));let title = $(info).children('.bili-dyn-card-video__body');if (title.length == 1){title = title.children('.bili-dyn-card-video__title').text();}else{title = '';}let videoCard = $(postCardList[i]).children(".bili-dyn-item").children(".bili-dyn-item__main");let v1 = new VideoCard($(postCardList[i]),title,bv);v1.author = name.trim()//if(bv != null){// let r###lt = await match.id(videoInfoApi,bv,getUserId);// v1.mid = r###lt.data.owner.mid// }v1.where = 'post'match.init(bvTagsApi,v1,true,finalMatch)}}function matchTopic(){$(document).arrive('.relevant-topic__title', {fireOnAttributesModification: true, onceOnly: false, existing: true},function(){let parent = $($(this).parents('.relevant-topic'));let title = $(this).text();let successed = false;$.each(tagsBlocker.tagsArray,function(i,tag){if(title.indexOf(tag) != -1 && !successed){if(tagsBlocker.onlyChangeColorEnable){parent.css({"background":"blue"})}else{if(tagsBlocker.blurMode){parent.css({"filter":"blur(1rem)"});}if(tagsBlocker.hiddenMode){parent.css({"display":"none"});}}successed = true;}})$.each(tagsBlocker.titlesArray,function(i,mtitle){if(title.indexOf(mtitle) != -1 && !successed){if(tagsBlocker.onlyChangeColorEnable){parent.css({"background":"blue"})}else{if(tagsBlocker.blurMode){parent.css({"filter":"blur(1rem)"});}if(tagsBlocker.hiddenMode){parent.css({"display":"none"});}}successed = true;}})})}//==首页==////推荐async function homeInit(card){let href = $(card).children(".info-box").children("a").attr("href");let title = $(card).children(".info-box").children("a").children(".info").children(".title").attr('title')let videoCard = $(card);let bv = getBvcountber(href)let v1 = new VideoCard(videoCard,title,bv);// if(v1.bv != null){// let r###lt = await match.id(videoInfoApi,v1.bv,getUserId).then(r###lt => {// v1.mid = r###lt.data.owner.mid// });// }return v1}function homeListenerInit(){$.each($('.video-card-reco'), function(i, card){let v1 = homeInit(card).then(v1 =>{match.init(bvTagsApi,v1,true,finalMatch).then(r###lt =>{if(r###lt instanceof VideoCard){if(r###lt.match != null){$('.rcmd-box').append(r###lt.card)}}})});});}async function channelInit(card){let title = $($(card).children("a")[0]);let href = title.attr("href");let bv = getBvcountber(href)let videoCard = $(card);title = title.text().trim()let v1 = new VideoCard(videoCard,title,bv);// if(v1.bv != null){// let r###lt = await match.id(videoInfoApi,v1.bv,getUserId).then(r###lt => {// v1.mid = r###lt.data.owner.mid// });// }return v1}function initChannel(channel){let target = $(channel).children('.card-list').children('.zone-list-box')let checkTarget = setInterval(function () {let videoCardList = $(target).children('.video-card-common');if(videoCardList.length != 0){$.each(videoCardList, function(i, card){let v1 = channelInit(card).then(v1 =>{match.init(bvTagsApi,v1,true,finalMatch).then(r###lt =>{if(r###lt instanceof VideoCard){if(r###lt.match != null){$(target).append(r###lt.card)}}})});});clearInterval(checkTarget);}else{videoCardList = $(target).children('.video-card-common');}}, 50);}async function channelRankInit(index,card){let v1 = null;if(index!=0){let href = $($(card).children("a")[0]);let title = href.children("p").attr("title");href = href.attr("href");let bv = getBvcountber(href)let videoCard = $(card);v1 = new VideoCard(videoCard,title,bv);// if(v1.bv != null){// let r###lt = await match.id(videoInfoApi,v1.bv,getUserId).then(r###lt => {// v1.mid = r###lt.data.owner.mid// });// }}else{let href = $(card).children(".preview").children(".pic").children("a").attr('href');let title = $(card).children(".preview").children(".txt").children("a").children("p").text().trim();let bv = getBvcountber(href)let videoCard = $(card);v1 = new VideoCard(videoCard,title,bv);}return v1}function initChannelRank(rank){let target = $(rank).children('.rank-list')let checkTarget = setInterval(function () {let videoCardList = $(target).children('.rank-wrap');if(videoCardList.length != 0){$.each(videoCardList, function(i, card){let v1 = channelRankInit(i,card).then(v1 =>{match.init(bvTagsApi,v1,true,finalMatch).then(r###lt =>{if(r###lt instanceof VideoCard){if(r###lt.match != null){$(target).append(r###lt.card)}}})});});clearInterval(checkTarget);}else{videoCardList = $(target).children('.rank-wrap');}}, 50);}function finalMatch(parameter,process){let successed = false;$.each(parameter.tags,function(i,tag){$.each(tagsBlocker.tagsArray,function(i,mtag){//匹配到if((tag.tag_name.indexOf(mtag) != -1 || parameter.typeName.indexOf(mtag) != -1) && !successed){if(tag.tag_name.indexOf(mtag) != -1){parameter.match = mtag}if(tag.tag_name.indexOf(parameter.typeName) != -1){parameter.match = parameter.typeName}if(process){match1(parameter)}if(tagsBlocker.printLog){console.log(parameter)}successed = true}})})if(!successed){//匹配到if(parameter.where == 'post' || parameter.where == 'navbar'){if(tagsBlocker.userNameArray.includes(parameter.author) && !successed){parameter.match = parameter.authorif(process){match1(parameter)}if(tagsBlocker.printLog){console.log(parameter)}successed = true}}$.each(tagsBlocker.titlesArray,function(i,mtitle){//匹配到if(parameter.title.indexOf(mtitle) != -1 && !successed){parameter.match = mtitleif(process){match1(parameter)}if(tagsBlocker.printLog){console.log(parameter)}successed = true}})}return parameter}function match1(parameter){if(tagsBlocker.onlyChangeColorEnable){if(parameter.where == 'post'){parameter.card.children(".bili-dyn-item").children(".bili-dyn-item__main").css({"background":"blue"});}else{parameter.card.css({"background":"blue"})}}else{if(tagsBlocker.blurMode){parameter.card.css({"filter":"blur(1rem)"});}if(tagsBlocker.hiddenMode){if(parameter.where == 'popular'){parameter.card.remove()}else{parameter.card.css({"display":"none"});}}}}function getUserId(r###lt,id){return r###lt}function reSetUI(){let count = 0;document.arrive(".block_obj_input_btn", { fireOnAttributesModification: true, onceOnly: false, existing: true }, function() {if($(this).attr('title') == '展开列表'){let index = countlet targetNode = $($('.block_obj_list_textarea_div')[index]);$(this).click(function(){if(!targetNode.hasClass('expand')){targetNode.animate({maxHeight: 300, opacity: 'show'}, "slow");targetNode.addClass("expand");}else{targetNode.animate({maxHeight: 65, opacity: 'show'}, "slow");targetNode.removeClass("expand");}});count ++}});if (window.parent == window) {// 当前页面不在iframe中}else{$('#blockObj_tagsBlocker_expandSpan').animate({opacity: 'hide'}, 140);}}if (window.parent == window) {// 当前页面不在iframe中ajaxHook();}else{// 当前页面在iframe或者frameset中//动态导航栏let barListener = new Listener('.container', 0, 'null', {childList: true})barListener.init(barListenerInit,barListenerCall)}function ajaxHook() {ah.proxy({onResponse: (response, handler) => {//搜索页 例/all?keyword=原神if (!response.config.url.includes('/web-interface/search/default') && !response.config.url.includes('/web-interface/search/square') && response.config.url.includes('/web-interface/search')){let responses = [];let data = JSON.parse(response.response).dataif(data.r###lt.length == 11){responses.push(data.r###lt[data.r###lt.length-1])}if(data.r###lt.length == 20){let data1 = {data: data.r###lt,r###lt_type: 'video'}responses.push(data1)}if(selectedDuration.date != null){setTimeout(function(){generateApi(selectedDuration,false)},51);}else{initSearchVideoInfo(responses)}}//热门页面if (response.config.url.includes('/web-interface/popular')){setTimeout(function(){initPopularVideoInfo(response.config.url)},51);}//排行榜if (response.config.url.includes('rank')){setTimeout(function(){initRankVideoInfo()},50);}//首页if (response.config.url.includes('web-interface/index/top/rcmd')){setTimeout(function(){homeListenerInit()},50);}//首页分区if (response.config.url.includes('web-interface/dynamic/region')){//游戏区if (response.config.url.includes('rid=4')){setTimeout(function(){initChannel('#bili_report_game')initChannelRank('#bili_report_game')},50);}//汽车区if (response.config.url.includes('rid=223')){setTimeout(function(){initChannel('#bili_report_car')initChannelRank('#bili_report_car')},50);}//科技区if (response.config.url.includes('rid=188')){setTimeout(function(){initChannel('#bili_report_tech')initChannelRank('#bili_report_tech')},50);}//知识区if (response.config.url.includes('rid=36')){setTimeout(function(){initChannel('#bili_report_knowledge')initChannelRank('#bili_report_knowledge')},50);}//电影区if (response.config.url.includes('rid=23')){setTimeout(function(){initChannel('#bili_report_movie')//initChannelRank('#bili_report_movie')},50);}}//动态if (response.config.url.includes('web-dynamic/v1/feed/all')){setTimeout(function(){initPostVideoInfo()},50);}handler.next(response);},},unsafeWindow);}//移除所有符号var symbols = [' ','♂','【','】']function replaceAllSymbol(title) {$.each(symbols,function(i,k){if(title.indexOf(k) != -1){title = title.replaceAll(k,'')}})return title;}//通过url获得BV号function getBvcountber(video_link) {let bvcount = '';try {bvcount = /\/video\/(?:av|bv)(\w+)/i.exec(video_link)[1];} catch (e) {bvcount = null;}return bvcount;}//通过名称调用方法function callFunc(functionName){//根据函数名得到函数类型var func=eval(functionName);//创建函数对象,并调用return new func(arguments[1],arguments[2],arguments[3]);}/*** 和PHP一样的时间戳格式化函数* @param {string} format 格式* @param {int} timestamp 要格式化的时间 默认为当前时间* @return {string} 格式化的时间字符串*/function date(format, timestamp){var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());var pad = function(n, c){if((n = n + "").length < c){return new Array(++c - n.length).join("0") + n;} else {return n;}};var txt_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};var txt_months = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];var f = {// Dayd: function(){return pad(f.j(), 2)},D: function(){return f.l().substr(0,3)},j: function(){return jsdate.getDate()},l: function(){return txt_weekdays[f.w()]},N: function(){return f.w() + 1},S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'},w: function(){return jsdate.getDay()},z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0},// WeekW: function(){var a = f.z(), b = 364 + f.L() - a;var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){return 1;} else{if(a <= 2 && nd >= 4 && a >= (6 - nd)){nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");return date("W", Math.round(nd2.getTime()/1000));} else{return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);}}},// MonthF: function(){return txt_months[f.n()]},m: function(){return pad(f.n(), 2)},M: function(){return f.F().substr(0,3)},n: function(){return jsdate.getMonth() + 1},t: function(){var n;if( (n = jsdate.getMonth() + 1) == 2 ){return 28 + f.L();} else{if( n & 1 && n < 8 || !(n & 1) && n > 7 ){return 31;} else{return 30;}}},// YearL: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},//o not supported yetY: function(){return jsdate.getFullYear()},y: function(){return (jsdate.getFullYear() + "").slice(2)},// Timea: function(){return jsdate.getHours() > 11 ? "pm" : "am"},A: function(){return f.a().toUpperCase()},B: function(){// peter paul koch:var off = (jsdate.getTimezoneOffset() + 60)*60;var theSeconds = (jsdate.getHours() * 3600) + (jsdate.getMinutes() * 60) + jsdate.getSeconds() + off;var beat = Math.floor(theSeconds/86.4);if (beat > 1000) beat -= 1000;if (beat < 0) beat += 1000;if ((String(beat)).length == 1) beat = "00"+beat;if ((String(beat)).length == 2) beat = "0"+beat;return beat;},g: function(){return jsdate.getHours() % 12 || 12},G: function(){return jsdate.getHours()},h: function(){return pad(f.g(), 2)},H: function(){return pad(jsdate.getHours(), 2)},i: function(){return pad(jsdate.getMinutes(), 2)},s: function(){return pad(jsdate.getSeconds(), 2)},//u not supported yet// Timezone//e not supported yet//I not supported yetO: function(){var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;return t;},P: function(){var O = f.O();return (O.substr(0, 3) + ":" + O.substr(3, 2))},//T not supported yet//Z not supported yet// Full Date/Timec: function(){return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P()},//r not supported yetU: function(){return Math.round(jsdate.getTime()/1000)}};var exp = /[\\]?([a-zA-Z])/g;return format.replace(exp, function(t, s){let ret = null;if( t!=s ){// escapedret = s;} else if( f[s] ){// a date function existsret = f[s]();} else{// nothing specialret = s;}return ret;});}//检查jQueryvar checkJQuery = function () {let jqueryCdns = ['http://code.jquery.com/jquery-2.1.4.min.js','https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js','https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js','https://cdn.staticfile.org/jquery/2.1.4/jquery.min.js','https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js',];function isJQueryValid() {try {let wd = unsafeWindow;if (wd.jQuery && !wd.$) {wd.$ = wd.jQuery;}$();return true;} catch (exception) {return false;}}function insertJQuery(url) {setTimeout(function(){let checkJQuery = setInterval(function () {if(document == undefined && document != null && document.createElement('script') == undefined && document.createElement('script') != null){let script = document.createElement('script');script.src = url;document.head.appendChild(script);return script;clearInterval(checkJQuery);}}, 100);},500);}function converProtocolIfNeeded(url) {let isHttps = location.href.indexOf('https://') != -1;let urlIsHttps = url.indexOf('https://') != -1;return script;if (isHttps && !urlIsHttps) {return url.replace('http://', 'https://');} else if (!isHttps && urlIsHttps) {return url.replace('https://', 'http://');}return url;}function waitAndCheckJQuery(cdnIndex, resolve) {if (cdnIndex >= jqueryCdns.length) {iLog.e('无法加载 JQuery,正在退出。');resolve(false);return;}let url = converProtocolIfNeeded(jqueryCdns[cdnIndex]);iLog.i('尝试第 ' + (cdnIndex + 1) + ' 个 JQuery CDN:' + url + '。');let script = insertJQuery(url);setTimeout(function () {if (isJQueryValid()) {iLog.i('已加载 JQuery。');resolve(true);} else {iLog.w('无法访问。');script.remove();waitAndCheckJQuery(cdnIndex + 1, resolve);}}, 100);}return new Promise(function (resolve) {if (isJQueryValid()) {iLog.i('已加载 jQuery。');resolve(true);} else {iLog.i('未发现 JQuery,尝试加载。');waitAndCheckJQuery(0, resolve);}});}//检查脚本参数var checkScriptVariate = setInterval(function () {tagsBlocker = blockObj.getConfig();if(tagsBlocker.tagsArray != null){clearInterval(checkScriptVariate);}}, 500);function ILog() {this.prefix = '';this.v = function (value) {if (level <= this.LogLevel.Verbose) {console.log(this.prefix + value);}}this.i = function (info) {if (level <= this.LogLevel.Info) {console.info(this.prefix + info);}}this.w = function (warning) {if (level <= this.LogLevel.Warning) {console.warn(this.prefix + warning);}}this.e = function (error) {if (level <= this.LogLevel.Error) {console.error(this.prefix + error);}}this.d = function (element) {if (level <= this.LogLevel.Verbose) {console.log(element);}}this.setLogLevel = function (logLevel) {level = logLevel;}this.LogLevel = {Verbose: 0,Info: 1,Warning: 2,Error: 3,};let level = this.LogLevel.Verbose;}var inChecking = false;var matchSuccess = false;var jqItv = setInterval(function () {if (inChecking) {return;}inChecking = true;checkJQuery().then(function (isLoad) {if (isLoad){//视频页if (matchVideo && tagsBlocker.functionEnable && !matchSuccess) {matchSuccess = true;let videoListener = new Listener('.rec-list', 0, 'null', {childList: true})videoListener.init(videoListenerInit,videoListenerCall)ad1()}//搜索页if (matchSearch && tagsBlocker.functionEnable && !matchSuccess) {matchSuccess = true;$('div.search-button').click()let name = '.v-switcher-header-item';let switcher = new Listener(name, 0, 'search', { childList: true , attributes :true })switcher.init(switcherListenerInit,switcherListenerCall)reSetOption();}//动态if (matchPost && tagsBlocker.functionEnable && !matchSuccess) {matchSuccess = true;matchTopic()}//排行榜if (matchRank && tagsBlocker.functionEnable && !matchSuccess) {matchSuccess = true;setTimeout(function(){initRankVideoInfo()},50);}//首页if (matchHome && tagsBlocker.functionEnable && !matchSuccess) {matchSuccess = true;homeListenerInit()}reSetUI()clearInterval(jqItv);}inChecking = false;});}, 500);var iLog = new ILog();