哔滴影视广告屏蔽(图片广告屏蔽及视频广告跳过)
// ==UserScript== // @name 哔滴影视广告屏蔽 // @namespace http://tampermonkey.net/ // @version 0.1.3 // @description 哔滴影视广告屏蔽(图片广告屏蔽及视频广告跳过) // @author limbopro // @match https://www.btbdys.com/* // @match https://www.bdys01.com/* // @match https://www.bdys02.com/* // @match https://www.bdys03.com/* // @match https://www.bdys04.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=btbdys.com // @grant none // @run-at document-end // @license GNU GPLv3 // ==/UserScript== const btbdys_css = ".ayx[style^=\"position\: fixed;bottom\"],#ad-index,#adsbox,.ayx[style=\"display:block;\"],.ayx[style^=\"position: fixed;bottom\"],a[target*=_new] {display:none !important;}" // 哔滴影视广告样式 const url = document.location.href; const url_regx = "/play/"; css_adsRemove(btbdys_css, 500); hrefAttribute_set(); if (url.indexOf(url_regx) !== -1) { videoAds_accelerateSkip(0.1); } // 动态创建引用内部资源 内嵌式样式 内嵌式脚本 function css_adsRemove(newstyle, delaytime, id) { setTimeout(() => { var creatcss = document.createElement("style"); creatcss.id = id; creatcss.innerHTML = newstyle; document.getElementsByTagName('head')[0].appendChild(creatcss) console.log("CSS样式新增完毕!"); }, delaytime); } /* 视频页广告加速跳过 */ function videoAds_accelerateSkip(fasterx) { // https://github.com/gorhill/uBlock/wiki /// nano-setInterval-booster.js /// alias nano-sib.js let needleArg = '{{1}}'; if (needleArg === '{{1}}') { needleArg = ''; } let delayArg = '{{2}}'; if (delayArg === '{{2}}') { delayArg = ''; } let boostArg = '{{3}}'; if (boostArg === '{{3}}') { boostArg = ''; } if (needleArg === '') { needleArg = '.?'; } else if (needleArg.charAt(0) === '/' && needleArg.slice(-1) === '/') { needleArg = needleArg.slice(1, -1); } else { needleArg = needleArg.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } const reNeedle = new RegExp(needleArg); let delay = delayArg !== '*' ? parseInt(delayArg, 10) : -1; if (isNaN(delay) || isFinite(delay) === false) { delay = 1000; } let boost = parseFloat(boostArg); boost = isNaN(boost) === false && isFinite(boost) ? Math.min(Math.max(boost, fasterx), 50) : fasterx; self.setInterval = new Proxy(self.setInterval, { apply: function (target, thisArg, args) { const [a, b] = args; if ( (delay === -1 || b === delay) && reNeedle.test(a.toString()) ) { args[1] = b * boost; } return target.apply(thisArg, args); } }); }; // 禁止新页面跳转 function hrefAttribute_set() { var href = document.querySelectorAll("a"); var i; if (href.length > 0) { console.log("新标签页打开链接已被禁止;") for (i = 0; i < href.length; i++) { href[i].target = "_self"; } } }