您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动播放和评价职行力视频。
// ==UserScript== // @name 职行力视频自动播放 // @namespace https://www.nekotofu.top/ // @homepage https://www.nekotofu.top/ // @version 1.3 // @description 自动播放和评价职行力视频。 // @author misaka10032w // @match *://u.exexm.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=microsoft.com // @license MIT // @grant none // ==/UserScript== let autoPlayFlag = false; const createButton = (id, text, styles) => { const button = document.createElement("button"); button.id = id; button.innerHTML = text; Object.assign(button.style, styles); return button; }; const initializeButtons = () => { if (document.getElementById("autoPlayBtn") === null) { const playButton = createButton("autoPlayBtn", "开始刷课", { height: "100px", width: "200px", background: "green", color: "white", zIndex: "9999", position: "absolute" }); const copyButton = createButton("toggleEditableBtn", "页面可复制", { height: "20px", width: "200px", background: "blue", color: "white", zIndex: "9999", position: "absolute" }); const container = document.querySelector("body > ion-app > ng-component > ion-nav > ng-component > exe-menus > div > div > ion-content > div.scroll-content > ion-list"); container.appendChild(playButton); container.appendChild(copyButton); document.getElementById("autoPlayBtn").onclick = toggleAutoPlay; document.getElementById("toggleEditableBtn").onclick = toggleEditable; } }; const toggleAutoPlay = () => { autoPlayFlag = !autoPlayFlag; const playButton = document.getElementById("autoPlayBtn"); playButton.style.background = autoPlayFlag ? "red" : "green"; playButton.innerHTML = autoPlayFlag ? "停止刷课" : "开始刷课"; }; const toggleEditable = () => { const body = document.body; body.contentEditable = body.contentEditable === "true" ? "false" : "true"; document.getElementById("toggleEditableBtn").innerHTML = body.contentEditable; }; const playCourseContent = () => { const courseList = document.querySelectorAll(".course-item"); let targetCourse = null; courseList.forEach(course => { if (!course.classList.contains("learned") && !course.classList.contains("exam2_top") && !course.getAttribute("exepower")) { targetCourse = course; } }); if (targetCourse) { if (targetCourse.innerText.includes("文档课件")) { handleDocumentCourse(targetCourse); } else if (targetCourse.innerText.includes("音频")) { handleAudioCourse(targetCourse); } else if (targetCourse.innerText.includes("视频")) { handleVideoCourse(targetCourse); } } else { evaluateCourse(); } }; const handleDocumentCourse = (course) => { course.click(); setTimeout(() => { document.querySelector(".exe-win-open-modal .back-button").click(); }, 5000); }; const handleAudioCourse = (course) => { let audio = document.querySelector("audio"); if (!audio) { course.click(); audio = document.querySelector("audio"); } audio.muted = true; setTimeout(() => { if (audio.currentTime.toFixed(0) === audio.duration.toFixed(0)) { document.querySelector("#nav > course-detail-page > ion-header > ion-navbar > button").click(); } else if (audio.paused) { audio.play(); } }, 1000); }; const handleVideoCourse = (course) => { console.log(course) setTimeout(() => { let video = document.querySelector(".player-container video"); if (!video) { course.click(); console.log("未发现video控件!") video = document.querySelector(".player-container video"); } video.muted = true; setTimeout(() => { if (video.currentTime.toFixed(0) === video.duration.toFixed(0)) { document.querySelector("#nav > course-detail-page > ion-header > ion-navbar > button").click(); } else if (video.paused) { video.play(); } }, 3000); }, 3000); }; const evaluateCourse = () => { const courseList = document.querySelectorAll(".course-item"); const lastCourse = courseList[courseList.length - 1]; if (lastCourse.innerHTML.includes("已评定")) { setTimeout(() => { document.querySelector(".show-back-button").click(); }, 2000); } else if (lastCourse.innerHTML.includes("评价")) { lastCourse.click(); setTimeout(() => { document.querySelector("body > ion-app > ion-modal > div > modal-evaluate > ion-content > div.scroll-content > exe-content > exe-evaluate-modal > section > div > exe-single-dimension > exe-star > button:nth-child(5)").click(); document.querySelector("body > ion-app > ion-modal > div > modal-evaluate > ion-content > div.scroll-content > exe-content > exe-evaluate-modal > section > div > section > textarea").value = "很好,讲的不错"; document.querySelector("body > ion-app > ion-modal > div > ng-component > ion-footer > div > button").click(); }, 2000); setTimeout(() => { document.querySelector("body > ion-app > ion-modal > div > modal-evaluate > ion-footer > div > button").click(); }, 3000); } }; setInterval(() => { "use strict"; initializeButtons(); if (!autoPlayFlag) { console.log("刷课停止"); return; } console.log("刷课中"); const coursePage = document.getElementById("introduce"); if (coursePage) { playCourseContent(); } else if (document.querySelector("#nav > page-learn > ion-content > div.scroll-content > ion-card > exe-segment")?.innerHTML.includes("在学课程")) { const studyingCourses = document.querySelector("#nav > page-learn > ion-content > div.scroll-content > ion-card > exe-content:nth-child(2) > ion-list").querySelectorAll("exe-learn-card"); if (studyingCourses.length) { studyingCourses[0].click(); } } else { console.log("非课程列表或课程详情"); } }, 6000);