您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a speed control UI to the left center of the page for controlling playback speed on NCME course videos.
// ==UserScript== // @name 中国继续教育倍速控制 // @namespace http://your-namespace.com // @version 1.2 // @description Adds a speed control UI to the left center of the page for controlling playback speed on NCME course videos. // @match https://www.ncme.org.cn/* // @run-at document-idle // @license MIT // ==/UserScript== (function() { 'use strict'; const playbackSpeeds = [1.0, 10.0, 16.0]; // 可选的播放速度倍数 let selectedSpeed = 10.0; // 默认选择10.0倍速 let lastSetSpeed = 10.0; // 上一次设置的播放速度 // 添加播放速度控制面板 function addSpeedControlPanel() { const controlPanel = document.createElement('div'); controlPanel.style.position = 'fixed'; controlPanel.style.top = '50%'; controlPanel.style.left = '10px'; controlPanel.style.transform = 'translateY(-50%)'; controlPanel.style.zIndex = '9999'; // 添加速度按钮 playbackSpeeds.forEach(speed => { const speedButton = document.createElement('button'); speedButton.innerText = speed + 'X'; speedButton.style.display = 'block'; speedButton.style.margin = '5px 0'; speedButton.addEventListener('click', () => { setPlaybackSpeed(speed); }); controlPanel.appendChild(speedButton); }); // 显示当前播放速度 const speedDisplay = document.createElement('div'); speedDisplay.id = 'speedDisplay'; speedDisplay.innerText = '当前播放速度:' + selectedSpeed + 'X'; controlPanel.appendChild(speedDisplay); document.body.appendChild(controlPanel); } // 设置视频播放速度 function setPlaybackSpeed(speed) { const videoElement = document.querySelector('video'); if (videoElement) { videoElement.playbackRate = speed; selectedSpeed = speed; lastSetSpeed = speed; updateSpeedDisplay(); } } // 更新当前播放速度显示 function updateSpeedDisplay() { const speedDisplay = document.querySelector('#speedDisplay'); if (speedDisplay) { speedDisplay.innerText = '当前播放速度:' + selectedSpeed + 'X'; } } // 获取当前视频播放速度 function getCurrentPlaybackSpeed() { const videoElement = document.querySelector('video'); return videoElement ? videoElement.playbackRate : null; } // 每10秒获取一次当前视频播放速度 function updateCurrentPlaybackSpeed() { const currentSpeed = getCurrentPlaybackSpeed(); if (currentSpeed !== null) { selectedSpeed = currentSpeed; updateSpeedDisplay(); if (currentSpeed < lastSetSpeed) { setPlaybackSpeed(lastSetSpeed); } } } // 每10秒检查一次播放速度是否符合选择的倍数 function checkPlaybackSpeed() { const currentSpeed = getCurrentPlaybackSpeed(); if (currentSpeed !== selectedSpeed) { setPlaybackSpeed(selectedSpeed); } } // 保存和加载播放速度 function saveSelectedSpeed() { localStorage.setItem('ncmeSelectedSpeed', selectedSpeed); } function loadSelectedSpeed() { const storedSpeed = localStorage.getItem('ncmeSelectedSpeed'); selectedSpeed = storedSpeed ? parseFloat(storedSpeed) : 10.0; lastSetSpeed = selectedSpeed; setPlaybackSpeed(selectedSpeed); } // 触发on_player_start事件 function triggerOnPlayerStart() { const event = new Event('on_player_start'); window.dispatchEvent(event); } // 在页面加载完成后检查视频并自动播放视频 function onPageLoaded() { loadSelectedSpeed(); // 加载之前保存的播放速度 const videoElement = document.querySelector('video'); if (videoElement && videoElement.paused) { videoElement.play(); } } // 监听视频加载事件和修改播放速度事件 window.addEventListener('on_cc_live_player_load', onPageLoaded); // 每10秒更新当前播放速度 setInterval(updateCurrentPlaybackSpeed, 10000); // 每10秒检查一次播放速度是否符合选择的倍数 setInterval(checkPlaybackSpeed, 10000); // 添加速度控制面板 addSpeedControlPanel(); // 在页面关闭前保存播放速度 window.addEventListener('beforeunload', saveSelectedSpeed); })();