// ==UserScript== // @name 米游社关键词屏蔽 // @namespace http://hplzh.cn/ // @version 24.07.0004 // @description 屏蔽包含特定关键词的米游社文章/评论 // @author hplzh // @match *://*.miyoushe.com/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== 'use strict'; var kwarr = []; var kwarr0 = ["🤓", "👆", "高洁", "😋", "3°", "三度", "🤣", "😃", "☔", "🐶", "🌂", "☂️", "😡😡", "🤘😫🤘", "证书", "成品号"]; var settingDiv = document.createElement("div"); settingDiv.setAttribute("class", "mhy-account-center-content-container"); settingDiv.innerHTML = `
屏蔽关键词设置
` function loadKws() { var v = localStorage["cn-hplzh-mys-kwfilter-kwarr"]; if (v == undefined) { kwarr = kwarr0; return; } var varr = String(v).replace("\r\n", "\n").split("\n"); kwarr = varr.filter((str) => str.length > 0); } function saveKws() { var text = document.getElementById("cn-hplzh-kwfilter-text"); localStorage["cn-hplzh-mys-kwfilter-kwarr"] = text.value; loadKws(); loadKwT(); } function resetKws() { if(confirm("确定重置屏蔽关键词列表?")){ localStorage.removeItem("cn-hplzh-mys-kwfilter-kwarr"); loadKws(); loadKwT(); } } function insertSetting() { try { var chkItem = document.getElementById("cn-hplzh-mys-kwfilter-settinglink"); if (chkItem) { return; } var moreList = document.getElementsByClassName("header__navitem--show")[0]; var lastItem = moreList.lastChild; var newItem = document.createElement("li"); newItem.innerHTML = '屏蔽设置'; lastItem.appendChild(newItem); } catch (error) { // console.log(error); setTimeout(insertSetting, 200); return; } } function insertSetting2() { if (location.pathname == "/dby/accountCenter/privacy") { try { var target1 = document.getElementsByClassName("mhy-container mhy-account-center-content")[0]; target1.appendChild(settingDiv); insertSetting2_1(); } catch (error) { // console.log(error); setTimeout(insertSetting2, 200); return; } loadKwT(); } } function insertSetting2_1() { if (location.pathname == "/dby/accountCenter/privacy") { try { var text = document.getElementById("cn-hplzh-kwfilter-text"); var save = document.getElementById("cn-hplzh-kwfilter-save"); var reset = document.getElementById("cn-hplzh-kwfilter-reset"); save.onclick = saveKws; reset.onclick = resetKws; text.addEventListener('input', function () { this.style.height = 'auto'; this.style.height = this.scrollHeight + 'px'; }); } catch (error) { // console.log(error); setTimeout(insertSetting2_1, 200); } } } function loadKwT() { var text = document.getElementById("cn-hplzh-kwfilter-text"); text.value = kwarr.join("\r\n"); resizeKwT(); } function resizeKwT() { var text = document.getElementById("cn-hplzh-kwfilter-text"); text.style.height = 'auto'; text.style.height = text.scrollHeight + 'px'; } function checkContent(content) { var inner = content.innerHTML; for (var i = 0; i < kwarr.length; i++) { if (inner.includes(kwarr[i])) { return true; } } return false; } function getArticleCards() { return document.getElementsByClassName("mhy-article-card__link"); } function getReplies() { return document.getElementsByClassName("reply-card__content"); } function getInnerReplies() { return document.getElementsByClassName("reply-card-inner-reply__content"); } function getNotificationsText(){ return document.getElementsByClassName("notifications-common-card__content--text"); } function replaceContent(content) { content.innerHTML = "

内容已被屏蔽

"; } function checkAndReplace(content) { if (checkContent(content)) { replaceContent(content); } } function forEachIn(arr, func) { for (var i = 0; i < arr.length; i++) { func(arr[i]); } } function main() { forEachIn(getArticleCards(), checkAndReplace); forEachIn(getReplies(), checkAndReplace); forEachIn(getInnerReplies(), checkAndReplace); forEachIn(getNotificationsText(), checkAndReplace); } insertSetting(); loadKws(); insertSetting2(); setInterval(main, 1000); setInterval(insertSetting, 2000);