- // ==UserScript==
- // @name 智慧树刷课,作业脚本(暂时不能考试)
- // @namespace xp9797
- // @version 1.0
- // @description 智慧树刷课脚本,支持自动刷课,自动跳转下一节,作业自动答题
- // @author xp9797
- // @connect ykhulian.com
- // @run-at document-end
- // @connect http://c.ykhulian.com/main.css
- // @match *://*.zhihuishu.com/stuExamWeb*
- // @match https://www.zhihuishu.com/portals_h5/*
- // @match https://studyh5.zhihuishu.com/portals_h5/2clearning.html*
- // @match https://studyh5.zhihuishu.com/videoStudy*
- // @grant unsafeWindow
- // @grant GM_xmlhttpRequest
- // @grant GM_addStyle
- // @grant GM_getResourceText
- // @resource skcss https://c.ykhulian.com/resourse/components/main.css
- // @require https://gf.qytechs.cn/scripts/406149-skeleton-mediautil/code/skeleton-MediaUtil.js?version=820961
- // @require https://gf.qytechs.cn/scripts/406147-skeleton%E8%84%9A%E6%9C%AC%E7%AA%97%E5%8F%A3%E7%BB%98%E5%88%B6/code/skeleton%E8%84%9A%E6%9C%AC%E7%AA%97%E5%8F%A3%E7%BB%98%E5%88%B6.js?version=820972
- // @require https://gf.qytechs.cn/scripts/406148-skeleton-answerutil/code/skeleton-AnswerUtil.js?version=820959
- // ==/UserScript==
-
- (function() {
- var rate= 1.5 //默认播放速度,1.5倍速
- var stop_time = 30*60*1000 //自动关闭时长,默认半个钟
- var $=unsafeWindow.jQuery;
- var url=window.location.href;
- setTimeout(function(){document.onselectstart=null},2000);//解除智慧树网页不能复制的限制
-
- let skcss = GM_getResourceText('skcss')
- GM_addStyle(skcss)
-
- function start(all_li,with_out_what){
- //获取所有要播放的视频
- var all=$(all_li);
- var new_video=new Array();
- for(let i =0 ;i<all.length;i++){
- if(all.eq(i).find(with_out_what).length==0){
- new_video.push(all.eq(i)[0]);
- }
- }
- console.log(new_video);
- //视频播放组件的设置参数:
- var vusetting = {
- auto: true,
- muted: true,
- playbackRate: rate,
- timeout_reload: true,
- debug: true,
- MediaEndEvent() {
- console.log("媒体播放完毕");
- new_video.shift().click(); // 队列模式
- setTimeout(function(){
- var mu = new MediaUtil($('video'), vusetting);//播放
- mu.start();
- },2000);
- },
- timeOut() {
- console.log("媒体加载超时");
- }
- }
- var mu = new MediaUtil($('video'), vusetting);
- mu.start();//开始播放
-
- //题目弹窗,选择A,关闭
- setInterval(function(){
- if($('.speedBox').find('span').text()=="X 1.0")$('.speedTab15').click();
- if($('.topic-item').length!=0){
- setTimeout("$('.topic-item').eq(0).click();",500)//选择A
- setTimeout("$('div.btn').eq(0).click();",1000)//关闭
- }
-
- },2000);
- }
-
-
-
- var index=0;
-
- //把所有选中的答案清空
- function clear_options(){
- setTimeout(function(){
- let options=$('.examPaper_subject').find('.examquestions-answer.onChecked');
- //把所有选中的答案清空
- var i=0;
- var s=setInterval(function(){
- console.log("清空选中的选项...");
- options.eq(i++).click();
- if(i>options.length){
- clearInterval(s);
- $('#ready').text('清除完毕!开始自动答题');
- setTimeout(function(){autoAnswer()},3000);
- }
- },200);
-
- },3000);
-
- }
-
- function autoAnswer(){
- if($('#ready')!=undefined)$('#ready').remove();
- var test_topicText=$('.examPaper_subject .subject_describe')//所有题目的描述
- var regexp= /===|---|#/;
- var question=test_topicText.eq(index).text().replace(/\s/g,'');
- console.log(question);
- console.log($('.examPaper_subject .subject_describe'));
- GM_xmlhttpRequest({
- type: "get",
- url: "http://c.ykhulian.com/chati/0/"+question ,
- dataType: "json",
- onload: function (r) {
- var json = JSON.parse(r.responseText);
- var answer = json.answer;
- var json_question = json.question;
- //==============================================如果找不到答案==============================================
- if (answer.indexOf('抱歉找不到结果') != -1) {
- test_topicText.eq(index).append('<p class="mysk" style="background-color:rgb(255, 92, 92, 0.4)">【问题】:无<br>【回答】:抱歉找不到结果</p>');
- if (index++ < test_topicText.length - 1) setTimeout(autoAnswer(), 3000);
- else $('#none').css('display','block');
- return;
- }
- test_topicText.eq(index).append('<p class="mysk" style="background-color:rgb(69, 204, 98,0.2)">【问题】:' + json_question.substring(json_question.indexOf('】') + 1) + '。</p>');
- test_topicText.eq(index).append('<p class="mysk" style="background-color:rgb(69, 204, 98, 0.2)">【回答】:' + answer + '。</p>');
-
- var options=$('.examPaper_subject').eq(index).find('.examquestions-answer');
- var input = $('.examPaper_subject').eq(index).find('.subject_node input');
-
- var answer_array = answer.split(regexp);
-
- var opt_array=new Array();
- for(let i =0 ;i <options.length;i++){
- opt_array.push(options.eq(i).text());
- }
-
- //获取答案
- var au=new AnswerUtil(question,answer_array,opt_array);
- console.log(answer_array);
- console.log(au.getAnswer());
- let au_answer=au.getAnswer();
-
- var j=0;
- loop(function(){
- options.eq(au_answer[j++]).click();
- },au_answer.length);
- drawDiv(test_topicText.eq(index),index, au_answer.length==0?0:1);
-
- setTimeout(function(){
- if(au_answer.length==0){
- test_topicText.eq(index).append('<p class="mysk" style="background-color:rgb(255, 92, 92, 0.4)">没有符合回答的答案,请自行选择</p>');
- }
- if(index<test_topicText.length){
- index++;
- setTimeout(function(){autoAnswer()},3000);
- }
- },options.length*200);
-
-
- },
- onerror: function(e){
- console.log('服务器错误');
- }
- })
- };
-
- function loop(fn,times){
- let i=0;
- var s=setInterval(function(){
- fn();
- if(i>times)clearInterval(s);
- },200);
- }
-
-
- var sleep = function(time) {
- var startTime = new Date().getTime() + parseInt(time, 10);
- while(new Date().getTime() < startTime) {}
- };
-
- //绘制回答对错的框
- function drawDiv(questions,index, isclick) {
- questions.attr("id", "topic" + index);
-
- var topic_div = $("<a href='#topic" + index + "'>" + (index + 1) + ((index + 1) >= 10 ? "" : " ") + "." + ((index + 1) >= 10 ? "" : " ") + "<span style='font-weight:bold'>" + (isclick == 1 ? "√" : "×") + "</span></a>");
- var divcss = {
- float: "left",
- color: (isclick == 1 ? "green" : "red"),
- padding: "5px",
- border: "1px solid",
- margin: " 5px"
- };
- topic_div.css(divcss);
- $('#content').append(topic_div);
-
- }
-
-
-
-
-
- if(url.indexOf('zhihuishu.com/videoStudy')!=-1){
- //绘制窗口
- drawWindow();
-
- console.log('开始刷视频');
- let time = 0
- $('#content').html('<div ><p id="rate_txt" >播放速度:默认1.5倍速</p>');
- $('#skdiv').append('<button id="back">半小时自动关闭</button>');
- $('#back').click( function(){
- if(time==0){
- time = stop_time
- console.log("半小时自动关闭");setTimeout(function(){window.history.back(-1);},stop_time)
- setInterval(function(){
- if(time>1000){
- $('#back').text("剩余秒:"+(time-=1000))
- }
- },1000)
- }
- })
-
- setTimeout(function(){start('li.clearfix.video','.time_icofinish')},3000)//开始刷共享课视频,传入视频li元素:li.clearfix.video和完成的视频.time_icofinish,即可刷课
-
- }else if(url.indexOf('zhihuishu.com/portals_h5/2clearning.html#/course2cStudy')!=-1){
- drawWindow();
- console.log('开始刷视频');
- $('#content').html('<div ><p id="rate_txt" >播放速度:默认1.5倍速</p>');
- setTimeout(function(){start('li.lessonItem','.icon.finishProgress')},3000)//开始刷兴趣课视频,传入视频li元素:li.lessonItem 和完成的视频包含的元素:icon.finishProgress即可刷课。
- }
- else if(url.indexOf('zhihuishu.com/stuExamWeb')!=-1 &&url.indexOf('dohomework')!=-1 ){
- drawWindow();
- $('#content').html('<div ><p id="ready" >正在准备自动答题中...(清除选择)</p>');
- console.log('开始自动答题');
-
- clear_options();
-
- }
-
-
-
- })();