油猴脚本 之 网教通直播评论记录抓取 v2.0
先放一个 《油猴脚本 之 网教通直播评论记录抓取》那篇文章的传送门 。
修复内容
- 将所有表情转为
[符号表情]
字样,而非删除; - 修复被禁言用户读取异常,现在被禁言用户表示为
张三 [已禁言]
; - 修复被主播发言读取异常,现在主播发言表示为
张三 [主播]
; - 在导出的文件名后添上导出时间;
- 添加表头;
- 汉化所有弹窗;
- 保存文件时可以取消;
- 支持在到处之后按 Esc 键重新导出;
- 实现在加载完所有评论时,自动弹窗询问是否保存;
- 将评论中所有换行符全部转为
[换行]
,保证可读性的同时防止格式错乱; - 过滤
noscript
标签,防止格式错乱; - 若评论区无内容,弹窗提示。
源代码
// ==UserScript==
// @name 评论记录批量加载
// @namespace https://www.cnblogs.com/henrylin/
// @version 2.0
// @description 评论记录批量加载
// @author 林洪平
// @match https://recreation-chat.sdp.101.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
var x = false;
var timer = setInterval(function () {
if (document.querySelector('div._3Bl-4NTv1A._3bGFQ6biuP'))
document.querySelector('div._3Bl-4NTv1A._3bGFQ6biuP').click();
}, 100);
var stopper = setInterval(function () {
if (document.querySelector('._2PJO3f--Nd + span') && document.querySelector('._2PJO3f--Nd + span').innerHTML == '没有更多消息') {
clearInterval(timer);
if (confirm('已全部加载完成。是否导出?')) exporter(); clearInterval(stopper);
}
}, 300)
document.onkeydown = function (e) {
var ev = e || window.event;
if (ev.keyCode == 27) {//esc
if (x ? confirm('确定重新导出?') : confirm('确定停止记录并导出?')) {
exporter();
}
}
}
function exporter() {
x = true;
clearInterval(timer);
var data = document.getElementById('msg-flow-wrapper').innerHTML;
const linebreaker = '\n';
const attrbreaker = ',';
data = data.replace(/<img src="https:\/\/gcdncs\.101\.com\/v0\.1\/static\/im_emotion\/emoji[^>]+>/g, "[符号表情]");
data = data.replace(/<img src="http:\/\/gcdncs\.101\.com\/v0\.1\/static\/recreation_chat_assets\/smiley[^>]+>/g, "[符号表情]");
data = data.replace(/<span[^>]+>已禁言<\/span>/g, "\uFFFF\uFFFE\uFFFF");
data = data.replace(/<span[^>]+>主播<\/span>/g, "\uFFFF\uFFFD\uFFFF");
data = data.replace(/<img[^>]+>/g, "");
data = data.replace(/<\/?noscript[^>]*>/g, "");
data = data.replace(/<br[^>]+>/g, "[换行]");
data = data.replace(/<[^>]+>/g, "\uFFFF");
data = data.replace(/\uFFFF{19}/g, linebreaker);
data = data.replace(/\uFFFF{15}/g, linebreaker);
data = data.replace(/^\uFFFF[^\uFFFF]+\uFFFF{2}/, "");
data = data.replace(/\uFFFF{5}/g, attrbreaker);
data = data.replace(/\uFFFF{4}/g, attrbreaker);
data = data.replace(/\uFFFF/g, "");
data = data.replace(/^,{2}/, "");
data = data.replace(/,{2}$/, "");
data = data.replace(/\n,+/g, "\n");
data = data.replace(/\n+/g, "\n");
data = data.replace(/\uFFFE/g, " [已禁言],");
data = data.replace(/\uFFFD/g, " [主播],");
if (data == '欢迎来到直播间') {
alert('未抓取到任何内容。将不会导出文件。');
x = true;
return;
}
data = '发言者,时间,内容' + linebreaker + data;
var day = new Date();
var time = day.getHours() + '时' + day.getMinutes() + '分' + day.getSeconds() + '秒';
var date = day.getFullYear() + "年" + (day.getMonth() + 1) + "月" + day.getDate() + '日';
var element = document.createElement('a');
const blob = new Blob([data]);
element.download = '评论区记录_' + date + '_' + time + '.csv';
element.style = "display: none";
element.href = URL.createObjectURL(blob);
document.body.appendChild(element);
element.click();
setTimeout(function () {
document.body.removeChild(element);
window.URL.revokeObjectURL(blob);
}, 100);
}
})();
油猴脚本 之 网教通直播评论记录抓取 v2.0的更多相关文章
- C++ 网教通直播刷屏反制 (思路启发)
前言 那些手动刷屏的你们弱爆了! 直播间的讨论区是用来讨论的, 下次谁再在上课时间大量刷屏,就以暴制暴! 思路启发 #define VK_CTRL 0x11 //... keybd_event(VK_ ...
- Stylus 之 网教通直播间整修
暗色模式 效果 Mozilla 格式源代码 @-moz-document domain("fj.101.com") { * { transition: all .3s; } #wj ...
- [转帖]油猴脚本管理器 Tampermonkey v4.8 离线CRX安装包(谷歌浏览器版)
https://www.52pojie.cn/thread-1010604-1-1.html 油猴脚本管理器 Tampermonkey v4.8 离线CRX安装包(谷歌浏览器版) 链接:https:/ ...
- 自用chrome+油猴脚本,使用迅雷下载百度云大文件,一键离线下载
油猴是有名的火狐浏览器插件(Greasemonkey),当然也有Chrome版本(tampermonkey),甚至IE.Safari.Opera都有……虽然这些插件是由不同的开发者开发出来的,界面也可 ...
- Tampermonkey油猴脚本管理插件-最强浏览器插件的安装使用全攻略
对于接触过谷歌浏览器插件的“玩家”们来说,应该没有人没听说过Tampermonkey用户脚本管理器,也就是中文所说的“油猴”这个chrome插件了. 油猴号称全商店最强的浏览器插件绝非浪得虚名,一 ...
- 浏览器插件之王-Tampermonkey(油猴脚本)
大家电脑都在使用浏览器,相信大家对浏览器插件也不陌生,浏览器插件是安装在浏览器里面,对浏览器功能进行拓展的脚本,现在的主流浏览器都有各种各样的插件如图: 这些插件让我们的上网方便了许多,有去广告的插件 ...
- [Chrome] 谷歌浏览器开启开发模式仍然无法安装油猴脚本
右键 > 属性 > 起始位置 > 添加 --enable-easy-off-store-extension-install 谷歌浏览器无法安装油猴脚本:--enable-easy-o ...
- 使用 Sublime 或其他编辑器调试 Tampermonkey 油猴脚本
作者说由于 Chrome 安全限制,没办法调用外部编辑器调试,但提供了一个间接办法,那就是脚本中使用@require file:///引入本地文件的形式,具体的方法是 打开 chrome://exte ...
- 【接单】找我付费定制Python工具软件或网站开发、Chrome浏览器插件、油猴脚本
各位可付费找我定制Python工具软件或网站开发.Chrome插件.油猴脚本.自动化软件,可通过我做的软件来评判我的实力,一定要先和我沟通你的需求,做不了的我也不会接. 费用50元起,通过淘宝APP或 ...
随机推荐
- JavaScript事件坐标区别(offset,client,page)
学习笔记. 1. offset:其定位原点是当前元素左上角 2. client:其定位原点是当前窗口左上角 3. page:其定位原点是当前页面左上角 下面来验证一下. 先上代码: <!doct ...
- 19-6 通过t-sql实现约束
------------------------------------------------------------------------ --通过t-sql语句来创建约束 ---------- ...
- 15-2 insert语句介绍
create table TblClass ( tClassId ,) primary key, tClassName ) ) --向班级表中插入一条记录 --insert into 表名(列1,列2 ...
- Java并发(4)
java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫 ...
- 利用SQL语句替换织梦DedeCms数据库内容
找到 然后把命令放在 执行即可,慎重执行 替换文章标题 UPDATE `dede_archives` SET `title`=replace(title,'我我我','你你你') 替换文章正文 UPD ...
- 符合PSR-0规范的自动加载
PSR-0规范 命名空间必须与绝对路径一致 类名首字母必须大写 除去入口文件外,其他“.php”必须只有一个类 类文件必须自动载入,不采用include等 单一入口 1)目录结构 2)代码 入口文件i ...
- Java Serializable(序列化)的总结
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object states,但 ...
- 二、【Python】机器学习-监督学习
关键词 分类(Classification) 回归(Regression) 泛化(Generalize) 过拟合(Overfitting) 欠拟合(Underfitting) 2.1 分类与回归 监督 ...
- 50个SQL语句(MySQL版) 问题十一
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
- Rocket - debug - TLDebugModuleInner - HALTSUM
https://mp.weixin.qq.com/s/elOGjaVCWc48gs9c_cTqww 简单介绍TLDebugModuleInner中HALTSUM寄存器的实现. 1. numHalted ...