慕享自动刷课脚本
// ==UserScript== // @name 慕享刷课 // @namespace http://tampermonkey.net/ // @version 0.1.6 // @description 慕享自动刷课脚本 // @antifeature 慕享自动刷课脚本 // @author zhanghua65 // @license MIT // @match *://*.moycp.com/* // @grant window.onurlchange // @require https://lib.baomitu.com/jquery/2.1.4/jquery.min.js // @run-at document-end // ==/UserScript== var setting = { // 自动登录功能配置区 //登录账号 username: '', //登录密码 password: '', isLogin: true, //分数未满40分 mark: '40分', //默认 播放速度 1.5 playbackRate: 1.5, play: false, timer: '', courseIndex: 0 }, _self = unsafeWindow, url = location.pathname; $(function () { 'use strict'; function init() { let urls = location.pathname; switch (urls) { case '/login': //登录 console.log("登录"); login(); break; case '/studyCenter/studying': //学习中心 console.log("学习中心"); studying(); break; case '/courseDetail/catalog': //课程目录 console.log("课程目录"); catalog(); break; case '/courseware2': //观看视频 console.log("观看视频"); courseware2(); break; default: location.href = "https://web.moycp.com/login"; break } } //自动登录 function login() { if (!setting.username && !setting.password) { return; } console.log("登录ing"); let object = $(".choosed[style='display: none;']") if (object == null) { $(".free-login").click(); } else { console.log("已经勾选") } $(":text").attr("autocomplete", "off"); $(":password").attr("autocomplete", "new-password"); var focus = new Event('focus'); var input = new Event('input'); var change = new Event('change'); var blur = new Event('blur'); let username = document.getElementsByClassName("username")[0]; username.value = setting.username; username.dispatchEvent(focus); username.dispatchEvent(input); username.dispatchEvent(change); username.dispatchEvent(blur); let password = document.getElementsByClassName("password")[0]; password.value = setting.password; password.dispatchEvent(focus); password.dispatchEvent(input); password.dispatchEvent(change); password.dispatchEvent(blur); //七天自动登录 if (setting.isLogin) { $(".el-button.login-btn").click(); setting.isLogin = false } } //选择未学习的课程 ( 分数未满40分) function studying() { let infoList = document.querySelectorAll(".detail-info"); for (let i = 0; i < infoList.length; i++) { let courseName = infoList[i].getElementsByClassName("course-name")[0].innerText; //跳过新手课程 console.log("courseName", courseName); if (courseName.indexOf("新手课程") === -1) { let score = infoList[i].getElementsByClassName("score")[0].innerText; if (score.indexOf(setting.mark) === -1) { infoList[i].getElementsByClassName("learn")[0].click(); break; } } } } function catalog() { //显示所有的课件和闯关 let oStudy = document.querySelectorAll(".study-buttons"); if (oStudy.length !== 0) { for (let i = 0; i < oStudy.length; i++) { oStudy[i].style.display = "flex" } //找到列表中未完成的课 let oDt = document.getElementsByTagName("dd"); for (let i = 0; i < oDt.length; i++) { let oProgress = oDt[i].getElementsByClassName("progress"); for (let j = 0; j < oProgress.length; j++) { let oSpan = oProgress[j].lastChild; if (oSpan.style.width !== '100%') { let studys = oDt[i].getElementsByClassName("study")[0]; if (studys.innerText === '课件') { oDt[i].getElementsByClassName("study")[0].click(); return } } if (i === oDt.length - 1) { location.href = "https://web.moycp.com/studyCenter/studying"; } } } } } function courseware2() { // 查询播放进度 let text = $(".vertical-line-right > .alreadystudy").text(); let playerDocument = document.getElementById("player"); // 检查加载动画是否隐藏 let isLoadingVisible = $("div.pv-loading").is(':visible'); if (playerDocument && !isLoadingVisible) { // 判断视频插件加载 let videoElements = playerDocument.getElementsByTagName("video"); // 判断视频出现在正## if (playerDocument.children.length > 0 && videoElements.length > 0) { if (text.indexOf("100%") === -1) { // console.log("未完成的视频,需要开始播放"); iconfontClick(); } else { // console.log("进入已经播放完成的视频"); nextSection(); } } } } //点击按钮 开始按钮 \ue653 暂停按钮 function iconfontClick() { if ($("pv-controls > pv-controls-left")) { var leftDocument = document.getElementsByClassName("pv-controls-left"); let video = document.getElementsByTagName("video")[0]; if (leftDocument !== null && leftDocument !== undefined && leftDocument !== '') { let pvButton = $(".pv-controls-left > button:first"); let maxProgress = $(".pv-progress-current:first").css("width"); let Progress = $(".pv-progress-current > .pv-progress-current-bg:first").css("width"); if (maxProgress === Progress && pvButton.hasClass("pv-icon-btn-play")) { // console.log("播放完成,自动停止"); nextSection(); } else if (pvButton.hasClass("pv-icon-pause")) { // console.log("播放中"); } else { // console.log("未开始播放") let volumebtn = $("button.pv-volumebtn:first"); if (volumebtn.hasClass("pv-icon-volumeon")) { volumebtn.click(); $("div.pv-volume-current").css("height", "0%"); } video.muted = "0"; video.playbackRate = setting.playbackRate; pvButton.click() } } } } function nextSection() { // huang // 获取课程全部元素 let section = $("dd > .catalog-item-section-col2:not(.finish)").parent(".catalog-item-section"); //已经刷完的跳转 主页 if (section && section.length > 0) { for (let i = 0; i < section.length; i++) { // 获取当前选中元素 let node = section[i]; if (!node.classList.contains("current")) { node.click(); return } if (i === section.length - 1) { location.href = "https://web.moycp.com/studyCenter/studying"; } } } else { location.href = "https://web.moycp.com/studyCenter/studyin"; } } setting.timer = setInterval(function () { if (window.onurlchange === null) { // 监听url变化 window.addEventListener('urlchange', (info) => { console.log("变化", info); console.log("我运行了"); }); // 判断页面是否加载完成 if (document.readyState === "complete") { init(); } } }, 500); });