Greasy Fork is available in English.
若离智慧校园,解决宜宾学院智慧校园的题目,能够自动获取宜宾学院的智慧校园的作业的答案,前提是你做了一遍后可以看到自己做过的答案
当前为
// ==UserScript==
// @name 若离智慧校园
// @namespace 若离智慧校园,解决宜宾学院智慧校园的题目,能够自动获取宜宾学院的智慧校园的作业的答案,前提是你做了一遍后可以看到自己做过的答案
// @version 1.0
// @description 若离智慧校园,解决宜宾学院智慧校园的题目,能够自动获取宜宾学院的智慧校园的作业的答案,前提是你做了一遍后可以看到自己做过的答案
// @author 若离QQ:2909998156
// @match http://mooc.yibinu.edu.cn/examTest/*
// @icon https://q1.qlogo.cn/g?b=qq&nk=2909998156&s=100
// @resource cs1 https://unpkg.com/element-ui/lib/theme-chalk/index.css
// @resource cs2 https://pan.ruoli.cc/E5/cdn/ruoli.min.css
// @require https://cdn.jsdelivr.net/npm/vue/dist/vue.js
// @require https://unpkg.com/element-ui/lib/index.js
// @require https://cdn.bootcdn.net/ajax/libs/limonte-sweetalert2/10.16.3/sweetalert2.all.js
// @run-at document-end
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @grant GM_getResourceText
// ==/UserScript==
// 从后台获取答案
function getAnswer(url, data){
console.log('获取答案中');
GM_xmlhttpRequest({
method: "post",
url: url,
data: data,
dataType: 'json',
headers: {
'Origin': location.origin,
'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
'Content-type': 'application/x-www-form-urlencoded;charset=utf-8',
},
onload: function(res){
console.log(res);
if(res .status == 200){
var obj = $.parseJSON(res.responseText).paper.paperStruct;
setting.logs.unshift("获取答案完成,正在格式化答案!");
setTimeout(formatAnswer, 2000, obj);
}else{
}
}
});
}
//格式化答案
function formatAnswer(str){
str.forEach((listItem,index) => {
//遍历出问题
var question = listItem.quiz.quizContent;
//如果存在选项,那么必定是单选或者多选,先将选项便利出来
var options = []; //定义选项的数组
var answer = []; //定义答案的数组
if(listItem.quiz.quizOptionses.length != 0){
//console.log(listItem);
//将遍历出来的选项添加到选项数组
listItem.quiz.quizOptionses.forEach((optionItem, index) =>{
options[optionItem.optionId] = String.fromCharCode(65+index) + ":" +optionItem.optionContent;
})
//将遍历出来的答案添加到答案数组
listItem.quiz.quizResponses.forEach(answerItem =>{
answer.push(options[answerItem.optionId]);
})
}else{//不存在选项,也就是填空题
listItem.quiz.quizResponses.forEach(answerItem =>{
//console.log('填空题');
answer.push(answerItem.responseContent);
})
}
setting.datas.push({'id':index + 1 ,'question':question, 'answer': answer});
})
setting.logs.unshift('答案获取完成,感谢您的使用');
setting.logs.unshift('若您觉得本脚不错,记得赞助哦');
setting.logs.unshift('官方交流群:183937365欢迎大家加入!');
}
//初始化界面
function initView(){
var $div =$('<div id="rlBox"> ' +
' <el-card class="box-card"> ' +
' <el-row> ' +
' <el-col :span="24"><div class="center"><b style="color: #E6A23C; font-size: 20px;">若离智慧校园</b></div></el-col> ' +
' </el-row> ' +
' <el-divider></el-divider> ' +
' <el-row> ' +
' <a href ="https://pay.ruoli.cc/" target="_blank"><el-button type="primary" plain size="mini">我要赞助</el-button></a> ' +
' <a href ="https://jq.qq.com/?_wv=1027&k=OPpSeMCZ" target="_blank"><el-button type="success" plain size="mini">加入群聊</el-button></a>' +
' </el-row> ' +
' <el-divider></el-divider> ' +
' <el-row class = "log_list"> ' +
' <el-col :span="3"><span class="gray small">日志</span></el-col> ' +
' <el-col :span="21"> ' +
' <el-row class = "log_list"> ' +
' <el-col :span="24"> ' +
' <div class="gray small" v-for="log in logs">{{ log }}</div> ' +
' </el-col> ' +
' </el-row> ' +
' </el-col> ' +
' </el-row> ' +
' <el-divider></el-divider> ' +
' <template> ' +
' <el-table ' +
' :data="tableData" ' +
' border ' +
' empty-Text = "欢迎大家加入群聊:183937365"' +
' size="mini" ' +
' style="width: 100%"> ' +
' <el-table-column ' +
' prop="id" ' +
' label="题号" ' +
' width="48" ' +
' align="center"> ' +
' </el-table-column> ' +
' <el-table-column ' +
' :show-overflow-tooltip="true"' +
' prop="question" ' +
' label="题目" ' +
' width="120"> ' +
' </el-table-column> ' +
' <el-table-column ' +
' prop="answer" ' +
' label="答案" >' +
//' v-for="(item,i) in answer" :key="i">' +
//' <template slot-scope="scope">' +
//' <p>答案是:{{ scope.row[i] }}</p>' +
//' </template>' +
' </el-table-column> ' +
' </el-table> ' +
' </template> ' +
' </el-card> ' +
'</div> ');
$("body").append($div);
GM_addStyle(GM_getResourceText("cs1"));
GM_addStyle(GM_getResourceText("cs2"));
var vue = new Vue({
el: '#rlBox',
data:{
logs: setting.logs,
tableData: setting.datas,
dialogVisible: true
},
methods: {
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
}
},
});
}
// 初始化获取答案,延迟5秒防止流程崩溃
function initGetAnswer(settings){
var url = location.origin + settings.url;
var data = settings.data.replace(/(testPaperId=).*?(&)/,'$1' + '1250' + '$2');
getAnswer(url,data);
}
//脚本初始化
var setting = {'logs':['初始化脚本完成,若离QQ:2909998156'],'datas': []};
//判断是否已经同意了本脚本的协议
function checkStatus(){
var status = localStorage.getItem('ruoli');
if(status == "true"){
initView();
//监听url访问,当访问了加载题目的url时,将获取答案
$(document).ready(function(){
$(document).ajaxComplete(function (evt, request, settings) {
if(settings.url.search('getExamPaper') != -1){
setting.logs.unshift("您已打开作业界面,5秒后将为您获取答案")
setTimeout(initGetAnswer,5000, settings);
}
});
})
}else{
swal.fire({
icon: 'warning',
title: '若离提示',
html: '在您使用本脚本之前,请先确保您<strong>不会以此牟利</strong><br />并且您下载本脚本仅仅用于学习<br/>不会借助于本脚本来做任何违反法律<br/>以及学校规章制度的事情!',
showCancelButton: true,
confirmButtonColor: '#409EFF',
cancelButtonColor: '#d33',
confirmButtonText: '我 同 意',
cancelButtonText: '我 拒 绝',
}).then((result) => {
if (result.isConfirmed) {
swal.fire({
text: '感谢您的支持,如果您觉得本脚本不错,可以加群讨论哦!',
icon: 'success',
confirmButtonColor: '#409EFF',
});
localStorage.setItem('ruoli',true);
checkStatus();
}else{
localStorage.setItem('ruoli',false);
swal.fire({
text: '您决绝了本协议,如果您想继续使用本脚本请刷新后同意本协议!',
icon: 'error',
confirmButtonColor: '#409EFF',
});
}
});
}
}
checkStatus();