您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
隐藏包含“@”且字符数少于100的B站评论
// ==UserScript== // @name B站评论区过滤(诛九族版) // @namespace dreamcenter // @version 1.0.0 // @description 隐藏包含“@”且字符数少于100的B站评论 // @match *://*.bilibili.com/video/* // @match *://*.bilibili.com/opus/* // @match *://space.bilibili.com/*/dynamic // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; // 判断条件:包含 @ 且纯文本长度小于 100 function judgeIfFiltered(raw) { const text = raw.replace(/<[^>]+>/g, ""); // 去除HTML标签 return text.includes("@") && text.length < 100; } window.onload = function () { let startMark = false; setInterval(function () { if (startMark) { runCore(); } else { startMark = document.querySelector("bili-comments") != null; } }, 100); }; function runCore() { const root = document.querySelector("bili-comments")?.shadowRoot; if (!root) return; let deletedMainCount = 0; let deletedReplyCount = 0; const reviews = root.querySelectorAll("#feed > bili-comment-thread-renderer"); for (let review of reviews) { if (review.getAttribute('filtered') == null) { try { const comment = review.shadowRoot.querySelector('#comment'); const commentText = comment.shadowRoot .querySelector("#content > bili-rich-text").shadowRoot .querySelector("#contents").innerHTML; review.setAttribute('filtered', true); if (judgeIfFiltered(commentText)) { review.style.display = "none"; deletedMainCount++; } } catch (e) { // 跳过未加载的项 } } // 子评论过滤 try { const replies = review.shadowRoot .querySelector("#replies > bili-comment-replies-renderer") ?.shadowRoot.querySelectorAll("#expander-contents > bili-comment-reply-renderer:not([filtered])"); if (!replies) continue; for (let reply of replies) { try { const replyText = reply.shadowRoot .querySelector("#main > bili-rich-text").shadowRoot .querySelector("#contents").innerHTML; reply.setAttribute('filtered', true); if (judgeIfFiltered(replyText)) { reply.style.display = "none"; deletedReplyCount++; } } catch (e) { } } } catch (e) { } } // 控制台输出本轮删除结果 if (deletedMainCount > 0 || deletedReplyCount > 0) { console.log(`[bili过滤器] 删除主评论 ${deletedMainCount} 条,子评论 ${deletedReplyCount} 条`); } } })();