利用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 ready函数源代码研究
Dec 06 Javascript
js中 关于undefined和null的区别介绍
Apr 16 Javascript
屏蔽相应键盘按钮操作
Mar 10 Javascript
JS获取时间的方法
Jan 21 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
Bootstrap框架下下拉框select搜索功能
Mar 26 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
浅谈Vue 初始化性能优化
Aug 31 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
Sep 21 Javascript
layui表单提交到后台自动封装到实体类的方法
Sep 12 Javascript
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
基于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.MVC的模板标签系统(三)
2006/09/05 PHP
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
基于Python log 的正确打开方式
2018/04/28 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
Python-openCV开运算实例
2020/07/05 Python
python os.listdir()乱码解决方案
2021/01/31 Python
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
什么是规则表达式
2012/05/03 面试题
期末考试动员演讲稿
2014/01/10 职场文书
户外婚礼策划方案
2014/02/08 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
小学生学习保证书
2015/02/26 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android