油猴脚本 之 网教通直播评论记录抓取 v2.0

时间:2022-11-03 12:59:54

先放一个 《油猴脚本 之 网教通直播评论记录抓取》那篇文章的传送门

修复内容

  • 将所有表情转为 [符号表情] 字样,而非删除;
  • 修复被禁言用户读取异常,现在被禁言用户表示为 张三 [已禁言]
  • 修复被主播发言读取异常,现在主播发言表示为 张三 [主播]
  • 在导出的文件名后添上导出时间;
  • 添加表头;
  • 汉化所有弹窗;
  • 保存文件时可以取消;
  • 支持在到处之后按 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的更多相关文章

  1. C&plus;&plus; 网教通直播刷屏反制 &lpar;思路启发&rpar;

    前言 那些手动刷屏的你们弱爆了! 直播间的讨论区是用来讨论的, 下次谁再在上课时间大量刷屏,就以暴制暴! 思路启发 #define VK_CTRL 0x11 //... keybd_event(VK_ ...

  2. Stylus 之 网教通直播间整修

    暗色模式 效果 Mozilla 格式源代码 @-moz-document domain("fj.101.com") { * { transition: all .3s; } #wj ...

  3. &lbrack;转帖&rsqb;油猴脚本管理器 Tampermonkey v4&period;8 离线CRX安装包(谷歌浏览器版)

    https://www.52pojie.cn/thread-1010604-1-1.html 油猴脚本管理器 Tampermonkey v4.8 离线CRX安装包(谷歌浏览器版) 链接:https:/ ...

  4. 自用chrome&plus;油猴脚本,使用迅雷下载百度云大文件,一键离线下载

    油猴是有名的火狐浏览器插件(Greasemonkey),当然也有Chrome版本(tampermonkey),甚至IE.Safari.Opera都有……虽然这些插件是由不同的开发者开发出来的,界面也可 ...

  5. Tampermonkey油猴脚本管理插件-最强浏览器插件的安装使用全攻略

      对于接触过谷歌浏览器插件的“玩家”们来说,应该没有人没听说过Tampermonkey用户脚本管理器,也就是中文所说的“油猴”这个chrome插件了. 油猴号称全商店最强的浏览器插件绝非浪得虚名,一 ...

  6. 浏览器插件之王-Tampermonkey(油猴脚本)

    大家电脑都在使用浏览器,相信大家对浏览器插件也不陌生,浏览器插件是安装在浏览器里面,对浏览器功能进行拓展的脚本,现在的主流浏览器都有各种各样的插件如图: 这些插件让我们的上网方便了许多,有去广告的插件 ...

  7. &lbrack;Chrome&rsqb; 谷歌浏览器开启开发模式仍然无法安装油猴脚本

    右键 > 属性 > 起始位置 > 添加 --enable-easy-off-store-extension-install 谷歌浏览器无法安装油猴脚本:--enable-easy-o ...

  8. 使用 Sublime 或其他编辑器调试 Tampermonkey 油猴脚本

    作者说由于 Chrome 安全限制,没办法调用外部编辑器调试,但提供了一个间接办法,那就是脚本中使用@require file:///引入本地文件的形式,具体的方法是 打开 chrome://exte ...

  9. 【接单】找我付费定制Python工具软件或网站开发、Chrome浏览器插件、油猴脚本

    各位可付费找我定制Python工具软件或网站开发.Chrome插件.油猴脚本.自动化软件,可通过我做的软件来评判我的实力,一定要先和我沟通你的需求,做不了的我也不会接. 费用50元起,通过淘宝APP或 ...

随机推荐

  1. win7下安装mysql后修改密码

    mysql的安装教程网上很多,此处不过多介绍,个人觉得下面这篇教程是比较好的,一步到位.MySQL 5.7.9 ZIP 免安装版本配置过程_百度经验  http://jingyan.baidu.com ...

  2. 【JUC】JDK1&period;8源码分析之ThreadPoolExecutor(一)

    一.前言 JUC这部分还有线程池这一块没有分析,需要抓紧时间分析,下面开始ThreadPoolExecutor,其是线程池的基础,分析完了这个类会简化之后的分析,线程池可以解决两个不同问题:由于减少了 ...

  3. Finereport集群配置

    增加配置文件cluster.xml 将配置包resource文件夹下的cluster.xml打开,如果没有cluster.xml,则新建一个,基本内容如下: <?xml version=&quo ...

  4. jquery之val&lpar;&rpar;和attr&lpar;&quot&semi;value&quot&semi;&rpar;

    1.attr("value")=原来的默认值 ,而val()=用户改变的值.

  5. ANDROID对文件的操作介绍

    1. Android遵循MVC设计思想: M(业务层):service V:视图(main.xml). C:Activity 2.使用文件如何对数据进行存储 Activity提供了openFileOu ...

  6. 自定义程序异常Exception

    /** * 用于循环时的异常定位抛出异常 * 如第i行记录,抛出异常 * @author zhengwei * */ public class MyExcetion extends RuntimeEx ...

  7. yum和编译两种方式升级or降级Centos内核

    http://blog.51cto.com/renzhiyuan/1882599 今天探讨用yum和编译两种方式升级或者降级内核版本: 升级:比如玩kvm,docker等虚拟化,centos内核则升级 ...

  8. 9&period;C&num;知识点&colon;线程初识及Thread初识&lpar;一&rpar;

    知识点目录==========>传送门 线程和进程的简单概括. 1.进程就是"活动中"的程序,一个.程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实 ...

  9. python 写hive循环脚本

    要一个月的数据 一次跑一周的数据 ,建表用插入数据的方法: import os, sys reload(sys); sys.setdefaultencoding( "utf-8" ...

  10. 理解WEB标准

    WEB标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为 (Behavior).对应的标准也分三方面:结构化标准语言主要 ...