利用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 相关文章推荐
input 高级限制级用法
Mar 26 Javascript
jQuery中的$.ajax()方法应用
May 06 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
Nov 24 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 Javascript
基于jQuery实现左侧菜单栏可折叠功能
Dec 27 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
关于使用js算总价的问题
Jun 23 Javascript
小程序图片剪裁加旋转的示例代码
Jul 10 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
vue实现购物车的小练习
Dec 21 Vue.js
vue实现列表拖拽排序的示例代码
Apr 08 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多重接口的实现方法
2015/06/20 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
简明 Python 基础学习教程
2007/02/08 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
Python字符串处理实现单词反转
2017/06/14 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
python链表类中获取元素实例方法
2021/02/23 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
跟单业务员岗位职责
2014/03/08 职场文书
好学生评语大全
2014/05/05 职场文书
校车安全责任书
2014/08/25 职场文书
诚实守信演讲稿
2014/09/01 职场文书
代办社保委托书范文
2014/10/06 职场文书
个人借款协议书范本
2014/11/17 职场文书
个人简历求职信范文
2015/03/20 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
篮球赛新闻稿
2015/07/17 职场文书
2016春季运动会前导词
2015/11/25 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA