您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
深圳市中小学幼儿园教师继续教育平台视频自动播放脚本,支持倍速播放及自动切换下一个视频
// ==UserScript== // @name 深圳中小幼继续教育 // @namespace http://tampermonkey.net/ // @version 1.3 // @description 深圳市中小学幼儿园教师继续教育平台视频自动播放脚本,支持倍速播放及自动切换下一个视频 // @match https://study.szjspx.com.cn/activityTask/student/getActivityTaskInfo.do* // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; let currentSpeed = 2; // 默认播放速度为2倍速 let currentVideoIndex = -1; let videoRows = []; // 弹出免责声明对话框 function showDisclaimer() { let userResponse = prompt("使用这个脚本出现的任何法律责任和后果由使用者本人完全承担,作者不对任何由于使用或误用该脚本而引起的直接或间接损害负责。本脚本仅供学习和研究使用,不得用于任何商业或非法用途。使用该脚本即表示您同意以上所有条款并承担相应的责任。若同意,请输入\"同意\"。", ""); if (userResponse !== "同意") { alert("您未同意免责声明,脚本将关闭。"); return false; } return true; } // 主要功能函数 function autoPlayVideos() { let video = document.querySelector('video'); if (!video) return; if (video.paused) { video.play().then(() => { console.log('视频开始播放'); }).catch((error) => { console.error('无法自动播放视频:', error); }); } video.playbackRate = currentSpeed; video.onended = function() { setTimeout(playNextVideo, 2000); // 给页面一些时间加载新视频 }; } function playNextVideo() { currentVideoIndex++; videoRows = document.querySelectorAll('tr.data:not(.cur), .course_title'); // 更新视频行 if (currentVideoIndex < videoRows.length) { let nextRow = videoRows[currentVideoIndex]; let nextTitleElement = nextRow.querySelector('p.title'); if (nextTitleElement) { nextTitleElement.scrollIntoView(); // 确保元素在视图内 simulateClick(nextTitleElement); console.log('切换到下一个视频:' + nextTitleElement.textContent); setTimeout(() => { autoPlayVideos(); }, 3000); // 给页面一些时间加载新视频 } } else { console.log('所有视频已播放完毕'); } } // 模拟点击函数,确保兼容性 function simulateClick(element) { var event = new MouseEvent('click', { view: window, bubbles: true, cancelable: true }); element.dispatchEvent(event); } // 改变播放速度 function changeSpeed(speed) { currentSpeed = speed; let video = document.querySelector('video'); if (video) { video.playbackRate = speed; } console.log('播放速度已更改为 ' + speed + 'x'); } // 静音/取消静音视频 function toggleMute() { let video = document.querySelector('video'); if (video) { video.muted = !video.muted; console.log('静音状态已切换,当前状态:' + (video.muted ? '静音' : '非静音')); } } // 添加控制面板 function addControlPanel() { var panel = document.createElement('div'); panel.style.position = 'fixed'; panel.style.top = '10px'; panel.style.right = '10px'; panel.style.zIndex = '9999'; panel.style.background = 'white'; panel.style.padding = '10px'; panel.style.border = '1px solid black'; var speedLabel = document.createElement('div'); speedLabel.textContent = '选择播放速度:'; panel.appendChild(speedLabel); var speeds = [1, 2, 4, 8, 16]; speeds.forEach(function(speed) { var speedButton = document.createElement('button'); speedButton.textContent = speed + 'x'; speedButton.style.marginRight = '5px'; speedButton.onclick = function() { changeSpeed(speed); }; panel.appendChild(speedButton); }); var muteButton = document.createElement('button'); muteButton.textContent = '静音/取消静音'; muteButton.style.marginTop = '10px'; muteButton.onclick = toggleMute; panel.appendChild(muteButton); document.body.appendChild(panel); } // 等待页面加载完成后执行 window.addEventListener('load', function() { if (showDisclaimer()) { videoRows = document.querySelectorAll('tr.data:not(.cur), .course_title'); addControlPanel(); setTimeout(playNextVideo, 2000); // 页面加载完成后自动开始播放 } }); // 监听视频元素的添加 let observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.addedNodes) { mutation.addedNodes.forEach(function(node) { if (node.nodeName === 'VIDEO') { autoPlayVideos(); } }); } }); }); observer.observe(document.body, { childList: true, subtree: true }); })();