您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
点击知识中心右下加的启动按钮,开启无人值守自动挂课模式!
// ==UserScript== // @name 中国电信网上大学知识中心自动挂课 // @namespace http://tampermonkey.net/ // @version 0.7 // @description 点击知识中心右下加的启动按钮,开启无人值守自动挂课模式! // @author HuangDingYun // @match https://kc.zhixueyun.com/ // @icon https://www.google.com/s2/favicons?sz=64&domain=zhixueyun.com // @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js // @grant unsafeWindow // @grant GM_openInTab // @grant GM.openInTab // @grant GM_getValue // @grant GM.getValue // @grant GM_setValue // @grant GM.setValue // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @grant GM_registerMenuCommand // @grant GM_addValueChangeListener // ==/UserScript== var $ = unsafeWindow.jQuery; var classList = new Array(); var classList1 = new Array(); var nowCount = 0; var divButton = '<div class="item" onclick="startAutoClass()"> <div id="startAutoPlayer" class="view"> <i class="iconfont icon-play"></i> <div class="text">自动挂课</div> </div> </div>'; var mideaButton = '<div id="clcikPlay" class="item" onclick="playMedil()"> <div id="startPlay" class="view"> <i class="iconfont icon-play"></i> <div class="text">播放</div> </div> </div>'; (function() { 'use strict'; setTimeout(function(){ var url=window.location.hash var urlStr=url.toString() //增加页面功能按钮 if(urlStr.match("/study/subject/detail/")){ $("#D60toolbarTab").append(divButton) } //判断是否是课程页面 if($("div.vjs-control-bar").length!=0){ console.log("检测播放进度") isFinished() } },2500); setTimeout(function(){ if($("button.videojs-referse-btn").length!=0){ console.log("开始播放") playMedil() } },4000); // Your code here... })(); unsafeWindow.startAutoClass =function (){ $("div.item.current-hover").each(function(index,element){ if($(this).find("i.icon-reload").length==0 && $(this)[0].firstElementChild.querySelector("span.section-type").innerText == "课程"){ classList1.push($(this).attr("id")) } }) console.log(classList1) if(classList1.length!=0){ openClassPage2(0) }else{ alert("已经完成当前课题下的全部课程!") } } GM_onMessage('_.unique.name.greetings', function(src, message) { console.log('[onMessage]', src, '=>', message); nowCount++; if(nowCount<classList1.length){ openClassPage2(nowCount) } }) function GM_onMessage(label, callback) { GM_addValueChangeListener(label, function() { callback.apply(undefined, arguments[2]); }); } function GM_sendMessage(label) { GM_setValue(label, Array.from(arguments).slice(1)); } function isFinished(){ let timer =setTimeout(function () { if($("div.anew-text").length!=0&&$("div.anew-text").text()=="您已完成该课程的学习"){ //console.log("12312313") GM_sendMessage('_.unique.name.greetings', window.location.href,"finished at "+new Date()); window.close(); }else{ //console.log("学习中"); isFinished() } }, 1000) } function openClassPage2(nowCount){ console.log($("div#"+classList1[nowCount])) $("div#"+classList1[nowCount]).click(); } unsafeWindow.playMedil = function(){ let timer =setTimeout(function () { if($(".videojs-referse-btn.vjs-hidden").length==0){ if($("button.videojs-referse-btn").length!=0){ if($("span.vjs-control-text:contains(', opens captions settings dialog')").length!=0){ $("span.vjs-control-text:contains(', opens captions settings dialog')").remove(); } $("span.vjs-control-text").click() } } unsafeWindow.playMedil(); }, 2000) } function play(index){ setTimeout(function(){ if(index<$("span.vjs-control-text").length){ console.log(index); $("span.vjs-control-text").get(index).click(); index++; play(index); } },2000); }