您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Set adjustable playback speed on selected websites
// ==UserScript== // @name TimeHookerLite // @namespace https://cozian.timehooker.com // @version 1.4 // @description Set adjustable playback speed on selected websites // @author cozian // @license MIT // @include * // @run-at document-start // @grant GM_registerMenuCommand // @grant GM_getValue // @grant GM_setValue // ==/UserScript== (function() { 'use strict'; // Retrieve include list and playback speed, or initialize defaults let includeList = GM_getValue("includeList", []); let playbackSpeed = GM_getValue("playbackSpeed", 10); // Default speed of 10x // Function to add the current site to the include list function addToIncludeList() { const currentSite = window.location.hostname; if (!includeList.includes(currentSite)) { includeList.push(currentSite); GM_setValue("includeList", includeList); alert(`Added ${currentSite} to include list.`); } else { alert(`${currentSite} is already in the include list.`); } } // Function to set a new playback speed function setPlaybackSpeed() { const newSpeed = prompt("Enter the new playback speed (e.g., 10 for 10x):", playbackSpeed); if (newSpeed && !isNaN(newSpeed)) { playbackSpeed = parseFloat(newSpeed); GM_setValue("playbackSpeed", playbackSpeed); alert(`Playback speed set to ${playbackSpeed}x.`); } else { alert("Invalid speed value. Please enter a numeric value."); } } // Register menu commands for adding sites and setting playback speed GM_registerMenuCommand("Add this site to TimeHookerLite Include List", addToIncludeList); GM_registerMenuCommand("Set TimeHookerLite Playback Speed", setPlaybackSpeed); // Check if the current site is in the include list before running the script if (!includeList.includes(window.location.hostname)) { return; } // Override setInterval to accelerate intervals based on the playback speed const originalSetInterval = window.setInterval; window.setInterval = function(callback, delay, ...args) { return originalSetInterval(callback, delay / playbackSpeed, ...args); }; // Override setTimeout to accelerate timeouts based on the playback speed const originalSetTimeout = window.setTimeout; window.setTimeout = function(callback, delay, ...args) { return originalSetTimeout(callback, delay / playbackSpeed, ...args); }; // Override Date.now to simulate accelerated time const originalDateNow = Date.now; Date.now = function() { return originalDateNow() * playbackSpeed; }; // Override performance.now to simulate accelerated time const originalPerformanceNow = performance.now.bind(performance); performance.now = function() { return originalPerformanceNow() * playbackSpeed; }; })();