利用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 相关文章推荐
Google的跟踪代码 动态加载js代码方法应用
Nov 12 Javascript
JavaScript实现的日期控件具体代码
Nov 18 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
Nov 06 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
js读取本地文件的实例
Dec 22 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
微信小程序实现简单跑马灯效果
May 26 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
Nov 04 Javascript
js实现百度淘宝搜索功能
Feb 17 Javascript
基于JavaScript实现大文件上传后端代码实例
Aug 18 Javascript
React + Threejs + Swiper 实现全景图效果的完整代码
Jun 28 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集成FCK的函数代码
2008/09/27 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
使用python分析git log日志示例
2014/02/27 Python
Python contextlib模块使用示例
2015/02/18 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
应届毕业生应聘自荐信
2013/12/07 职场文书
乔迁之喜主持词
2014/03/27 职场文书
亲子活动总结
2014/04/26 职场文书
教师师德师风整改措施
2014/10/24 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
困难补助申请报告
2015/05/19 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Go语言应该什么情况使用指针
2021/07/25 Golang
青岛市的收音机研制与生产
2022/04/07 无线电