利用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 相关文章推荐
jQuery之ajax技术的详细介绍
Jun 19 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
Sep 22 Javascript
JavaScript将XML转成JSON的方法
Mar 12 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
Jun 05 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
Aug 25 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 Javascript
Vue.js实现列表清单的操作方法
Nov 15 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
轻松学习JavaScript函数中的 Rest 参数
May 30 Javascript
js 函数性能比较方法
Aug 24 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 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
windows xp下安装pear
2006/12/02 PHP
二招解决php乱码问题
2012/03/25 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python使用turtle绘制分形树
2018/06/22 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
python def 定义函数,调用函数方式
2020/06/02 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
面包店的创业计划书范文
2014/01/16 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书