// ==UserScript==
// @name 刷课
// @version 0.5
// @description 通过自己的刻苦耐劳 你就是最强
// @author 武锦龙
// @match *://weiban.mycourse.cn/*
// @match https://mcwk.mycourse.cn/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @run-at document-end
// @namespace
// ==/UserScript==
(function() {
'use strict';
const addHistoryEvent = function(type) {
var originalMethod = history[type];
return function() {
var recallMethod = originalMethod.apply(this, arguments);
var e = new Event(type);
e.arguments = arguments;
window.dispatchEvent(e);
return recallMethod;
};
};
history.pushState = addHistoryEvent('pushState');
history.replaceState = addHistoryEvent('replaceState');
var getVal = function(fun1, fun2){
let id = setInterval(()=>{
var val = fun1();
if (val.length) {
clearInterval(id);
fun2(val);
}
}, 100)
}
var start = function(e) {
$(function(){
setTimeout(()=>{
//console.log(window.location);
// 第一阶段 在主页
if (window.location.hash === '#/') {
getVal(()=>{return $("div.task-block-new")}, (res)=>{
//console.log(res);
setTimeout(()=>{
res[0].click();
}, 200);
})
}
// 第二阶段 在学习任务
var reg = /course.*projectId.*projectType.*special.*title.*/
if (window.location.hash.match(reg)) {
// 先检测出还需要完成的任务
getVal(()=>{return $("li.folder-item")},(res)=>{
res = res.filter(function(index){
var child = this.querySelector('.state');
var str = child.innerHTML;
if (str.substring(0, str.indexOf("/")) === str.substring(str.indexOf("/") + 1, str.length)) {
return false;
}
return true;
})
//console.log(res);
getVal(()=>{return res.find('.folder-extra a')}, (res2)=>{
res2[0].click();
})
})
};
// 第三阶段 在学习任务列表
reg = /course.*list.*projectType.*subjectType.*categoryCode.*projectId.*categoryName.*/
if (window.location.hash.match(reg)) {
getVal(()=>{return $("li.course")},(res)=>{
res = res.filter(function(index){
var child = this.querySelector('.course-content h3 i');
return !child;
})
//console.log(res);
if (res.length == 0) {
getVal(()=>{return $("a.mint-tab-item.is-selected")}, (res2)=>{
res2[0].click();
})
}
else res[0].click();
})
}
// 第四阶段 在iframe中 同域解决方法
/*if (window.location.hash.match(reg)) {
getVal(()=>{return $("iframe")},(res)=>{
res[0].contentWindow.finishWxCours();
})
} */
}, 1000)
});
}
window.addEventListener('pushState', start);
window.addEventListener('popstate', start);
//console.log("脚本执行");
// 第四阶段 此时在异域iframe中
if (window.location.href.indexOf("mcwk.mycourse.cn/course/") != -1) {
// console.log(window.location.href);
$(function(){
setTimeout(()=>{
try{console.log(exportRoot.currentFrame)}catch(e){}
try {
var userid = getQueryString("userCourseId");
var jiaoxuejihuaid = getQueryString("tenantCode");
var finishWxHost = document.referrer.replace("http://","").replace("https://","").split("/")[0];
if(document.referrer=="" || document.referrer==null || document.referrer==undefined){
finishWxHost = "weiban.mycourse.cn"
}
var webUrl = window.location.href;
var finishWxUrl=getRecordUrl(webUrl);
if(finishWxHost.indexOf("218.25.139.161") > 0){
//finishWxUrl = "http://"+finishWxHost+"/pharos/usercourse/finish.do";
finishWxUrl = "https://"+finishWxHost+"/pharos/usercourse/finish.do";
}
var finishData = {"userCourseId": userid, "tenantCode": jiaoxuejihuaid};
$.ajax({
async: false,
url: finishWxUrl,
type: "GET",
dataType: "jsonp",
data: finishData,
timeout: 5000,
success : function (data) {
backToList();
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
}
});
} catch (e) {
alert("报了啥错误" + e)
}
}, 10000)
})
}
else if (window.location.href.indexOf("weiban.mycourse.cn/") != -1) {
//console.log(window.location.href);
$(function(){
start();
})
}
// Your code here...
})();
将代码放到油猴中即可使用