您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
若离智慧校园,解决宜宾学院智慧校园的题目,能够自动获取宜宾学院的智慧校园的作业的答案,能够跳过秒看教学视频
// ==UserScript== // @name 若离智慧校园 // @namespace 若离智慧校园,解决宜宾学院智慧校园的题目,能够自动获取宜宾学院的智慧校园的作业的答案,前提是你做了一遍后可以看到自己做过的答案 // @version 1.3 // @description 若离智慧校园,解决宜宾学院智慧校园的题目,能够自动获取宜宾学院的智慧校园的作业的答案,能够跳过秒看教学视频 // @author 若离QQ:2909998156 // @match https://mooc.yibinu.edu.cn/* // @icon https://q1.qlogo.cn/g?b=qq&nk=2909998156&s=100 // @resource cs1 https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/ant-design-vue/1.7.8/antd.css // @resource cs2 https://pan.ruoli.cc/s/8b0cc4 // @require https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/vue/2.6.14/vue.min.js // @require https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/ant-design-vue/1.7.8/antd.min.js // @run-at document-end // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_getResourceText // ==/UserScript== // 脚本初始化 var setting = {'logs':['初始化脚本完成,若离QQ:2909998156','当前脚本版本:V1.3'],'datas': []}; // 日志 function log(logText){ setting.logs.unshift(logText); if(Math.random() > 0.92){ setting.logs.unshift('请勿用于非法用途哦!!'); } } // 从后台获取答案 function getAnswer(url, data){ log('获取答案中'); let id = url.match(/\/examSubmit\/(\d+)\/getExamPaper/)[1] 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', 'Referer': `https://mooc.yibinu.edu.cn/examTest/stuExamList/{id}.mooc` }, onload: function(res){ console.log('res',res) if(res .status == 200){ let obj = $.parseJSON(res.responseText).paper.paperStruct; log("获取答案完成,正在格式化答案!"); 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 =>{ answer.push(answerItem.responseContent); }) } setting.datas.push({'id':index + 1 ,'question':question, 'answer': answer}); }) log('若您觉得本脚不错,记得赞助哦'); log('官方交流群:183937365欢迎大家加入!'); log('格式化完成'); log('请切换到功能页面查看答案哦') } //初始化界面 function initView(){ var $div =$('<div class="rlBox" :style="{opacity: isShow}">' + ' <a-card title="宜宾学院智慧校园助手" style="width: 100%;height: 100%;">' + ' <a style="opacity: 1 !important;" slot="extra" href="#">' + ' <a-button @click="toClose()" size="small" ghost :type="buttonColor" shape="circle" :icon="buttonIcon" />' + ' </a>' + ' <a-tabs default-active-key="1" @change="callback">' + ' <a-tab-pane key="1" tab="日志">' + ' <div class="rl-panel log">' + ' <p v-for="item in logs" class="log_content">' + ' {{item}}' + ' </p>' + ' </div>' + ' </a-tab-pane>' + ' <a-tab-pane key="2" tab="功能">' + ' <div class="rl-panel">' + ' <div class="opr">' + ' <a-button-group>' + ' <a-button size="small" type="danger" @click="passVideo()">秒过视频</a-button>' + ' <a-button size="small" type="dashed" @click="exportExcel()">导出excel</a-button>' + ' <a href ="https://pay.ruoli.cc/" target="_blank"><a-button size="small" type="primary">赞助脚本</a-button></a>' + ' <a href ="https://jq.qq.com/?_wv=1027&k=OPpSeMCZ" target="_blank"><a-button size="small" >加入群聊</a-button></a>' + ' </a-button-group>' + ' </div>' + ' <a-table id="rlTable"' + ' :scroll="{y: 275}" :pagination="false" bordered size="small" :columns="columns" :data-source="answerList">' + ' </a-table>' + ' </div>' + ' </a-tab-pane>' + ' </a-tabs>' + ' </a-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, close: false, key: '1', columns:[ { title: '序号', dataIndex: 'id', key: 'id', width: '40px' }, { title: '题目', dataIndex: 'question', key: 'question', ellipsis: true }, { title: '答案', dataIndex: 'answer', key: 'answer', }, ], answerList:setting.datas, }, computed:{ isShow(){ return this.close? 0.1: 1.0; }, buttonIcon(){ return this.close? 'check': 'close'; }, buttonColor(){ return this.close? 'primary': 'danger'; } }, methods: { callback(key) { this.key = key; }, toClose(){ this.close = !this.close; }, passVideo(){ let video = document.getElementsByTagName("video"); if(video.length == 0){ log("您当前页面不存在视频,请先打开学习视频页面"); }else{ document.getElementsByTagName("video")[0].currentTime=document.getElementsByTagName("video")[0].duration; log("视频已秒刷完成!"); } }, exportExcel(){ // 获取table let table = document.querySelectorAll("#rlTable table") let html = '<html><head><meta charset="UTF-8"></head><body>' table.forEach(item => { html += item.outerHTML }) html+= '</body></html>' //base64 URL形式文件下载 let oa = document.createElement('a'); oa.href = 'data:application/vnd.ms-excel;base64,'+window.btoa(unescape(encodeURIComponent(html))); oa.download = '题库.xls';//通过A标签 设置文件名 oa.click(); } } }); } // 初始化获取答案,延迟5秒防止流程崩溃 function initGetAnswer(settings){ var url = location.origin + settings.url; var data = settings.data.replace(/(testPaperId=).*?(&)/,'$1' + '1250' + '$2'); console.log("=====") console.log(url,'url') console.log(data) getAnswer(url,data); } // 脚本入口 initView(); //监听跳过视频按钮 $('#rl_passVideo').click(function(){passVideo();}); //监听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); } }); })