慕享刷课

自动登录(不可用),选择未播放的视频,进行自动播放视频

目前为 2022-10-08 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name 慕享刷课
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1.2
  5. // @description 自动登录(不可用),选择未播放的视频,进行自动播放视频
  6. // @antifeature 自动登录(不可用),选择未播放的视频,进行自动播放视频
  7. // @author zhanghua65
  8. // @license MIT
  9. // @match *://*.moycp.com/*
  10. // @grant window.onurlchange
  11. // @require https://lib.baomitu.com/jquery/2.1.4/jquery.min.js
  12. // @run-at document-end
  13.  
  14. // ==/UserScript==
  15.  
  16. var setting = {
  17. // 自动登录(不可用)功能配置区
  18. //登录(不可用)账号
  19. username: '',
  20. //登录(不可用)密码
  21. password: '',
  22. isLogin: true,
  23. //分数未满40分
  24. mark: '40分',
  25. //默认 播放速度 1.5
  26. playbackRate: 1.5,
  27. play: false,
  28. timer: '',
  29. courseIndex: 0
  30. }, _self = unsafeWindow,
  31. url = location.pathname;
  32.  
  33. $(function () {
  34. 'use strict';
  35. function init() {
  36. let urls = location.pathname;
  37. switch (urls) {
  38. case '/login':
  39. //登录(不可用)
  40. console.log("登录(不可用)");
  41. login();
  42. break;
  43. case '/studyCenter/studying':
  44. //学习中心
  45. console.log("学习中心");
  46. studying();
  47. break;
  48. case '/courseDetail/catalog':
  49. //课程目录
  50. console.log("课程目录");
  51. catalog();
  52. break;
  53. case '/courseware2':
  54. //观看视频
  55. // console.log("观看视频");
  56. courseware2();
  57. break;
  58. default:
  59. location.href = "https://web.moycp.com/login";
  60. break
  61. }
  62. }
  63.  
  64. //自动登录(不可用)
  65. function login() {
  66. console.log("登录(不可用)ing");
  67. let object = $(".choosed[style='display: none;']")
  68. if (object == null) {
  69. $(".free-login").click();
  70. }else {
  71. console.log("已经勾选")
  72. }
  73. $(":text").attr("autocomplete","off");
  74. $(":password").attr("autocomplete","new-password");
  75. var focus = new Event('focus');
  76. var input= new Event('input');
  77. var change= new Event('change');
  78. var blur= new Event('blur');
  79.  
  80. let username = document.getElementsByClassName("username")[0];
  81. username.value = setting.username;
  82. username.dispatchEvent(focus);
  83. username.dispatchEvent(input);
  84. username.dispatchEvent(change);
  85. username.dispatchEvent(blur);
  86. let password =document.getElementsByClassName("password")[0];
  87. password.value= setting.password;
  88. password.dispatchEvent(focus);
  89. password.dispatchEvent(input);
  90. password.dispatchEvent(change);
  91. password.dispatchEvent(blur);
  92.  
  93.  
  94. //七天自动登录(不可用)
  95. if (setting.isLogin) {
  96. $(".el-button.login-btn").click();
  97. setting.isLogin = false
  98. }
  99. }
  100.  
  101. //选择未学习的课程 ( 分数未满40分)
  102. function studying() {
  103. let infoList = document.querySelectorAll(".detail-info");
  104. for (let i = 0; i < infoList.length;i++){
  105.  
  106. let courseName = infoList[i].getElementsByClassName("course-name")[0].innerText;
  107. //跳过新手课程
  108. console.log("courseName",courseName);
  109. if (courseName.indexOf("新手课程") === -1){
  110. let score = infoList[i].getElementsByClassName("score")[0].innerText;
  111. if (score.indexOf(setting.mark) === -1){
  112. infoList[i].getElementsByClassName("learn")[0].click();
  113. break;
  114. }
  115. }
  116. }
  117. }
  118.  
  119. function catalog(){
  120. //显示所有的课件和闯关
  121. let oStudy = document.querySelectorAll(".study-buttons");
  122. if (oStudy.length !== 0){
  123. for (let i = 0; i < oStudy.length;i++){
  124. oStudy[i].style.display = "flex"
  125. }
  126. //找到列表中未完成的课
  127. let oDt = document.getElementsByTagName("dd");
  128. for (let i = 0; i < oDt.length; i++) {
  129. let oProgress = oDt[i].getElementsByClassName("progress");
  130. for (let j = 0; j < oProgress.length; j++) {
  131. let oSpan = oProgress[j].lastChild;
  132. if (oSpan.style.width !== '100%') {
  133. let studys = oDt[i].getElementsByClassName("study")[0];
  134. if (studys.innerText === '课件'){
  135. oDt[i].getElementsByClassName("study")[0].click();
  136. return
  137. }
  138. }
  139. if(i === oDt.length -1) {
  140. location.href = "https://web.moycp.com/studyCenter/studying";
  141. }
  142. }
  143. }
  144. }
  145. }
  146. function courseware2(){
  147. let text = $(".vertical-line-right > .alreadystudy").text();
  148. //判断视频插件加载
  149. let video = document.getElementById("moshare-video_html5_api");
  150. //判断视频出现在正中央
  151. let skip = $(".transition-wrap").css("top");
  152. if(video && skip == '0px'){
  153. if (text.indexOf("100%") === -1){
  154. iconfontClick();
  155. }else {
  156. // huang
  157. console.log("进入已经播放完成的视频");
  158. nextSection();
  159. }
  160. }
  161. }
  162. //点击按钮 开始按钮 \ue653 暂停按钮
  163. function iconfontClick() {
  164. if ($("video > source")) {
  165. var video = document.getElementById("moshare-video_html5_api");
  166. if (video !== null && video !== undefined && video !== '' ){
  167. if ($("#moshare-video").hasClass("vjs-ended") ){
  168. console.log("播放完成,自动停止");
  169. nextSection();
  170. }else if ( ($("#moshare-video").hasClass("vjs-playing") )){
  171. console.log("播放中");
  172. }else {
  173. $("div.volume-now").css("width","0%");
  174. video.muted = "0";
  175. video.playbackRate = setting.playbackRate;
  176. $(".fl > i:nth-child(1)").click()
  177. }
  178. }
  179.  
  180. }
  181. }
  182. function nextSection() {
  183. // huang
  184. // 获取课程全部元素
  185. let section = $("dd > .catalog-item-section-col2:not(.finish)").parent(".catalog-item-section");
  186. if ( section ){
  187. for (let i = 0; i < section.length; i++) {
  188. // 获取当前选中元素
  189. let node = section[i];
  190. if(!node.classList.contains("current")){
  191. node.click();
  192. return
  193. }
  194. if(i === section.length -1) {
  195. location.href = "https://web.moycp.com/studyCenter/studying";
  196. }
  197. }
  198. }else{
  199. location.href = "https://web.moycp.com/studyCenter/studyin";
  200. }
  201. }
  202. setting.timer = setInterval(function () {
  203. if (window.onurlchange === null) {
  204. // 监听url变化
  205. window.addEventListener('urlchange', (info) => {
  206. console.log("变化", info);
  207. console.log("我运行了");
  208. });
  209. // 判断页面是否加载完成
  210. if(document.readyState === "complete"){
  211. init();
  212. }
  213. }
  214. },500);
  215. });

QingJ © 2025

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