利用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 Mobile入门—多页面切换示例学习
Jan 08 Javascript
jQuery点击弹出下拉菜单的小例子
Aug 01 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
Jquery中offset()和position()的区别分析
Feb 05 Javascript
极易被忽视的javascript面试题七问七答
Feb 15 Javascript
JS及PHP代码编写八大排序算法
Jul 12 Javascript
Bootstrap精简教程中秋大放送
Sep 15 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
Apr 03 jQuery
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
react antd表格中渲染一张或多张图片的实例
Oct 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中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP写日志的实现方法
2014/11/05 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
常用PHP封装分页工具类
2017/01/14 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
jQuery 动画基础教程
2008/12/25 Javascript
Dom操作之兼容技巧分享
2011/09/20 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
js实现密码强度检验
2017/01/15 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
python比较两个列表大小的方法
2015/07/11 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
香港礼品网站:GiftU eshop
2017/09/01 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
高中生学期学习自我评价
2014/02/24 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
单位租房协议范本
2014/12/03 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
Python Flask实现进度条
2022/05/11 Python