CQUPTDevelopmentTarget

重邮发展对象的党旗飘飘学习平台--18级物联网工程(其实也就是改了个匹配网址,把代码规范化,易于阅读。)。其他高校的同学,把下面的//match 后面的网址改成自己学校的网址就行,加的“*”好,是代表任意匹配的意思。(手动滑稽🌹)一开始选择课程既会自动点击开始播放。视频学习播放每5分钟左右会遇上弹窗。原理:每3秒左右(随机)尝试点击“继续”的弹窗,没有则会跳过。支持同一课程下多个视频的自动播放。课程结束后会自动点击“学习完成”。没有需要学习的视频后停止。页面跳转回选课界面,请留意。

  1. // ==UserScript==
  2. // @name CQUPTDevelopmentTarget
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.1.4
  5. // @description 重邮发展对象的党旗飘飘学习平台--18级物联网工程(其实也就是改了个匹配网址,把代码规范化,易于阅读。)。其他高校的同学,把下面的//match 后面的网址改成自己学校的网址就行,加的“*”好,是代表任意匹配的意思。(手动滑稽🌹)一开始选择课程既会自动点击开始播放。视频学习播放每5分钟左右会遇上弹窗。原理:每3秒左右(随机)尝试点击“继续”的弹窗,没有则会跳过。支持同一课程下多个视频的自动播放。课程结束后会自动点击“学习完成”。没有需要学习的视频后停止。页面跳转回选课界面,请留意。
  6. // @author ShiZitou
  7. // @match *://zhdj.cqupt.edu.cn/fzdx/lesson*
  8. // @grant none
  9. // @require http://code.jquery.com/jquery-1.11.0.min.js
  10. // ==/UserScript==
  11.  
  12. (function()
  13. {
  14. 'use strict';
  15. console.log('It\'s runing Now');
  16. var i=0;
  17. var j=0;
  18. var colors="red";
  19. var time=getTimes();
  20. var pa = document.createElement('p');
  21. var n=130;//最大等待响应时长:n*3s
  22. var k=0;
  23. if(document.getElementsByClassName("video_cont")[0]===undefined)
  24. {
  25. console.log("视频出错,即将刷新");
  26. location.reload();
  27. }
  28. else
  29. {
  30. document.getElementsByClassName("video_cont")[0].appendChild(pa);
  31. }
  32. showInfo('开始工作');
  33. var tm=setInterval(function()
  34. {
  35. if(document.getElementsByClassName("video_head").length==0&&document.getElementsByClassName("video_cont").length==0)
  36. {
  37. console.log("视频出错,即将刷新");
  38. location.reload();
  39. }
  40. else
  41. {
  42. if(document.getElementsByClassName("video_red1")[0].children[0].style.color==colors)
  43. {//如果当前已经看完
  44. showInfo("当前视频已看完,将点击下一视频");
  45. if(document.getElementsByClassName("video_red1")[0].nextSibling.nextSibling===null)
  46. {
  47. window.clearInterval(t1);
  48. showInfo('当前课程没有需要学习的内容了!');
  49. window.location.href="http://wsdx.ncu.edu.cn/user/lesson";
  50. }
  51. else
  52. {
  53. document.getElementsByClassName("video_red1")[0].nextSibling.nextSibling.children[0].click();//点击下一视频
  54. }
  55. }
  56. else
  57. {
  58. //进行弹窗点击操作
  59. //console.log(document.getElementsByClassName("public_submit")[0]);
  60. if(document.getElementsByClassName("public_cancel")[0]===undefined)
  61. {
  62. if(document.getElementsByClassName("public_submit")[0]===undefined)
  63. {
  64. i=i+1;
  65. showInfo('共点击'+j+'次弹窗!预计下次弹窗'+(i/n*100).toFixed(2)+'%。已过'+(i*time/60/1000).toFixed(2)+'分钟');
  66. if(document.getElementsByClassName("plyr--stopped")[0]===undefined)
  67. {
  68. k=0;
  69. }
  70. else
  71. {
  72. k++;
  73. if(k>=n/10-5)
  74. {
  75. showInfo('视频暂停中,将在'+((n/10-k)*time/60/1000).toFixed(2)+'分钟后刷新');
  76. }
  77. if(k>=n/10)
  78. {
  79. showInfo('视频暂停中,可能已播完,刷新');
  80. location.reload();
  81. }
  82. }
  83. }
  84. else
  85. {
  86. document.getElementsByClassName("public_submit")[0].click();
  87. i=0;
  88. j=j+1;
  89. showInfo('第'+j+'次点击弹窗!开始学习');
  90. }
  91. }
  92. else
  93. {
  94. document.getElementsByClassName("public_cancel")[0].click();
  95. i=0;
  96. j=j+1;
  97. showInfo('第'+j+'次点击弹窗!继续学习');
  98. }
  99. }
  100. }
  101. //alert(document.getElementsByClassName("public_submit")[1]);
  102. },time);
  103.  
  104. })();
  105.  
  106. function getTimes()
  107. {
  108. var times=Math.random()*8 + 1;//1-9
  109. times=3*1000*1;//+times*10
  110. return times
  111. }
  112.  
  113. function showInfo(str)
  114. {
  115. console.log(str);
  116. document.getElementsByClassName("video_cont")[0].children[2].innerText=str;
  117. }