Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >b站评论过滤脚本

b站评论过滤脚本

作者头像
时光潜流
发布于 2022-12-26 11:48:19
发布于 2022-12-26 11:48:19
81300
代码可运行
举报
文章被收录于专栏:博客专栏博客专栏
运行总次数:0
代码可运行

今天乘有空,写了一个油猴脚本,可以屏蔽b站评论区的评论!

  油猴脚本地址:点击前往 ,相关的修改方式都有所描述。

  油猴脚本源代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// ==UserScript==
// @name bili_rebuild
// @description b站评论过滤器
// @license MIT
// @namespace dreamcenter
// @version 0.0.0.1
// @match *://www.bilibili.com/*
// @require http://code.jquery.com/jquery-3.5.1.js
// @grant GM_xmlhttpRequest
// ==/UserScript==

let banMap = [
    "test","随机",'恶心','病','纯','ch','CH','op','策划'
];

// 是否对屏蔽条目隐藏[true/false]
let hiddenMode = true

// 是否连接到云屏蔽词库[true/false]
let cloudBanMap = false

// 是否控制台打印屏蔽日志[true/false]
let logShield = false


/*******************************下方内容不要修改***************************************/

function filterStr(item){
    var str=''
    var childs = item.childNodes;
    childs.forEach((subitem,index)=>{
        if(subitem.nodeType===3){
            str = subitem.nodeValue;
            for(var i=0;i<banMap.length;i++){
                str = str.replaceAll(banMap[i],'█')
            }
            subitem.nodeValue = str;
        }
    })
}

function hiddenWay(item){
    var str=''
    var childs = item.childNodes;
    childs.forEach((subitem,index)=>{
        if(subitem.nodeType===3){
            str = subitem.nodeValue;
            for(var i=0;i<banMap.length;i++){
                str = str.replaceAll(banMap[i],'█(' + banMap[i] + ')')
            }
            subitem.nodeValue = str;

            if(str.indexOf('█')!=-1){

                if (logShield) console.log('!  :\n' + subitem.nodeValue)

                if (subitem.parentNode.nodeName.toLocaleLowerCase() == 'span'){
                    // subitem.parentNode.parentNode.parentNode.parentNode.style.color='red'
                    subitem.parentNode.parentNode.parentNode.parentNode.style.display='none'
                }
                else{
                    // subitem.parentNode.parentNode.style.border='1px solid red'
                    subitem.parentNode.parentNode.style.display='none'
                }
            }
        }
    })
}

// https://github.com/dreamcenter/dreamcenter.github.io/blob/master/test
function cloud(){
    GM_xmlhttpRequest({
        method: 'GET',
        //url: "http://localhost:8080/filter/api/shield/test",
        url: "https://dreamcenter.github.io/test",
        onload: function (res) {
            /*var list = JSON.parse(res.response)
            list.forEach((item,index)=>{
                banMap.push(item.word)
            })
            console.log(banMap)*/
            let str = res.response.replace('\n','')
            banMap.push(...str.split(','))
            console.log(banMap)

        },
        onerror: function (err) {
            alert("服务器连接失败")
        }
    })
}

(function () {
    'use strict';
    window.onload = function(){

        // connect to the cloud ban map to get common ban map
        if(cloudBanMap) cloud()

        // detect and filter
        setInterval(()=>{
            let replies = document.querySelectorAll('p.text:not(p[filtered]),span.text-con:not(span[filtered])'); //document.getElementsByClassName('p.text');
            replies.forEach((item,index)=>{
                if (hiddenMode)
                    hiddenWay(item)
                else{
                    filterStr(item)
                }
                item.setAttribute('filtered',true)
            })
        },100)
    }
})();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何手写实现《双向数据绑定》
1. 数据 -> 转为响应式数据 Object.defineProperty Proxy
用户9914333
2022/07/22
7590
javascript 操作dom
Node往往被翻译为节点,在一个对象(可以简单的理解为是HTML页面中),一个属性name="aaa"可以是一个节点,一个< div id="aaa">……< /div>也可以是一个节点,在< body>……< /body>中的,也是一个大大的节点。下面是一些有关Node的属性和方法,并没有包含部分不兼容IE和FF内容的讲解。
jack.yang
2025/04/05
700
投票系统 & 简易js刷票脚本
前端有一个票数统计num,后端也有一个票数统计num,它们是同步的,我们无需理会后端的num,因为前端和后端是同步的。
书童小二
2018/09/03
9.7K0
投票系统 & 简易js刷票脚本
DOM「建议收藏」
当创建了一个网页并把它加载到web浏览器中时,DOM就悄然而生。浏览器根据网页文档创建一个文档对象。
全栈程序员站长
2022/09/21
1K0
DOM「建议收藏」
day03_js学习笔记_03_js的事件、js的BOM、js的DOM
day03_js学习笔记_03_js的事件、js的BOM、js的DOM ============================================================================= ============================================================================= 涉及到的知识点有: 五、js的事件 1、js的常用事件 onclick
黑泽君
2018/10/11
28.5K0
前端之HTML DOM操作
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
山河木马
2019/03/05
6120
Safari脚本编辑使用体验
背景是这样的,我在用 Safari看hackingwithswift这个网站时,感觉上方的一直固定的红色的和黑色的两条,如下图,太醒目了,于是便想,如何能把它们移除.
莫空9081
2023/01/17
2.7K0
两个油猴脚本分享
温州方言数据库是温州市图书馆建设的,收录温州本土方言词汇与语音信息的数据库。但是其界面杂乱而且仅支持IE浏览器播放音频,所以咱就写了个油猴脚本。数据库链接请点击我。
KAAAsS
2022/01/14
6930
两个油猴脚本分享
JavaScript DOM基础
DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口)。 一.DOM介绍 DOM中的三个字母,D(文档)可以理解为整个Web加载的网页文档;O(对象)可以理解为类似window对象之类的东西,可以调用属性和方法,这里我们说的是document对象;M(模型)可以理解为网页文档的树型结构。 DOM有三个等级,分别是DOM1、DOM2、DOM3,并且DOM1在1998年10月成为W3C标准。DOM1所支持的浏览器包括IE6+、Firefox、Safa
汤高
2018/01/11
1.4K0
JavaScript学习笔记(一)
wdm,这个寒假越过越长… 寒假在家学习JavaScript的相关知识,写博客作为笔记 我是以清华大学出版社的《JavaScript从入门到项目实践》作为学习用书的
wsuo
2020/07/31
3.4K0
JavaScript学习笔记(一)
2024 年还有人不会安装使用脚本神器?手把手教你
使用油猴脚本前需要安装油猴浏览器扩展,支持微软edge浏览器 https://microsoftedge.microsoft.com/addons/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/iikmkjmpaadaobahmlepeloendndfphd 和 chrome 浏览器 https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=zh-CN,不过现在叫篡改猴了。
苏生不惑
2024/05/17
1.3K0
2024 年还有人不会安装使用脚本神器?手把手教你
油猴脚本编写教程
油猴脚本(Tampermonkey)是一个非常流行的浏览器扩展,它可以运行由广大社区编写的扩展脚本,来实现各式各样的功能,常见的去广告、修改样式文件、甚至是下载视频。今天我们就来看看如何编写自己的油猴脚本。当然为了运行油猴脚本,你应该在浏览器中安装油猴插件。
乐百川
2020/02/18
7.4K0
油猴脚本编写教程
document对象(DOM)–认识DOM
文档对象模型DOM(Document Object Model)定义访问和处理 HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文 本的树结构(节点树)。
全栈程序员站长
2022/11/04
1.7K0
节点操作
获取元素通常使用两种方式: 1. 利用 DOM 提供的方法获取元素           document.getElementById() 
梨涡浅笑
2022/05/08
1.5K0
节点操作
【Web技术】1048- 手把手教你实现web文本划线的功能
来源 | https://www.cnblogs.com/wanglinmantan/p/15106871.html
pingan8787
2021/09/09
3860
从零开始学 Web 之 DOM(四)节点
页面中的所有内容,包括标签,属性,文本(文字,空格,回车,换行等),也就是说页面的所有内容都可以叫做节点。
Daotin
2018/08/31
1.1K0
DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个层次变化的节点树,允许开发人员添加、移除和修改页面的某一部分。
奋飛
2019/08/15
1.6K0
DOM、BOM一些兼容性问题
汇集了许多关于DOM和BOM的兼容性问题,主要是关于 IE 浏览器的,考虑到浏览器迭代,这里主要列出了 IE8 以及之后的浏览器版本。 IE8 浏览器在 2008年推出,距现在(2019)已有11年之久,已经是很老的一款浏览器了。但是在一些项目中,可能仍需要考虑到兼容性,如果兼容到 IE8 已经是很兼容了,毕竟该浏览器也几乎没多少市场份额了。多是一些机构或政府部门在使用。而有些兼容性问题也可能是其它浏览器之间的差异,比如 Chrome 和 FireFox 对于鼠标滚轮事件对象的滚轮方向判断方式不同,Chrome使用 wheelDelta,而FireFox 则采用 detail 做判断。下面将一一说明或做补充实现来尽量弥补浏览器之间的差异。其实大部分就是为了兼容 IE 早期浏览器。
多云转晴
2019/10/23
1.7K0
DOM、BOM一些兼容性问题
前端成神之路-WebAPIs02
自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。
海仔
2020/12/22
7830
前端成神之路-WebAPIs02
JavaScrip学习笔记(四)---DOM基础
< script > window. onload= function(){ var  oUl= document. getElementById( 'ul1'); alert( oUl. childNodes. length);     };
致Great
2023/08/26
1730
JavaScrip学习笔记(四)---DOM基础
相关推荐
如何手写实现《双向数据绑定》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验