// ==UserScript== // @name 哔哩哔哩评论关键词屏蔽 // @namespace http://tampermonkey.net/ // @version 1.1 // @description 拒绝评论开车刷烂梗! // @description 对B站所有具有评论区的版块进行了匹配覆盖,优化了屏蔽逻辑。 // @description 修复了UI的一些显示BUG // @description 下个版本可能会增加用户屏蔽 // @description 感谢各位提出的意见! // @author cfx // @match *://www.bilibili.com/*/* // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; let shieldingWords = []; let loadShieldWords=()=>{ let localWords = localStorage.getItem("bilibili-shielding-words"); if(localWords){ shieldingWords = localWords.split(","); }else{ shieldingWords=[]; } } let setShieldWords = ()=>{ localStorage.setItem("bilibili-shielding-words",shieldingWords); } let parseDom = (arg)=> { let objE = document.createElement("div"); objE.innerHTML = arg; return objE.childNodes[0]; } let ifShielded = (word)=>{ for(let i of shieldingWords){ if(word.toString().indexOf(i.toString())!==-1 && i.toString()!==""){ return true; } } return false; } let filterComments = ()=>{ let allReplyComments = document.querySelectorAll(".comment-list .list-item .reply-item"); for (let i of allReplyComments){ let con = i.querySelector(".text-con"); if(ifShielded(i.innerText)){ con.innerHTML = "已屏蔽内容"; } } let allComments = document.querySelectorAll(".comment-list .list-item"); for (let i of allComments){ let con = i.querySelector('.text'); if(ifShielded(con.innerText)){ con.innerHTML = "已屏蔽内容"; } } } let bindEvents = () =>{ let moreReplyBtns = document.querySelectorAll(".btn-more"); let pageNumberChangeBtns = document.querySelectorAll(".tcd-number"); let prePageBtns = document.querySelectorAll(".pre"); let nextPageBtns = document.querySelectorAll(".next"); for(let i of moreReplyBtns){ i.addEventListener('click',()=>{ setTimeout(()=>{ filterComments(); bindEvents(); },1000); }) } for(let i of pageNumberChangeBtns){ i.addEventListener('click',()=>{ setTimeout(()=>{ filterComments(); bindEvents(); },1000); }) } for(let i of prePageBtns){ i.addEventListener('click',()=>{ setTimeout(()=>{ filterComments(); bindEvents(); },1000); }) } for(let i of nextPageBtns){ i.addEventListener('click',()=>{ setTimeout(()=>{ filterComments(); bindEvents(); },1000); }) } } let updateShieldWords = ()=>{ let container = document.querySelector("#bilibili-shielder"); if(!shieldingWords.length){ container.innerHTML = "待添加屏蔽词条"; }else{ container.innerHTML = ""; } for(let i of shieldingWords){ let line = parseDom(`
`); let word = parseDom(`${i}`); let btn = parseDom(`❌`); btn.onclick=()=>{ for(let index in shieldingWords){ if(shieldingWords[index]===i){ shieldingWords.splice(index,1); } } setShieldWords(); window.location.reload(); } line.appendChild(word); line.appendChild(btn); container.appendChild(line); } } let bilibiliShielderAddWord = ()=>{ let word = prompt("请输入你的屏蔽词"); if(shieldingWords.indexOf(word)==-1&&word!==null&&word!==""){ shieldingWords.push(word); setShieldWords(); updateShieldWords(); filterComments(); } } let createUI = () =>{ let HTML = `