优课--二倍速自动播放123

实现自动二倍速挂机看视频,允许切换到后台.不支持自动做题.遇到做题章节会唤起QQ聊天提醒.

  1. // ==UserScript==
  2. // @name 优课--二倍速自动播放123
  3. // @namespace Violentmonkey Scripts123
  4. // @version 2021.04.14
  5. // @author yong.lei
  6. // @match *://www.uooconline.com/home/learn/index#*
  7. // @description 实现自动二倍速挂机看视频,允许切换到后台.不支持自动做题.遇到做题章节会唤起QQ聊天提醒.
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11.  
  12. //异常情况唤起QQ聊天窗口,可填写好友的QQ号码,默认为电信客服
  13. var qq = 800010000;
  14. (function(window,$){
  15. window.countRun = 0;
  16. window.countInit = 0;
  17. window.wait = 2000;
  18. console.log('start run.');
  19. window.setInterval(function() {
  20. funObj.init();
  21. },window.wait);
  22. window.onload = function(){
  23. window.setTimeout(function() {
  24. //如果不在播放页,则自动寻找下一章节
  25. if (videojs.getPlayers().player == undefined) {
  26. funObj.chapterUncomplete();
  27. }
  28. },window.wait*2);
  29. }
  30. var funObj = {};
  31. funObj.init = function(){
  32. if (videojs.getPlayers().player != undefined) {
  33. if(!videojs.getPlayers().player.executeFlag){
  34. videojs.getPlayers().player.executeFlag = 1;
  35. window.countInit += 1;
  36. console.log(Date()+'->countInit:'+window.countInit);
  37. //清理鼠标移出事件
  38. $("html").off("mouseleave blur visibilitychange");
  39. //添加暂停事件
  40. videojs.getPlayers().player.on("pause",
  41. function() {
  42. window.countRun += 1;
  43. console.log(Date()+'->countRun:'+window.countRun);
  44. funObj.ng();
  45. });
  46. videojs.getPlayers().player.play();
  47. funObj.speed();
  48. }
  49. }
  50. }
  51. funObj.speed = function(){
  52. window.setTimeout(function() {
  53. console.log(Date()+'->2倍速度');
  54. $('.vjs-menu').find('ul[role="menu"]').first().find('li').first().trigger('click')
  55. funObj.init();
  56. },window.wait);
  57. };
  58. funObj.ng = function(){
  59. window.setTimeout(function() {
  60. console.log(Date()+'->播放下一个');
  61. var ng_scope = $('div[class="basic ng-scope"]');
  62. if (ng_scope.length > 0) {
  63. var first = ng_scope.first();
  64. if (first.find('span[ng-if="source.type == 10"]').length>0) {
  65. first.trigger('click');
  66. funObj.speed();//调用二倍
  67. }else if (first.find('span[ng-if="source.type == 80"]').length>0) {
  68. funObj.error();
  69. alert("请完成测验");
  70. }else{
  71. funObj.error();
  72. alert("error,请重试.");
  73. }
  74. }else{
  75. funObj.uncomplete();//打开下一个章节
  76. }
  77. },window.wait);
  78. };
  79. funObj.error = function(){
  80. if(qq){
  81. var url = 'tencent://message/?uin='+qq;
  82. window.open(url);
  83. }
  84. };
  85. funObj.uncomplete = function(){
  86. window.setTimeout(function() {
  87. console.log(Date()+'->下一个子节点');
  88. var ng_binging = $('div[class="basic uncomplete"]').find('div[class="oneline ng-binding"]');
  89. if (ng_binging.length > 0) {
  90. var sub_ng_binging = ng_binging.first().parents("li").eq(0).children("ul").find('div[class="basic uncomplete"]').find('div[class="oneline ng-binding"]');
  91. if (sub_ng_binging.length > 0) {
  92. console.log(Date()+'->发现二级子节点');
  93. sub_ng_binging.first().trigger('click');
  94. funObj.ng();//调用播放
  95. }else{
  96. ng_binging.first().trigger('click');
  97. funObj.ng();//调用播放
  98. }
  99. }else{
  100. funObj.chapterUncomplete();//下一个大主章节
  101. }
  102. },window.wait);
  103. };
  104. funObj.chapterUncomplete = function(){
  105. console.log(Date()+'->下一个章节');
  106. var chapter_uncomplete = $('div[class="basic chapter active uncomplete"]');
  107. if (chapter_uncomplete.length > 0) {
  108. chapter_uncomplete.first().trigger('click');
  109. funObj.uncomplete();//打开子节点
  110. }else{
  111. var chapter_uncomplete2 = $('div[class="basic chapter uncomplete"]');
  112. if (chapter_uncomplete2.length > 0) {
  113. chapter_uncomplete2.first().trigger('click');
  114. funObj.uncomplete();//打开子节点
  115. }else{
  116. alert('end');
  117. }
  118. }
  119. };
  120. })(window,window.jQuery);
  121.  

QingJ © 2025

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