当前位置:   article > 正文

学习通浏览器刷课脚本_学习通脚本

学习通脚本

 学习通刷课太痛苦?试试这个Js脚本

  1. /**
  2. * 本脚本用于学习通自动刷课,仅做学习用途
  3. * 转发请注明作者以及来源
  4. */
  5. /**定义全局变量 */
  6. var array_echelon;//顺序执行梯队
  7. /**定义事件 */
  8. let dealEvent = new Event("redeal", { bubbles: false, cancelable: false });
  9. /**监听事件 */
  10. document.addEventListener("redeal", function () {
  11. dealAnsEchelon(array_echelon);
  12. });
  13. /**初始化 */
  14. function initAll() {
  15. console.log("获取当前页面任务中···");
  16. var ansiframe = window.frames["iframe"].contentWindow.document;//获取任务iframe
  17. var array_ans = ansiframe.querySelectorAll(".ans-attach-ct");//获取任务数组
  18. var array_type = getiframesType(array_ans);//获取任务属性
  19. var array_document = getAlliframesdocument(array_ans);//获取任务数组的document
  20. array_echelon = distributeAns(array_type, array_document);//获取顺序执行的任务的梯队
  21. console.log("当前页面任务数量为:" + array_echelon.length);
  22. /**释放内存 */
  23. ansiframe = null;
  24. array_ans = null;
  25. array_type = null;
  26. array_document = null;
  27. }
  28. /**工具函数 */
  29. //获取任务属性
  30. function getiframesType(array_ans) {
  31. var array_iframe_type = new Array();
  32. for (let ans of array_ans) {
  33. var jsonstr = ans.querySelector("iframe").getAttribute("data");
  34. var json = JSON.parse(jsonstr);
  35. array_iframe_type.push(json.type);
  36. }
  37. return array_iframe_type;
  38. }
  39. //获取任务document
  40. function getAlliframesdocument(array_ans) {
  41. var array_ans_iframe_document = new Array();
  42. for (let ans of array_ans) {
  43. array_ans_iframe_document.push(ans.querySelector("iframe").contentWindow.document);
  44. }
  45. return array_ans_iframe_document;
  46. }
  47. //搭配document以及相应的执行函数
  48. function joinAns(idocument, handler) {
  49. var array_temp = new Array();
  50. array_temp.push(idocument, handler);
  51. return array_temp;
  52. }
  53. //按任务属性分配执行函数
  54. function distributeAns(array_type, array_document) {
  55. var array_iframe_echelon = new Array();
  56. array_type.forEach((type, index) => {
  57. switch (type) {
  58. case ".mp4": { array_iframe_echelon.push(joinAns(array_document[index], videoHandler)); break; }
  59. case ".wmv": { array_iframe_echelon.push(joinAns(array_document[index], videoHandler)); break; }
  60. case ".avi": { array_iframe_echelon.push(joinAns(array_document[index], videoHandler)); break; }
  61. case ".mkv": { array_iframe_echelon.push(joinAns(array_document[index], videoHandler)); break; }
  62. case ".pptx": { array_iframe_echelon.push(joinAns(array_document[index], pptxHandler)); break; }
  63. case ".pdf": { array_iframe_echelon.push(joinAns(array_document[index], pptxHandler)); break; }
  64. case ".ppt": { array_iframe_echelon.push(joinAns(array_document[index], pptxHandler)); break; }
  65. case ".mp3": { array_iframe_echelon.push(joinAns(array_document[index], audioHandler)); break; }
  66. case ".wav": { array_iframe_echelon.push(joinAns(array_document[index], audioHandler)); break; }
  67. default: { array_iframe_echelon.push(joinAns(array_document[index], ignoreAns)); break; }
  68. }
  69. });
  70. return array_iframe_echelon;
  71. }
  72. //处理单个任务
  73. function dealSingleAns(singleans) {
  74. singleans[1](singleans[0]);
  75. }
  76. /**执行函数 */
  77. //直接跳过
  78. function skipChapter() {
  79. console.log("跳过章节");
  80. var chapter_next = document.querySelector("#prevNextFocusNext");
  81. chapter_next.click();
  82. setTimeout(function () {
  83. var tip = document.querySelector(".maskDiv.jobFinishTip.maskFadeOut");
  84. if (tip != null) {
  85. var tip_nextChapter = document.querySelector(".jb_btn.jb_btn_92.fr.fs14.nextChapter");
  86. tip_nextChapter.click();
  87. }
  88. setTimeout(() => {
  89. initAll();
  90. dealAnsEchelon(array_echelon);
  91. }, 5000);
  92. }, 2000);
  93. }
  94. //忽略任务
  95. function ignoreAns() {
  96. console.log("无法处理,忽略任务");
  97. setTimeout(() => {
  98. document.dispatchEvent(dealEvent);
  99. }, 1500);
  100. }
  101. //处理视频
  102. function videoHandler(idocument) {
  103. console.log("处理视频任务中···");
  104. var video = idocument.querySelector("video");
  105. var video_play = idocument.querySelector(".vjs-big-play-button");
  106. var video_doublespeed = idocument.querySelector(".vjs-menu-item");
  107. video_play.click();
  108. video_doublespeed.click();
  109. video.addEventListener("ended", function () {
  110. document.dispatchEvent(dealEvent);
  111. }, { once: true });
  112. }
  113. //处理ppt&pdf
  114. function pptxHandler(idocument) {
  115. console.log("处理PPT任务中···");
  116. var sdocument = idocument.querySelector("iframe").contentWindow.document;
  117. var currentHeight = 0;
  118. var finalHeight = sdocument.documentElement.scrollHeight;
  119. var timer = setInterval(function () {
  120. if (currentHeight >= finalHeight) {
  121. clearInterval(timer);
  122. document.dispatchEvent(dealEvent);
  123. return;
  124. }
  125. currentHeight += 400;
  126. sdocument.defaultView.scrollTo(0, currentHeight);
  127. }, 1000);
  128. }
  129. //处理音频
  130. function audioHandler(idocument) {
  131. console.log("处理音频任务中···");
  132. var audio = idocument.querySelector("audio");
  133. var audio_play = idocument.querySelector(".vjs-play-control.vjs-control.vjs-button");
  134. audio_play.click();
  135. audio.addEventListener("ended", function () {
  136. document.dispatchEvent(dealEvent);
  137. }, { once: true });
  138. }
  139. /**任务梯队顺序处理 */
  140. function dealAnsEchelon(array_echelon) {
  141. console.log("待处理任务数量为:" + array_echelon.length);
  142. if (array_echelon.length != 0) {
  143. dealSingleAns(array_echelon[0]);
  144. array_echelon.shift();
  145. return;
  146. }
  147. skipChapter();
  148. }
  149. /**执行代码 */
  150. initAll();
  151. dealAnsEchelon(array_echelon);

代码基本都给了注释,目前没发现Bug

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/666993
推荐阅读
相关标签
  

闽ICP备14008679号