ZJOOC自动播放完全版

ZJOOC自动播放视频和完成文档点击

  1. // ==UserScript==
  2. // @name ZJOOC自动播放完全版
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description ZJOOC自动播放视频和完成文档点击
  6. // @author 阿鸡
  7. // @match *://www.zjooc.cn/ucenter/student/course/study/*/plan/detail/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13. var startTime=15000;//第一次脚本开始时间(毫秒),在这个时间之前需要确保完成课程选择和课程加载,否则会报错
  14. var playInterval=5000;//课程播放间隔时间(毫秒),在这个时间之前需要确保完成课程加载,否则会报错或者错误跳过
  15. var speedIndex = 0; // 速度,0:4倍速,1:2倍速,2:1.5倍速,3:1.25倍速,4:正常,5:0.5倍速
  16. var muteFlag = true; //是否静音
  17. var time1;
  18. var flag = true;//判断是图片还是视频-------视频/true 图片/false;
  19.  
  20. var addr,getSumClass,getSumClassName;
  21.  
  22.  
  23. var nextVideoFunc=function(){
  24.  
  25.  
  26. /*
  27. * 当右边的东西都执行完之后再去执行这行代码。
  28. * 所以需要做一个判断,当右边的nextSibling==null的时候再去执行这一行代码。
  29. * 所以来之前我们先判断以下哪个是带有 el-tabs__item is-top is-active的。
  30. * 然后通过nextSibling执行下一个代码
  31. */
  32.  
  33. var currentSum = document.getElementsByClassName("el-tabs__item is-top is-active")[1];
  34.  
  35. var nextSum = currentSum.nextSibling;
  36.  
  37. if(nextSum == null){
  38. var currentClass=document.getElementsByClassName("el-menu-item is-active")[1];
  39. var nextClass=currentClass.nextSibling;
  40. if(nextClass==null){
  41. currentClass.parentNode.parentNode.nextSibling.childNodes[0].click();
  42. nextClass=currentClass.parentNode.parentNode.nextSibling.childNodes[1].childNodes[1];
  43. }
  44. if(nextClass==null){
  45. alert("所有课程已经学习完毕。");
  46. }
  47. nextClass.click();
  48.  
  49. addr = document.getElementsByClassName("el-tabs__item is-top is-active")[1];
  50.  
  51. getSumClass = addr.childNodes[0].childNodes[0];
  52.  
  53. getSumClassName = getSumClass.className;
  54.  
  55. if(getSumClassName.search("iconset") != -1){
  56. flag = false;
  57. if(time1){clearInterval(time1);}
  58. }else{
  59. flag = true;
  60. time1 = window.setInterval(detectiveFunc,playInterval);
  61. }
  62.  
  63. if(flag == true){
  64. window.setTimeout(playVideoFunc,7000);
  65. }else{
  66. window.setTimeout(playImg,7000);
  67. }
  68.  
  69. }else{
  70.  
  71. //因为是div所以不可以click。那么我们就添加和删除类的方式来实现
  72. currentSum.classList.remove("is-active");
  73. nextSum.classList.add("is-active");
  74.  
  75. addr = document.getElementsByClassName("el-tabs__item is-top is-active")[1];
  76.  
  77. getSumClass = addr.childNodes[0].childNodes[0];
  78.  
  79. getSumClass.click()
  80.  
  81. getSumClassName = getSumClass.className;
  82.  
  83. if(getSumClassName.search("iconset") != -1){
  84. flag = false;
  85. if(time1){clearInterval(time1);}
  86. }else{
  87. flag = true;
  88. time1 = window.setInterval(detectiveFunc,playInterval);
  89. }
  90.  
  91.  
  92. if(flag == true){
  93. window.setTimeout(playVideoFunc,7000);
  94. }else{
  95. window.setTimeout(playImg,7000);
  96. }
  97. }
  98.  
  99.  
  100. }
  101. var playVideoFunc=function(){
  102. var vidf=document.getElementsByTagName("video")[0];
  103. var spd = vidf.parentElement.children[8];
  104. var cbf=vidf.parentNode.childNodes[2];
  105. var playLayerf=cbf.childNodes[0];
  106. /*速度*/
  107. spd.children[speedIndex].click();
  108. /*音量*/
  109. if(muteFlag){
  110. cbf.children[18].click();
  111. }
  112. window.setTimeout(function(){
  113. var vidf=document.getElementsByTagName("video")[0];
  114. var spd = vidf.parentElement.children[8];
  115. var cbf=vidf.parentNode.childNodes[2];
  116. var playLayerf=cbf.childNodes[0];
  117. /*速度*/
  118. spd.children[speedIndex].click();
  119. /*音量*/
  120. if(muteFlag){
  121. cbf.children[18].click();
  122. }
  123. playLayerf.click();
  124. },playInterval);
  125. };
  126.  
  127. var playImg = function(){
  128. var btn = document.getElementsByTagName("button")[2];
  129. btn.click();
  130. window.setTimeout(nextVideoFunc,7000);
  131.  
  132. }
  133.  
  134. var detectiveFunc=function(){
  135. var vid=document.getElementsByTagName("video")[0];
  136. var cb=vid.parentNode.childNodes[2];
  137. var playLayer=cb.childNodes[0];
  138. var processBar=cb.childNodes[7];
  139. var processText;
  140. //结束,用/分割时间,如果左边的时间等于右边的时间就可以播放下一集了
  141. processText=processBar.innerText;
  142. var pctime=processText.split('/');
  143. var ctime=pctime[0].trim();
  144. var etime=pctime[1].trim();
  145. if(ctime==etime){
  146. if(time1){clearTimeout(time1);}
  147. window.setTimeout(nextVideoFunc,7000);
  148. }
  149. };
  150. var ScritpFunc=function(){
  151.  
  152. addr = document.getElementsByClassName("el-tabs__item is-top is-active")[1];
  153.  
  154. getSumClass = addr.childNodes[0].childNodes[0].className;
  155.  
  156. //如果是图片的话,就去调用图片的完成方法
  157. //否则就调用视频的完成方法
  158. if(getSumClass.search("iconset") != -1){
  159. flag = false;
  160. playImg();
  161. }else{
  162. flag = true;
  163. playVideoFunc();
  164. time1 = window.setInterval(detectiveFunc,playInterval);
  165. }
  166.  
  167. }
  168. //开始load之后,过startTime后执行图片或者是视频
  169. window.setTimeout(ScritpFunc,startTime);
  170. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址