Greasy Fork is available in English.
此脚本支持大多数视频网站,自行添加网址到下方即可
当前为
// ==UserScript==
// @name 左上显示视频剩余时长
// @author He
// @version 1.0
// @description 此脚本支持大多数视频网站,自行添加网址到下方即可
// @match *://www.youtube.com/*
// @match *://www.bilibili.com/*
// @namespace http://greasyfork.icu/users/808960
// ==/UserScript==
(function() {
'use strict';
const updateRemainingTimeAndProgressBar = () => {
const videoElements = document.getElementsByTagName('video');
for (const video of videoElements) {
if (video && video.duration) {
const currentTime = video.currentTime;
const remainingTime = video.duration - currentTime;
const minutes = Math.floor(remainingTime / 60);
const seconds = Math.floor(remainingTime % 60);
const timeString = `${minutes}:${seconds < 10? '0' : ''}${seconds}`;
const progress = currentTime / video.duration;
let displayElement = document.getElementById('remainingTimeDisplay');
if (!displayElement) {
displayElement = document.createElement('div');
displayElement.style.position = 'absolute';
displayElement.style.top = '10px';
displayElement.style.left = '10px';
displayElement.style.color = 'black';
displayElement.style.backgroundColor = 'rgba(200, 221, 200, 0.5)';
displayElement.style.padding = '5px';
displayElement.style.borderRadius = '5px';
displayElement.style.fontSize = '16px';
video.parentElement.appendChild(displayElement);
displayElement.id = 'remainingTimeDisplay';
}
displayElement.textContent = `Remaining Time: ${timeString}`;
let progressBar = displayElement.querySelector('div');
if (!progressBar) {
progressBar = document.createElement('div');
const textWidth = displayElement.offsetWidth;
progressBar.style.width = `${textWidth - 10}px`;
progressBar.style.height = '3px';
progressBar.style.backgroundColor = 'gray';
progressBar.style.marginTop = '5px';
const progressIndicator = document.createElement('div');
progressIndicator.style.width = `${progress * 100}%`;
progressIndicator.style.height = '100%';
progressIndicator.style.backgroundColor = 'skyblue';
progressBar.appendChild(progressIndicator);
displayElement.appendChild(progressBar);
} else {
progressBar.querySelector('div').style.width = `${progress * 100}%`;
}
}
}
};
setInterval(updateRemainingTimeAndProgressBar, 3000);
})();