插件制作实战(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 事件将被触发。

目录
相关文章
|
12月前
|
前端开发 Java 定位技术
【软件实战】5分钟拥有一款自己的软件(教程+成品展示)(下)
【软件实战】5分钟拥有一款自己的软件(教程+成品展示)
166 0
|
编解码
自学笔记|多功能模数转换器 (VADC) 配置为背景扫描功能
自学笔记|多功能模数转换器 (VADC) 配置为背景扫描功能
自学笔记|多功能模数转换器 (VADC) 配置为背景扫描功能
|
20天前
|
NoSQL Redis
WordPress懒人优化方案,有效提升网页加载速度
在WordPress商店安装并启用插件WP Fastest Cache,按照说明设置。确保服务器已安装Redis,再安装Redis Object Cache并启用,无需额外配置。这两个步骤能显著提升网站加载速度,带来流畅的浏览体验。
38 8
|
7天前
|
搜索推荐 前端开发 Web App开发
CSDN自定义模块全攻略,DIY系统原有样式打造出你的专属个性化主页!
CSDN自定义模块全攻略,DIY系统原有样式打造出你的专属个性化主页!
|
2月前
|
JavaScript Java 测试技术
基于微信小程序的教学质量评价系统附带文章和源代码设计说明文档ppt
基于微信小程序的教学质量评价系统附带文章和源代码设计说明文档ppt
27 0
|
2月前
ripro子主题wori-child集成后台美化包(适用于设计素材站+资源下载站等)
新内容如下 1、子主题独立运行,彻底摆脱覆盖原主题文件 2、下载信息插件升级优化 3、细节优化
25 0
ripro子主题wori-child集成后台美化包(适用于设计素材站+资源下载站等)
|
2月前
【ripro美化】全站美化包WordPress RiPro主题二开美化版sucaihu-childV1.9(功能集成到后台)
1、【宝塔】删除ripro文件,上传最新ripro版本,然后上传压缩包内的ripro里面的对应文件到ripro主题对应内覆盖(找到对应路径单个文件去覆盖)。 2、然后上传ripro-chlid子主题美化包到/wp-content/themes路径下 3、注意顺序 原版–>美化包–>后台启用子主题(已启用请忽略)。
53 0
【ripro美化】全站美化包WordPress RiPro主题二开美化版sucaihu-childV1.9(功能集成到后台)
|
2月前
|
监控
web后端-最好用的扒站仿站工具(网页克隆网页复制)
web后端-最好用的扒站仿站工具(网页克隆网页复制)
|
2月前
|
前端开发 JavaScript PHP
在线扒站工具网站源码-一键扒取网站源代码
在线扒站工具网站源码-一键扒取网站源代码
329 6
|
2月前
微信小游戏制作工具中,如何跨场景进行交互
微信小游戏制作工具中,如何跨场景进行交互
53 1