// ==UserScript== // @name 哔哩哔哩评论关键词屏蔽 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 拒绝评论开车刷烂梗! // @author cfx // @match *://www.bilibili.com/video/* // @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"); 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 = `
BiliBili评论屏蔽v1.0
待添加屏蔽词条
`; let UI = parseDom(HTML); let Btn = parseDom(`
添加词条➕
`); Btn.addEventListener('click',bilibiliShielderAddWord); UI.appendChild(Btn); let cssStyle = `` let Style = parseDom(cssStyle); document.body.appendChild(UI); document.body.appendChild(Style); } window.onload = function(){ createUI(); loadShieldWords(); updateShieldWords(); } document.body.onscroll= function(){ if(document.querySelector(".common").getBoundingClientRect().top-30