您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show present time of the livestream!
当前为
// ==UserScript== // @name Youtube Live Clock // @namespace https://greasyfork.org/scripts/453367 // @version 1.3.1 // @description Show present time of the livestream! // @author Derek // @match https://www.youtube.com/* // @grant none // @noframes // ==/UserScript== (function() { 'use strict' let twoDigit = (num) => { if (String(num).length === 2) return num else return '0' + String(num) } let formatTime = (time) => { let second = time % 60 let minute = (time - second) % 3600 / 60 let hour = (time - minute * 60 - second) / 3600 let day = (time - hour * 3600 - minute * 60 - second) / 86400 if (time < 3600) return `${minute}:${twoDigit(second)} ` else if (3600 <= time < 86400) return `${hour}:${twoDigit(minute)}:${twoDigit(second)} ` else return `${day}:${twoDigit(hour)}:${twoDigit(minute)}:${twoDigit(second)} ` } let getClock = () => { let liveClock = document.querySelector('.present-time') if (!liveClock) { let timeDisplay = document.querySelector('.ytp-time-display').childNodes[1] let clockElement = document.createElement('span') clockElement.setAttribute('class', 'present-time') timeDisplay.appendChild(clockElement) liveClock = document.querySelector('.present-time') } return liveClock } let updateTime = () => { let isLive = JSON.parse(document.querySelector('.ytd-player-microformat-renderer').textContent).publication if (isLive) { let progressTime = document.querySelector('.ytp-progress-bar').getAttribute('aria-valuenow') if (isLive[0].endDate) { let presentTime = new Date(Date.parse(isLive[0].startDate) + progressTime * 1000) let date = (presentTime).toString().split(' ') return ` (${date[3]}/${twoDigit(presentTime.getMonth() + 1)}/${date[2]} ${date[4]}) ` } else return formatTime(progressTime) } else return '' } let main = () => { setTimeout(() => { let liveClock = getClock() let progressBar = document.querySelector('.ytp-progress-bar') let observer = new MutationObserver(() => { liveClock.textContent = updateTime() }) observer.observe(progressBar, {attributes: true}) }, 1000) } document.addEventListener('yt-navigate-finish', main) })();