利用js代码自动删除稿件的普通弹幕
事情的起因是在b站投稿了一个高级弹幕测试的视频(av9940487),但是由于b站的弹幕池机制是新的弹幕顶掉旧的弹幕,所以导致一些人发的高级弹幕很快就被顶掉了。
所以就想着写个脚本来自动删除属性为普通的弹幕,语言用的是javascript,在chrome的控制台就可以执行这个脚本。
1.删除弹幕的流程分析
判断弹幕A是否为普通弹幕,是则选中。
点击删除弹幕的按钮,弹出二次确认框。
点击确定,成功删除。
2.删除弹幕相关的html代码,js代码
2.1 选中
可通过判断class属性为"item-front"的标签里是否包含“高级”两个字来决定是否勾选该弹幕:
document.getElementsByClassName("item-font")[i].innerHTML.match("高级")
getElementsByClassName("bili-checkbox")[i+1].click()
这里i+1是由于有其他标签也使用了“bili-checkbox”属性。
2.2
用click函数触发点击“删除弹幕”按钮的操作:
document.getElementsByClassName("dele-btn")[0].getElementsByClassName("plain")[0].click();
2.3
点击二次确认框:
document.getElementsByClassName("bili-btn")[2].click();
2.4 将以上的代码根据逻辑组合一下
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个语句之前让其停顿一下。
利用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代码自动删除稿件的普通弹幕的更多相关文章
- 利用任务计划自动删除指定日期的SQLServer备份文件
利用任务计划自动删除指定日期的SQLServer备份文件 命令FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D ...
- 利用PS脚本自动删除7天之前建立的目录-方法1!
目前有一个备份目录,目录名称为d:\temp\bak目录,在这目录下,根据备份要求,自动生成了如下目录的列表: 20131012 20131011 20131010 20131009 20131008 ...
- 怎么利用idea自带的工具,不需要 重启tomcat或则其他服务,js代码自动生效
idea中有一个工具:可以直接upload,能让你修改的界面直接可以看到,不需要重启服务. 依次点击的按钮如下: 点击进入的界面这个填的只是一个示例,在各位的电脑上肯定不行,大家依据实际情况填写.
- 利用js代码屏蔽f12,右键,粘贴,复制,剪切,选中,操作!!秀!秀!秀!
koala 专注于个人技术分享 屏蔽f12审查 <script> document.onkeydown = function () { if (window.event && ...
- 利用JS代码快速获得知网论文作为参考文献的引用文本
写论文的时候,发现知网虽然提供了生成参考文献引用标注的功能,但是效率仍然不太高.我就忙里偷闲写了一段简单的脚本,能无延迟地生成这段引用文本.目前支持期刊论文和硕士论文. 代码: (function() ...
- 利用js代码:document.forms[0].approval.value='false',当点击 <input type="image"按钮向表单传递不同的参数。
<form action="flow_myTaskList"> <input type="hidden" name="approva ...
- 怎么让Eclipse对html和js代码自动提示
使用eclipse自带的插件,无需另外安装插件,具体步骤如下1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist修改Auto Activ ...
- 【VS Code】中node.js代码自动补全的方法
原文链接: https://blog.csdn.net/qq_39189819/article/details/91347484
- 四十年前的 6502 CPU 指令翻译成 JS 代码会是怎样
去年折腾的一个东西,之前 blog 里也写过,不过那时边琢磨边写,所以比较杂乱,现在简单完整地讲解一下. 前言 当时看到一本虚拟机相关的书,正好又在想 JS 混淆相关的事,无意中冒出个问题:能不能把某 ...
随机推荐
- .NET Core 3时代!如何使用DevExpress WPF创建应用
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- 简单了解HTTP协议的基本知识,请求流程、请求方法等
HTTP 是Hyper Text Transfer Protocol(超文本传输协议)的缩写 1.超文本传输协议是一种详细规定了浏览器和万维网服务器之间互相通信的规则. 2.HTTP协议(HyperT ...
- 5 解析器、url路由控制、分页、渲染器和版本
1 数据解析器 1 什么是解析器 相当于request 中content-type 对方传什么类型的数据,我接受什么样的数据:怎样解析 无论前面传的是什么数据,都可以解开 例如:django不能解析j ...
- jmeter 5.0,http请求登录返回的cookie在头部处理方法
http登录之后返回的cookie在响应的头部,再次请求虽然加了cookie管理器,但是下一个请求调用响应是登陆失效,这里讲一下我的解决方法 1:在登录之后添加正则表达式,提取cookie 2:提取之 ...
- 创建springboot项目的三种方法(参考
https://blog.csdn.net/mousede/article/details/81285693 https://blog.csdn.net/weixin_42194143/article ...
- psd缩略图上传控件
前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践. ...
- luogu 1876 开灯 约数+打表
打表后发现答案都是完全平方数,直接输出即可. #include <cstdio> #include <algorithm> using namespace std; int m ...
- codeforces297B
Fish Weight CodeForces - 297B It is known that there are k fish species in the polar ocean, numbered ...
- super 和 this 的区别
一 this和super关键字区别 1.子类的构造函数如果要引用super的话,必须把super放在函数的首位.2.super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)3.t ...
- 谷歌protocolbuff使用说明步骤
Protocolbuff 目录 1 Protocolbuff定义和作用... 1 2 Protocolbuff的使用步骤... 1 3 .proto编写格式... ...