🏠

Greasy Fork is available in English.

智慧职教MOOC学院 --网课助手 (蓝版)

智慧职教简易自动学习脚本,解除Ctrl+C限制,自动评论/讨论


安装此脚本?
访问作者的支持站点提问、发表评价,或者 举报此脚本
// ==UserScript==
// @name         智慧职教MOOC学院 --网课助手 (蓝版)
// @version      1.08
// @description  智慧职教简易自动学习脚本,解除Ctrl+C限制,自动评论/讨论
// @author        tuChanged
// @run-       document-end
// @grant        unsafeWindow
// @match       *://mooc.icve.com.cn/study/*
// @license      GPL
// @namespace https://greasyfork.org/users/449085
// @supportURL https://tuchg.github.io
// @contributionURL https://greasyfork.org/users/449085
// ==/UserScript==
(function () {
'use strict';
const setting = {
// 随机评论
randomComment: ["6666", "好", "讲解得很精辟"],
//是否启用评论,
isOpenComment: false,
//最高延迟
maxDelayTime: 5000,
//最低3秒
minDelayTime: 3000,
//0-高清 1-清晰 2-流畅 3-原画
videoQuality: 2,
//2倍速
videoPlaybackRate: 2
}, _self = unsafeWindow,
url = location.pathname,
top = _self
try {
while (top != _self.top) top = top.parent.document ? top.parent : _self.top;
} catch (err) {
console.log(err);
top = _self;
}
var $ = _self.jQuery || top.jQuery;
//产生区间随机
var rnd = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
/**
* 随机延迟执行方法
* @param {需委托执行的函数} func 函数
*/
var delayExec = (func) => setTimeout(func, rnd(setting.minDelayTime, setting.maxDelayTime));
//跳转到某小节 通过顶栏
var gotoUrl = (page) => page.contents()[3].click();
//跳转下一页
// var nextCourse = () => $(".next").click();
//入口
switch (url) {
case "/study/courseLearn/resourcesStudy.html":
_main();
break;
case "/study/discussionArea/topicReply.html":
discussHandler();
break;
case "/study/workExam/testWork/preview.html":
case "/study/workExam/onlineExam/preview.html":
homeworkHandler();
break;
case "/study/workExam/homeWork/history.html":
case "/study/workExam/onlineExam/history.html":
case "/study/workExam/testWork/history.html":
floatHandler();
break;
default:
console.log(`脚本已准备启动 当前位置:${url}`);
break;
}
//当前页
let current;
//刷课主逻辑
function _main() {
//请求数据
$("#olTempleteCellModul").click();
//main函数
setTimeout(() => {
//当前小节
current = $("li.np--level.np--level-3.active");
switch (current.data().categoryname) {
case "pt":
case "文档":
pptHandler(current);
break;
case "视频":
videoHandler(current);
break;
}
console.log("当前处理逻辑安排完成,等待执行结果中");
}, 10000);
}
/**
* 检测课程类别 并深层递归
*/
function check(current) {
//多级跳转
if (current.next().length == 0) {
// current.end();
//往树根遍历
//小章节
let parent = current.closest(".np--level-2");
if (parent.next().length == 0) {
//大章
let ancestor = parent.closest(".np--level-1")
//检测是否到终章
if (ancestor.next().length == 0) {
alert("任务完成");
//关闭当前窗口
// closeTab();
} else {
check(ancestor.next().find(".np--level-3").first());
}
} else {
check(parent.next().find(".np--level-3").first())
}
return;
}
//查询下一个是否已完成
if (current.next().find("span.np--type.active").length > 0) {
check(current.next());
return;
}
//查询下一项所属类别
switch (current.next().data().categoryname) {
case ""://目录
case "作业":
case "测验":
check(current.next());
break;
case "讨论":
setTimeout(() => {
gotoUrl(current.next())
}, 20000);
check(current.next());
break;
case "pt":
case "视频":
case "文档":
gotoUrl(current.next());
_main();
break;
}
}
/**
* 作业处理
*/
function homeworkHandler() {
uncageCopyLimit()
}
/*
*  解除文本限制
*/
function uncageCopyLimit() {
let arr = ["oncontextmenu", "ondragstart", "onselectstart", "onselect", "oncopy", "onbeforecopy"]
for (let i of arr)
$(".hasNoLeft").attr(i, "return true")
console.log("已成功解除限制")
}
/**
* 视频类处理
*/
function videoHandler(current) {
let player = top.jwplayer($(".jwplayer").attr("id"));
//播放回调
if (player.getState() == "complete") {
console.log("视频原已播放完毕\n");
delayExec(commentHandler(current));
return;
}
//配置
player.setMute(true)//静音
player.setPlaybackRate(setting.videoPlaybackRate);
player.setCurrentQuality(setting.videoQuality);
//播放回调
player.on("playlistComplete", () => {
console.log("视频播放完成\n");
delayExec(commentHandler(current));
});
}
/**
* PPT类别处理
*/
function pptHandler(current) {
//等待2秒后执行,避免不正常操作加载时间
//延迟提交评论
delayExec(commentHandler(current));
}
/**
* 提取当前页内容
*/
function exactProblem() {
const arr = $(".e-q-body");
let text = "";
for (let x = 0; x < arr.length; x++)
text += arr[x].innerText;
$("#_content").val(text);
}
/**
* 提取题目
*/
function floatHandler() {
const div = `<div style="border:#42b983 solid 2px;width: 330px; position: fixed; top: 0; right: 10px;  z-index: 99999">
<button id="extract_btn">提取</button>
<hr/>
<textarea id="_content" style="width: 100%;height: 300px;border: #B3C0D1 solid 2px;overflow: auto;font-size: x-small" />
</div>`;
$(div).appendTo('body')
$("#extract_btn").bind('click', () => exactProblem())
}
/**
* 提交评论
*/
function commentHandler(current) {
if (setting.isOpenComment) {
//评5星
$("#star #starImg4").click();
//随机从词库填写评论
$("iframe#ueditor_0").contents().find("body.view")[0].innerText = setting.randomComment[rnd(0, setting.randomComment.length - 1)];
//提交
delayExec(() => {
$("#btnComment").click();
delayExec(() => {
$(".sgBtn.ok").click();
console.log("评论成功\n");
check(current);
});
});
} else {
check(current);
}
}
/**
* 提交讨论
*/
function discussHandler() {
setTimeout(() => {
//获取上一位的评论  隔两个索引为评论  字数太少往下查找,避免太水
let vaildComment = findVaildDiscuss();
// //开启HTML输入模式
// $EDITORUI["edui945"]._onClick();
//填充评论
$("iframe#ueditor_0").contents().find("body.view")[0].innerText = vaildComment;
//提交
delayExec(() => {
$(".btn_replyTopic").click();
console.log("讨论成功\n");
}
);
}, 10000);
/*  //返回上一页
delayExec(() => window.history.go(-1)); */
}
/**
* 简单地找出一个有效的讨论
*/
function findVaildDiscuss() {
let arr = $(".mc-learning-table  tbody tr div[id^='istext_']"), element;
for (let i = 0; i < arr.length; i++) {
element = arr[i].innerText;
if (element.length > 10)
return element;
}
return element;
}
})();