ulearning

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

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

  1. // ==UserScript==
  2. // @name ulearning
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.2.0
  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(), 'Let me go.');
  16. let tiemOut = 1000*60; // 检测间隔时间,默认为一分钟(1000*60)一次
  17. let lists = [];
  18. let vFlag = '';
  19. let speed = 1.50;
  20.  
  21. let video_list =[];
  22.  
  23. function getPlayList(){
  24. lists = document.querySelectorAll('.page-item div.page-name.cursor');
  25. console.log(lists);
  26. return lists;
  27. }
  28.  
  29. function setSpeed(){
  30. let speed_button = document.querySelector('.mejs__speed-button button');
  31. console.log(Date(),'speed_button: ',speed_button );
  32. if(speed_button){
  33. if(speed_button.innerText==='1.00x'){
  34. let speed = document.querySelector('li.mejs__speed-selector-list-item > input');
  35. console.log(Date(),'speed: ',speed );
  36. if(speed){
  37. console.log(Date(), 'set speed 1.50x' );
  38. speed.click();
  39. }
  40. }
  41. }
  42.  
  43. }
  44.  
  45. function nextPage(){
  46. let nextBtn = document.querySelector('.next-page-btn');
  47. let step = 2;
  48. console.log(Date(), 'next page.');
  49.  
  50. let btn_hollow = document.querySelector('button.btn-hollow');
  51. if(btn_hollow){
  52. console.log(Date(), 'button.btn-hollow is click.');
  53. btn_hollow.click();
  54. }else if(nextBtn){
  55. console.log(Date(), '.next-page-btn is click.');
  56. nextBtn.click();
  57. }
  58. }
  59.  
  60. function nextActivePage(){
  61. if(lists.length){
  62. console.log(Date(), 'play lists.');
  63. for(var index in lists){
  64. if(!(lists[index].classList.contains('complete')|| lists[index].classList.contains('active'))){
  65. let iconFont = lists[index].querySelector('.page-icon i.iconfont');
  66. if(iconFont.innerText ===vFlag){
  67. console.log(Date(), 'not complete, not active. ',lists[index]);
  68. lists[index].click();
  69. break;
  70. }
  71. }
  72. }
  73. }
  74. }
  75.  
  76. function toContinue(){
  77. let pause = document.querySelector('div.modal-operation button.btn-submit');
  78. if(pause){
  79. console.log(Date(),'it is pause, continue...');
  80. pause.click();
  81. }
  82. }
  83.  
  84. setInterval(function(){
  85. try{
  86. let btn_play = document.querySelector('.mejs__overlay-play');
  87. let playStatus = document.querySelector('div.video-progress div.text span');
  88. console.log(Date(), 'btn_play: ',btn_play);
  89. if(lists.length<2){
  90. getPlayList();
  91. }
  92.  
  93. if(!btn_play){
  94. nextPage();
  95. }else{
  96. if(btn_play.style.display!=='none'){
  97. if(playStatus.innerText !='已看完'){
  98. btn_play.click();
  99. console.log(Date(), 'play continue... ');
  100. }else{
  101. nextActivePage();
  102. }
  103. }else{
  104. console.log(Date(), playStatus.innerText);
  105. }
  106. }
  107.  
  108. setSpeed();
  109. toContinue();
  110. }
  111. catch(e){
  112. console.log(Date(), "Error in this userscript: ",e.message);
  113. }
  114. }, tiemOut);
  115.  
  116.  
  117.  
  118. // Your code here...
  119. })();

QingJ © 2025

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