插件制作实战(B站视频评论屏蔽)

简介: 插件制作实战(B站视频评论屏蔽)

一天,在B站刷着视频,突然想查看up主在视频下的评论,奈何评论太多,很难找到up主的评论,因此便有了做该插件的想法。话不多说,马上开始动手,首先我们应该先了解一下一个插件的构成。

插件框架

在上图中我们可以看到一个插件需要的有三个文件,图片是用来做插件的图标,js文件是脚本文件,json则是配置文件。

插件制作

知道了一个插件的主要框架后,接下来就要动手写代码了。

配置json文件

  • manifest.json
{
  "name": "B-comment", // 名称
  "manifest_version": 2, //声明是我们使用的版本。
  "version": "1.0",
  "description": "B-comment",//描述
  "browser_action": {
    "default_icon": "1.png" //插件显示图标
  },
  "content_scripts": [
    {
      "matches": ["https://www.bilibili.com/*"], //运行页面
      "js": ["test.js"] //运行脚本
    }
  ]
}

编写脚本代码

  • test.js
//获取评论并进行相关操作
var f = function(){
    //获取up主B站id
  var up = document.getElementsByClassName('username')[0].pathname.substring(1),
        //评论列表
    comment = document.getElementsByClassName('list-item reply-wrap'),
        //评论条数
    len = comment.length;
    //遍历评论
  for(i = 0; i < len; i++){
        //获取楼主B站id
    nowId = comment[i].getElementsByClassName('user')[0].getElementsByTagName('a')[0].dataset.usercardMid;
        //如果不是up主的评论
    if(nowId != up){
            //设置评论不显示
      comment[i].style.display = 'none';
    }
  }
};
/*观察可以知道B站的评论并不是在页面加载的时候一起加载出来的,而是在下拉的时候才会刷新,所以我们直接运行上面代码的话并无法达到我们的目的,因此还需要以下代码。*/
//延时运行
var wait = function(ms){
    //判断页面是否加载完成
  if(document.readyState == "complete"){
        //页面下滚
    document.documentElement.scrollTop=11100;
        //延时触发函数
    setTimeout(()=>{
      f();
            //获取翻页按钮
      var btn = document.getElementsByClassName('bottom-page paging-box-big');
            //翻页后进行筛选
      btn[0].onclick = function(){
        setTimeout(()=>{
          f();
        },2000);
      }
    },2000);
  }else{
    setTimeout(()=>{
      wait(1000);
    },ms);
  }
}
wait(1000);
  • 上传插件编写好代码之后就可以上传自己的插件到浏览器上去了。
  • 打开Chrome的扩展程序
  • 打开开发者模式
  • 将整个文件夹拉到浏览器上
  • 运行插件
  • 测试
    随便打开B站的一个视频:

可以看到评论数量很多,运行插件后效果如下:

非up主的评论都被屏蔽了,我们的目的也就达到了。

后面我们还能对此进行一系列的改造,如:屏蔽指定用户的评论、屏蔽含有指定关键字的评论……

知识点归纳

1、插件框架的基本认识

{
  "name": "B-comment", // 名称
  "manifest_version": 2, //声明是我们使用的版本。
  "version": "1.0",
  "description": "B-comment",//描述
  "browser_action": {
    "default_icon": "1.png" //插件显示图标
  },
  "content_scripts": [
    {
      "matches": ["https://www.bilibili.com/*"], //运行页面
      "js": ["test.js"] //运行脚本
    }
  ]
}

2、JavaScript相关知识点学习

(1)document.documentElement.scrollTop

获取滚动条位置,后面直接用等号赋值的话可以设置当前滚动条位置,及页面滚动效果。

(2)document.readyState

一个documentDocument.readyState 属性描述了文档的加载状态。

当该属性值发生变化时,会在document 对象上触发readystatechange事件。

一个文档的 readyState 可以是以下之一:

  • loading / 正在加载
    document 仍在加载。
  • interactive / 可交互
    文档已被解析,"正在加载"状态结束,但是诸如图像,样式表和框架之类的子资源仍在加载。
  • complete / 完成
    文档和所有子资源已完成加载。表示 load 状态的事件即将被触发。

当这个属性的值变化时,document 对象上的readystatechange 事件将被触发。

目录
相关文章
|
9月前
ripro子主题wori-child集成后台美化包(适用于设计素材站+资源下载站等)
新内容如下 1、子主题独立运行,彻底摆脱覆盖原主题文件 2、下载信息插件升级优化 3、细节优化
120 0
ripro子主题wori-child集成后台美化包(适用于设计素材站+资源下载站等)
|
域名解析 网络协议 网络安全
拼搏百天我要日站——扫描工具的基本使用
拼搏百天我要日站——扫描工具的基本使用
249 0
拼搏百天我要日站——扫描工具的基本使用
|
安全 Android开发 API
安卓应用安全指南 4.3.2 创建/使用内容供应器 规则书
4.3.2 创建/使用内容供应器 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 实现或使用内容供应器时,确保遵循以下规则。
1108 0
|
4月前
|
SQL 安全 Java
Burpsuite Extender拓展功能实战
Burpsuite Extender拓展功能实战
|
9月前
|
Web App开发 缓存 API
【社区每周】配置检测工具支持代开发模式;沙箱支持无痕模式访问(2022年5月第一期)
【社区每周】配置检测工具支持代开发模式;沙箱支持无痕模式访问(2022年5月第一期)
61 0
|
9月前
|
数据库
一款挺不错网站维护页面源码
一款挺不错网站维护页面源码,单HTML不需要数据库,上传到你的虚拟机就可以用做维护页面还不错,用处多。。
72 2
一款挺不错网站维护页面源码
|
资源调度 JavaScript 容器
抓取的模板适配工具 Portia 的使用
访问 localhost:9001, 结果404 进到容器,发现 /app/portiaui/dist 文件夹下是空的。 下载 nodejs,yarn
218 0
抓取的模板适配工具 Portia 的使用

热门文章

最新文章