// ==UserScript==
// @name 青书学堂作业自动化
// @namespace http://tampermonkey.net/
// @author ligoregress
// @version 1.0.2
// @description 青书学堂作业点击自动完成作业填写
// @match https://*.qingshuxuetang.com/*/Student/ExercisePaper*
// @grant none
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/512228/%E9%9D%92%E4%B9%A6%E5%AD%A6%E5%A0%82%E4%BD%9C%E4%B8%9A%E8%87%AA%E5%8A%A8%E5%8C%96.user.js
// @updateURL https://update.greasyfork.icu/scripts/512228/%E9%9D%92%E4%B9%A6%E5%AD%A6%E5%A0%82%E4%BD%9C%E4%B8%9A%E8%87%AA%E5%8A%A8%E5%8C%96.meta.js
// ==/UserScript==
(function() {
'use strict';
const html = '
';
$('body').on('click', '#start_answering', function(){
run();
});
// 获取学院
function getSchool() {
var path = new URL(location.href).pathname;
var match = path.match(/^\/(.+)\/Student\/ExercisePaper$/);
if (match && match[1]) {
return match[1];
} else {
return "";
}
}
// 获取quizId
function getQuizId() {
const url = location.href;
const reg = /(\w+)=([^&]+)/g;
let match;
while ((match = reg.exec(url)) !== null) {
if (match[1] == 'quizId') {
return match[2];
}
}
return "";
}
// 单选题
function danxuan(question) {
let id = question.questionId + "_" + question.solution;
$("#" + id).click();
}
// 多选题
function duoxuan(question) {
let daan = question.solution.split("");
$('input[type="checkbox"][name="'+question.questionId+'"]:checked').prop('checked', false);
for (let i in daan) {
let id = question.questionId + "_" + daan[i];
let dom = $("#" + id);
dom.parent().click();
}
}
// 问答题
function wenda(question, num) {
CKEDITOR.instances["editor" + num].setData(question.solution);
$("#cke_"+num+"_contents div").html(question.solution);
}
// 启动
function run() {
let quizId = getQuizId();
if (quizId == "") {
console.error("获取quizId参数失败");
return;
}
let schoole = getSchool();
if (schoole == "") {
console.error("获取学院失败");
return;
}
$.get(`https://degree.qingshuxuetang.com/${schoole}/Student/DetailData?quizId=${quizId}`, function(res) {
if (res.message == "成功") {
console.log("获取答案成功")
let questions = res.data.paperDetail.questions;
let wendaNum = 1;
let hasOtherType = false;
for (let i in questions) {
document.getElementById("group-item-" + questions[i].sequence).click();
console.log("第" + questions[i].sequence +"题 = " + questions[i].solution);
if (questions[i].typeId == 1 || questions[i].typeId == 6) {
danxuan(questions[i]);
} else if (questions[i].typeId == 2) {
duoxuan(questions[i]);
} else if (questions[i].typeId == 3 || questions[i].typeId == 8) {
wenda(questions[i], wendaNum++);
} else {
hasOtherType = true;
}
}
if (hasOtherType) {
alert("发现未知分类,答题失败,请手动查看控制台进行答题");
} else {
alert("题已打完,请手动交卷");
}
} else {
console.error("获取答案失败:" + res.message)
}
})
}
$(document).ready(function() {
let check = setInterval(function() {
if ($(".question-detail-container").length > 0 && $(".group_item").length > 0) {
clearInterval(check);
$("body").append(html);
} else {
console.log("等待页面加载中...");
}
}, 1000);
});
})();