您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays the current YouTube video timestamp and full video length as total seconds, updating every second.
// ==UserScript== // @name YouTube Current Timestamp and Duration to Seconds // @namespace http://tampermonkey.net/ // @version 1.2 // @description Displays the current YouTube video timestamp and full video length as total seconds, updating every second. // @author Deepseek AI (propagated by Cris M) // @license gpl-3.0 // @match *://www.youtube.com/watch* // @grant none // ==/UserScript== (function() { 'use strict'; // Function to convert H:mm:ss or mm:ss to total seconds function convertTimestampToSeconds(timestamp) { const parts = timestamp.split(':').map(Number); if (parts.some(isNaN)) return null; // Return null for invalid timestamps if (parts.length === 3) { // HH:MM:SS return parts[0] * 3600 + parts[1] * 60 + parts[2]; } else if (parts.length === 2) { // MM:SS return parts[0] * 60 + parts[1]; } else if (parts.length === 1) { // SS return parts[0]; } return null; } // Function to create or update a custom display for seconds function createOrUpdateDisplay(element, seconds) { let customDisplay = element.nextElementSibling; if (!customDisplay || !customDisplay.classList.contains('custom-seconds-display')) { customDisplay = document.createElement('span'); customDisplay.classList.add('custom-seconds-display'); customDisplay.style.marginLeft = '5px'; customDisplay.style.color = '#aaa'; element.insertAdjacentElement('afterend', customDisplay); } customDisplay.textContent = `(${seconds}s)`; } // Function to update the timestamp and duration display function updateTimestampDisplay() { // Find the current timestamp and duration elements in the YouTube player const timeDisplay = document.querySelector('.ytp-time-current'); const durationDisplay = document.querySelector('.ytp-time-duration'); if (!timeDisplay || !durationDisplay) return; // Get the current timestamp and duration text (e.g., "4:55" or "1:20:38") const currentTimestamp = timeDisplay.textContent.trim(); const durationTimestamp = durationDisplay.textContent.trim(); // Convert the timestamps to total seconds const currentSeconds = convertTimestampToSeconds(currentTimestamp); const durationSeconds = convertTimestampToSeconds(durationTimestamp); // Update the custom displays for current time and duration if (currentSeconds !== null) { createOrUpdateDisplay(timeDisplay, currentSeconds); } if (durationSeconds !== null) { createOrUpdateDisplay(durationDisplay, durationSeconds); } } // Start observing the video player for changes const observer = new MutationObserver(() => { // Check if the video is playing const video = document.querySelector('video'); if (video && !video.paused) { // Update the timestamp display every second setInterval(updateTimestampDisplay, 1000); } }); // Observe the YouTube player container for changes const playerContainer = document.querySelector('#movie_player'); if (playerContainer) { observer.observe(playerContainer, { childList: true, subtree: true }); } // Initial run to start the timer if the video is already playing const video = document.querySelector('video'); if (video && !video.paused) { setInterval(updateTimestampDisplay, 1000); } // Convert the duration on page load updateTimestampDisplay(); })();