// ==UserScript== // @name 抖音关键词屏蔽 // @description 抖音屏蔽与相应关键词有关的视频与直播。左下角隐藏按钮进入设置页面、显示当前页面过滤数量。可批量添加关键词,用英文逗号,分割。支持导入导出。 // @namespace https://space.bilibili.com/482343 // @author 古海沉舟 // @license 古海沉舟 // @version 1.3.2 // @include *douyin.com* // @exclude *follow* // @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js // @run-at document-end // @grant GM_setValue // @grant GM_getValue // @grant GM_addValueChangeListener // @noframes // @downloadURL none // ==/UserScript== var i, j, c, fl, fk, x, a, b, mo = 0,al, glzs = 0; function debugx() { glzs++; $(".xfsz_sz").text(glzs); return 1; // 1 显示log; 0 隐藏log } var toObj = (arr) => { var obj = {}; for (var temp in arr) { obj[arr[temp]] = true; } return obj; }; var toArr = (obj) => { var arr = []; for (var temp in obj) { arr.push(temp); } return arr; }; var together = (a, b) => { for (var temp = 0; temp < b.length; temp++) { if (b[temp] != null && b[temp] != "" && b[temp] != "null" && b[temp].length < 40) { a.push(b[temp] + ""); } } }; var getUniq = (arr) => Array.from(new Set(arr)) //dd 都屏蔽, bt 只屏蔽正文关键词, zz 只屏蔽昵称 var dd = GM_getValue("dd", new Array("")); var bt = GM_getValue("golvci", new Array("")); var zz = GM_getValue("zz", new Array("")); var ddx = new Array(); var btx = new Array(); var zzx = new Array(); let glc = new Array(ddx, btx, zzx); let glcx = new Array(dd, bt, zz); let nglc = new Array(); let ml = new Array("dd", "golvci", "zz") let xfz = 0; together(ddx, dd); together(btx, bt); together(zzx, zz); GM_addValueChangeListener('dd', function (name, old_value, new_value, remote) { dd = new_value; glc[0] = dd.concat(); bt.push.apply(bt, dd); zz.push.apply(zz, dd); }) GM_addValueChangeListener('golvci', function (name, old_value, new_value, remote) { bt = new_value; glc[1] = bt.concat(); bt.push.apply(bt, dd); }) GM_addValueChangeListener('zz', function (name, old_value, new_value, remote) { zz = new_value; glc[2] = zz.concat(); zz.push.apply(zz, dd); }) function bc() { //保存 al=""; for (var i = 0; i < 3; i++) { glc[i] = getUniq(glc[i]); glcx[i] = new Array(); together(glcx[i], glc[i]); GM_setValue(ml[i], glcx[i]); glc[i] = new Array(); together(glc[i], glcx[i]); } dd = glc[0].concat(); bt = glc[1].concat(); zz = glc[2].concat(); bt.push.apply(bt, dd); zz.push.apply(zz, dd); } bc(); function gldq(){ var yj=0; $("audio,video").each(function (){ $(this).data('muted',true); //Store elements muted by the button. $(this).get(0).pause(); }); $("div.swiper-slide-active div.xgplayer-video-interaction-wrap div.aWrZztcM").each(function (){ if (yj==0 && $(this).text().indexOf("不感兴趣")>-1){ //console.log("点击 ",$(this)); $(this).click(); yj=1; } }); //$("div.xgplayer-playswitch > div > div > div.xgplayer-playswitch-next").click(); } function keydown(event) { //79 o 80 p //console.log(event.keyCode); if (event.keyCode == 79 || event.keyCode == 98) {//o,num2 console.log("不感兴趣当前 ",$("div.swiper-slide-active").text().replace(/\n/g, " ").replace(/\s\s/g, " ")); glzs++; $(".xfsz_sz").text(glzs); gldq(); } if (event.keyCode == 73 || event.keyCode == 97) {//i,num1 console.log("上一个视频"); $("div.xgplayer-playswitch > div > div > div.xgplayer-playswitch-prev").click(); } if (event.keyCode == 80 || event.keyCode == 99) {//p,num3 console.log("下一个视频"); $("div.xgplayer-playswitch > div > div > div.xgplayer-playswitch-next").click(); } } document.addEventListener('keydown', keydown, false); function glyc() { //console.log("开始过滤"); $(`div.swiper-slide-active`).each(function () { x = 0; var y = $(this).find("div.xgplayer-video-info-wrap > div.video-info-detail > div.account > div.account-name").text(); if (y==al)return; if (y!=null){ //console.log("判断昵称 : ", y); for (var j = 0; j < zz.length; j++) { if (zz[j] != "" && y.indexOf(zz[j]) > -1) { x = 1; console.log("删除 昵称 [ ", zz[j], " ] : ", y); break; } } al=y; } y=$(this).find("div.xgplayer-video-info-wrap > div.video-info-detail > div.title").text(); if (x==0 && y!=null){ //console.log("判断标题 ", " : ", y); for (j = 0; j < bt.length; j++) { if (bt[j] != "" && y.indexOf(bt[j]) > -1) { console.log("删除关键词 [ ", bt[j], " ] : ", y); x = 1; break; } } } if (x == 1) { glzs++; $(".xfsz_sz").text(glzs); gldq(); x=2; } }); return true; } var wz = location.href; var xh; glyc(); var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; var observer = new MutationObserver(function (records) { records.map(function (record) { if (record.addedNodes) { glyc(); } }); }); var option = { childList: true, subtree: true, }; observer.observe(document.body, option); //--------------左下角按钮--设置界面------------- let wdstyle = document.createElement('style'); wdstyle.innerHTML = ` .xfsz { height: 80px; width: 80px; position: fixed; transition: 0.5s; z-index: 9999; opacity: 0; left: 0px; bottom: 0px; } .xfsz:hover { opacity: 1; } .xfsz_an { left: 1vw; bottom: 1vw; background-color: rgb(29, 161, 242); border-radius: 19px; color: #fff; cursor: pointer; font-size: 20px; height: 38px; width: 38px; line-height: 38px; position: absolute; text-align: center; z-index: 99999; user-select: none; display: block; } .xfsz_sz{ left: 30px; bottom: 0px; background-color: #333; border-radius: 25px; color: #fff; cursor: pointer; font-size: 10px; height: 25px; width: 25px; line-height: 25px; position: absolute; text-align: center; z-index: 99999; user-select: none; display: block; } .xfck { display: none; background: #222; width: 700px; height: 640px; text-align: center; position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); color: #fff; z-index: 99999; border: solid 3px #000000; } .xfsc { background: #444; right: 20px; border-radius: 35px; margin-bottom: 13px; margin-right: 10px; margin-left: 10px; cursor: pointer; border: solid 5px #444; white-space: nowrap; float: left; } .xfsc:hover { background: #000; border: solid 5px #000; } .xfan { width: 100px; height: 40px; } .xfyy { overflow: auto; width: 700px; height: 430px; margin: auto; } #xf_sr { width: 580px; height: 32px; margin: auto; } #xf_dc { margin-left: 40px; margin-right: 40px; } .xfgb { position: absolute; right: 3px; top: 3px; cursor: pointer; font-size: 40px; width: 40px; height: 40px; line-height: 40px; } .xfgb:hover { background: #f00; } .tabbox ul { list-style: none; display: table; margin: 0; padding-left: 70px; width: 1000px; } .tabbox ul li { float: left; width: 120px; height: 50px; line-height: 50px; font-size: 12px; border: 1px solid #aaccff; cursor: pointer; margin-left: 10px; margin-right: 10px; } .tabbox ul li:hover{ background-color: #111; color: white; font-weight: bold; } .tabbox ul li.active { background-color: #004f69; color: white; font-weight: bold; } .xfan, #xf_sr { background: #333; color: #ddd; } .xfan:hover, #xf_sr:focus { background: #111; color: #fff; } `; let wddiv = `
0
抖音 过滤设置
X

不同过滤词用英文 , 分隔;导入会清空已有的,替换为导入的,导入空白等于删除全部过滤词。
  
`; document.body.appendChild(wdstyle); setTimeout(() => { document.querySelector("body").innderHTML += wddiv; $(wddiv).appendTo($("body")); //关闭 $(".xfgb").click(function () { $(".xfck").toggle(); }) $(".xfsz_an").click(function () { sc(); $(".xfck").toggle(); }); $(".tabbox ul li").click(function () { $(this).addClass("active").siblings().removeClass("active"); //获取选中元素的下标 var index = $(this).index(); $(this).parent().siblings().children().eq(index).addClass("active") .siblings().removeClass("active"); xfz = index; sc(); }) //删除 function sc() { $(".xfyy").empty(); glc[xfz].forEach(glcc => { let a = document.createElement("span"); $(a).text(glcc).addClass("xfsc"); $(a).click(function () { glc[xfz] = glc[xfz].filter(item => { return item != $(a).text(); }) bc(); sc(); }) $(a).appendTo($(".xfyy")); }); } sc(); //增加 $("#xf_zj").click(function () { nglc = $("#xf_sr").val().split(","); together(glc[xfz], nglc); glc[xfz] = getUniq(glc[xfz]); bc(); sc(); $("#xf_sr").val("") }); //导出 $("#xf_dc").click(function () { let s = ""; glc[xfz].forEach((x) => { s += x + "," }) $("#xf_sr").val(s).select(); }); //导入 $("#xf_dr").click(function () { glc[xfz] = $("#xf_sr").val().split(","); bc(); sc(); $("#xf_sr").val(""); }); function glsjy() { } }, 1000);