ulearning

课程思政网络培训的视频每隔几分钟会暂停播放,这个脚本可以帮你自动(每分钟检测一次)继续播放,还可以跳过非视频的页面(这个功能没有仔细测试)。只支持在同一个课程内自动播放,播放结束后跳到下一章节,所以请选择一个学分数很大的课程来挂课。

当前为 2021-05-15 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name ulearning
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.5
  5. // @description 课程思政网络培训的视频每隔几分钟会暂停播放,这个脚本可以帮你自动(每分钟检测一次)继续播放,还可以跳过非视频的页面(这个功能没有仔细测试)。只支持在同一个课程内自动播放,播放结束后跳到下一章节,所以请选择一个学分数很大的课程来挂课。
  6. // @author laohoo
  7. // @match https://ua.ulearning.cn/learnCourse/learnCourse.html*
  8. // @icon https://www.google.com/s2/favicons?domain=ulearning.cn
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. console.log(Date(), 'go to do.');
  16. let tiemOut = 1000*60; // 检测间隔时间,默认为一分钟(1000*60)一次
  17. let lists = [];
  18. let index = 0;
  19.  
  20.  
  21.  
  22. function getPlayList(){
  23. lists = document.querySelectorAll('.page-item div.page-name.cursor');
  24. console.log(lists);
  25. }
  26.  
  27. function nextPage(){
  28. let nextBtn = document.querySelector('.next-page-btn');
  29. let step = 2;
  30. console.log(Date(), 'next page.');
  31.  
  32. while(step){
  33. step--;
  34. if(nextBtn){
  35. console.log(Date(), 'button.btn-hollow is click.');
  36. nextBtn.click();
  37. setTimeout(function(){
  38. let btn_hollow = document.querySelector('button.btn-hollow');
  39. if(btn_hollow){
  40. btn_hollow.click();
  41. }
  42. }, 1000);
  43. }
  44. }
  45. nextActivePage();
  46. }
  47.  
  48. function nextActivePage(){
  49. if(lists.length){
  50. console.log(Date(), 'play lists.');
  51. for(var index in lists){
  52. if(!lists[index].classList.contains('complete')|| !lists[index].classList.contains('active')){
  53. console.log(Date(), 'not finish',lists[index]);
  54. lists[index].click();
  55. break;
  56. }
  57. }
  58. }
  59. }
  60.  
  61. setInterval(function(){
  62. try{
  63. let btn_play = document.querySelector('.mejs__overlay-play');
  64. let playStatus = document.querySelector('div.video-progress div.text span');
  65.  
  66. //let videoWrapper = document.querySelector('.video-wrapper');
  67. //console.log('videoWrapper: ',videoWrapper);
  68. if(lists.length<2){
  69. getPlayList();
  70. }
  71.  
  72. if(!btn_play){
  73. nextPage();
  74. }else if(lists.length){
  75. //nextActivePage();
  76. // console.log('play lists.');
  77. // for(index in lists){
  78. // let iconfont= lists[index].querySelector('.iconfont');
  79. // if(!iconfont.classList.contains('finish')){
  80. // console.log('not finish',lists[index]);
  81. // lists[index].click();
  82. // break;
  83. // }
  84. // }
  85. }
  86.  
  87.  
  88. console.log(Date(), 'btn_play: ',btn_play);
  89. //console.log('currentTime: ',currentTime.innerText);
  90. console.log(Date(), 'playStatus: ',playStatus.innerText?playStatus.innerText:"No Status.");
  91.  
  92. if(btn_play){
  93. btn_play.addEventListener("click", function(){
  94. console.log(Date(), ' have a click.');
  95. });
  96. //btn_play.setAttribute('aria-pressed','true');
  97. if(document.querySelector('.mejs__overlay-button').getAttribute('aria-pressed')==='false'){
  98. if(playStatus.innerText !='已看完'){
  99. btn_play.click();
  100. console.log(Date(), ' play continue... ');
  101. }else{
  102. if(lists.length){
  103. console.log('play lists.');
  104. for(index in lists){
  105.  
  106. //let iconfont= lists[index].querySelector('.iconfont');
  107.  
  108. if(!lists[index].classList.contains('complete')|| !lists[index].classList.contains('active')){
  109. console.log('not finish',lists[index]);
  110. lists[index].click();
  111. break;
  112. }
  113. }
  114. }
  115. }
  116. }
  117. }
  118. }
  119. catch(e){
  120. console.log(Date(), "Error in this userscript: ",e.message);
  121. }
  122. }, tiemOut);
  123.  
  124.  
  125.  
  126. // Your code here...
  127. })();

QingJ © 2025

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