Greasy Fork is available in English.
检测网页视频自动播放并设置0.5倍速,播放完毕后自动下一节课.有问题提Issue,时不时看到会修
当前为
// ==UserScript==
// @name [25-04-15] 青书学堂自动看课
// @namespace http://tampermonkey.net/
// @version 0.6
// @description 检测网页视频自动播放并设置0.5倍速,播放完毕后自动下一节课.有问题提Issue,时不时看到会修
// @author Hu5
// @run-at document-start
// @no_frames true
// @match *://*.qingshuxuetang.com/*
// ==/UserScript==
(function() {
'use strict';
async function main() {
console.log(`开始看课`)
// 获取所有课程ID
const kcjsIds = (function() {
const allElements = document.querySelectorAll('*');
const matchingIds = [];
for (let i = 0; i < allElements.length; i++) {
const element = allElements[i];
if (element.id && element.id.startsWith("courseware-kcjs_")) {
matchingIds.push(element.id.replace("courseware-", ""));
}
}
return matchingIds;
}
)()
const observer = new MutationObserver(async (mutationsList, observer) => {
for (const mutation of mutationsList) {
if (mutation.type === 'childList') {
let videoElm = mutation.target.querySelector('video')
if (videoElm) {
videoElm.autoplay=true
// 慢倍速播放凑时长
videoElm.playbackRate = 0.5;
// 静音
videoElm.muted = "muted";
// 开始播放
videoElm.play();
uploadStudyRecordBegin(nodeId)
// 看完自动下一课
videoElm.onended = () => {
// 解析当前的课程ID
const nodeId = (new URL(document.URL)).searchParams.get("nodeId")
// 下一节课的ID
const nextNodeId = kcjsIds[kcjsIds.indexOf(nodeId) + 1]
// 如果还有下一节课,继续看
if (nextNodeId) {
// 下一节课
CoursewareNodesManager.onMenuClick(nextNodeId)
} else {
// 没有就是看完了,不再继续
console.log('看完了,不再继续');
}
}
// 找到关闭监视
return observer.disconnect()
}
}
}
}
)
observer.observe(document.querySelector("#playerContainer"), {
childList: true,
subtree: true
});
}
window.onload = main;
}
)();