利用JS代码自动删除稿件的普通弹幕功能


Posted in Javascript onSeptember 20, 2019

事情的起因是在b站投稿了一个高级弹幕测试的视频(av9940487),但是由于b站的弹幕池机制是新的弹幕顶掉旧的弹幕,所以导致一些人发的高级弹幕很快就被顶掉了。

所以就想着写个脚本来自动删除属性为普通的弹幕,语言用的是javascript,在chrome的控制台就可以执行这个脚本。

1.删除弹幕的流程分析

判断弹幕A是否为普通弹幕,是则选中。

利用JS代码自动删除稿件的普通弹幕功能

点击删除弹幕的按钮,弹出二次确认框。

利用JS代码自动删除稿件的普通弹幕功能

点击确定,成功删除。

2.删除弹幕相关的html代码,js代码2.1 选中

利用JS代码自动删除稿件的普通弹幕功能

可通过判断class属性为"item-front"的标签里是否包含“高级”两个字来决定是否勾选该弹幕:

document.getElementsByClassName("item-font")[i].innerHTML.match("高级")
getElementsByClassName("bili-checkbox")[i+1].click()

这里i+1是由于有其他标签也使用了“bili-checkbox”属性。

利用JS代码自动删除稿件的普通弹幕功能

利用JS代码自动删除稿件的普通弹幕功能

2.2

利用JS代码自动删除稿件的普通弹幕功能

用click函数触发点击“删除弹幕”按钮的操作:

document.getElementsByClassName("dele-btn")[0].getElementsByClassName("plain")[0].click();

利用JS代码自动删除稿件的普通弹幕功能

点击二次确认框:

for (i = 0; i < document.getElementsByClassName("item-attr").length; i++) {if(!document.getElementsByClassName("item-font")[i].innerHTML.match("高级")){

document.getElementsByClassName("bili-checkbox")[i+1].click();
}}document.getElementsByClassName("dele-btn")[0].getElementsByClassName("plain")[0].click();document.getElementsByClassName("bili-btn")[2].click();

但是由于控制台执行js的代码速度过快,会导致在执行到第7行代码的时候,class属性为“bili-btn”的第3个标签还没加载出来,所以要在执行第7个语句之前让其停顿一下。

利用JS代码自动删除稿件的普通弹幕功能

利用setTimeout()方法可实现延迟执行

setTimeout(function () {document.getElementsByClassName("bili-btn")[2].click(); }, 1000);

setTimeout("document.getElementsByClassName(\"bili-btn\")[2].click()",1000);

至此,只实现了单页面的批量删除1次,但是我们知道,假设弹幕有N页,就必须让以上代码不断运行,直到第x页不包含普通弹幕,然后跳转至第x+1页继续执行以上删除代码。

3. 实现不断刷新页面,当删除完当前页的普通弹幕时,自动跳转至下一页

结合另一篇文章即可实现:https://www.cnblogs.com/wujiecong/p/11549738.html

var timeout = prompt("设置刷新时间");
var current = location.href;
var page = 0;
var count = 0;
if(timeout > 0)
{
  setTimeout('reload()', 1000 * timeout);
}
else
{
location.replace(current);
}

function reload()
{
  setTimeout('reload()', 1000 * timeout);
  if(count<10){
    const regex = /pn=(\d+)/;
    page = page +1;
  current = current.replace(regex,"pn="+page.toString())
  }  

var frame = '<frameset cols=\'*\'>\n<frame src=\'' + current + '\' /></frameset>';

with(document)

{
    // 引用document对象,调用write方法写入框架,打开新窗口


write(frame);



setTimeout(function(){


count = 0


getFrames = window.frames["0"]


for (i = 0; i < getFrames.document.getElementsByClassName("item-attr").length; i++) {



if(!getFrames.document.getElementsByClassName("item-font")[i].innerHTML.match("高级")){




getFrames.document.getElementsByClassName("bili-checkbox")[i+1].click();




count = count +1;
      }
    }


if(count>0){



getFrames.document.getElementsByClassName("dele-btn")[0].getElementsByClassName("plain")[0].click();



setTimeout(function () {




getFrames.document.getElementsByClassName("bili-btn")[2].click(); 



}, 1000);


}},2000);



   // 关闭上面的窗口


void(close());

};
}

总结

以上所述是小编给大家介绍的利用JS代码自动删除稿件的普通弹幕功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
用javascript实现在小方框中浏览大图的代码
Aug 14 Javascript
jQuery实现的多选框多级联动插件
May 02 Javascript
Javascript中arguments对象详解
Oct 22 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
JQuery PHP图片在线裁剪实例
Jul 27 Javascript
微信小程序 详解Page中data数据操作和函数调用
Jan 12 Javascript
ES6中箭头函数的定义与调用方式详解
Jun 02 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
深入理解Vue 单向数据流的原理
Nov 09 Javascript
jQuery使用each遍历循环的方法
Sep 19 jQuery
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
Jan 09 Javascript
antd 表格列宽自适应方法以及错误处理操作
Oct 27 Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 #Javascript
layui默认选中table的CheckBox复选框方法
Sep 19 #Javascript
layui 数据表格复选框实现单选功能的例子
Sep 19 #Javascript
基于layui的table插件进行复选框联动功能的实现方法
Sep 19 #Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 #Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 #Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 #Javascript
You might like
php清除和销毁session的方法分析
2015/03/19 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
2010/11/25 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
python简单鼠标自动点击某区域的实例
2019/06/25 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
基于python实现从尾到头打印链表
2019/11/02 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
python str字符串转uuid实例
2020/03/03 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
python如何代码集体右移
2020/07/20 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
奖学金自我鉴定范文
2013/10/03 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
工作自我推荐信范文
2015/03/25 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python