您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
zeigt an wie viel Restzeit ein Video läuft,
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/488745/1365028/Erweiterung%20%28Rest%20time%29%20f%C3%BCr%20das%20gesehene%20Videos%20ausblenden%20oder%20markieren.js
// ==UserScript== // @name Erweiterung (Rest time) für das gesehene Videos ausblenden oder markieren // @namespace https://basti1012.bplaced.net // @version 1.3 // @description zeigt an wie viel Restzeit ein Video läuft, // auch wenn der Player schneller läuft, wird die Zeit mitgerechnet // Dieses Script wurde von 4lrick geschrieben (YouTube - Remaining time). // Ich hatte mir zwar auch eine Version erstellt. Aber seine läuft besser. // ACHTUNG: Dieses Script läuft nur mit meinen Userscript "Bastis Youtube Multi Script,gesehende videos ausblenden oder makieren", // was in den nächsten Tagen Online kommt. // Zu den Hauptscript kann dieses Script einfach eingebunden werden und das Hauptscript hat eine Funktion mehr. // Alle Neue einstellmöglichkeiten der erweiterungen können in das Hauptmenü des Hauptscriptes eingestellt werden. // @author basti1012 // @allFrames true // @run-at document-end // @license MIT License // @noframes // @author 4lrick . Für mein YouTube Script umgebaut von basti1012 als Erweiterung // @icon https://basti1012.de/images/favicon.png // ==/UserScript== var start2 = performance.now(); if(!array_localsdtorage){ var array_localsdtorage=[]; } if(!erweiterungs_einstellungs_array){ var erweiterungs_einstellungs_array=[]; } array_localsdtorage.push(["rest_zeit_einblenden", false]); function rest_lauf_zeit_anzeigen(){ if(localStorage.getItem('rest_zeit_einblenden')=='true'){ // beginn Script from 4lrick let init = false; let timeDisplay; function displayRemainingTime() { const videoElement = document.querySelector('video'); if (videoElement) { const timeRemaining = (videoElement.duration - videoElement.currentTime) / videoElement.playbackRate; const hours = Math.floor(timeRemaining / 3600); const minutes = Math.floor((timeRemaining % 3600) / 60); const seconds = Math.floor(timeRemaining % 60); const isLive = document.querySelector('.ytp-live'); const viewLiveCount = document.querySelector('span[dir="auto"].bold.style-scope.yt-formatted-string'); const isEmbed = window.location.href; if ((viewLiveCount !== null && viewLiveCount.textContent.trim() !== "watching now") || isEmbed.includes("youtube.com/embed") && !isLive) { timeDisplay.textContent = `(${hours > 0 ? `${hours}:` : ''}${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds})`; } else { timeDisplay.textContent = null; } } requestAnimationFrame(displayRemainingTime); } function initDisplay() { timeDisplay = document.createElement('div'); timeDisplay.style.display = 'inline-block'; timeDisplay.style.marginLeft = '10px'; timeDisplay.style.color = '#ddd'; const timeContainer = document.querySelector('.ytp-time-display'); if (timeContainer) { timeContainer.appendChild(timeDisplay); init = true; } } function checkVideoExists() { const videoElement = document.querySelector('video'); if (videoElement) { if (!init) { initDisplay(); } videoElement.onplaying = displayRemainingTime; } } const observer = new MutationObserver(checkVideoExists); const body = document.body; const config = { childList: true, subtree: true }; observer.observe(body, config); // end script from 4lrick return 1; }else{ return 2; } return 3; } if(localStorage.getItem('rest_zeit_aktivieren')=='true'){ var checkboxerweiterungrestzeitaktivieren ='checked="true"'; }else{ var checkboxerweiterungrestzeitaktivieren =''; } if(!erweiterungs_einstellungs_array){ var erweiterungs_einstellungs_array = []; } erweiterungs_einstellungs_array.push(['restzeit_anzeigen',` <label> <label style="display:flex;flex-direction:column"> <p> <strong>Restzeit anzeigen </strong> <input type="checkbox" id="rest_laufueit" ${checkboxerweiterungrestzeitaktivieren}> <span>? <small> Mit dieser Funktion wird im Player neben der Abgelaufene und Endzeit noch die Restlaufzeit angezeigt<br> Auch wenn sie den Player schneller oder langsamer laufen lassen, wird dies mit berechnet </small> </span> </p> </label> </label>`]); if(!array_script){ var array_script=[]; } array_script.push([` var restlaufzeit_var=document.getElementById('rest_laufueit') restlaufzeit_var.addEventListener('click',function(u){ if(restlaufzeit_var.checked==true){ localStorage.setItem('rest_zeit_einblenden',true); }else{ localStorage.setItem('rest_zeit_einblenden',false); } }) `]); if(localStorage.getItem('rest_zeit_einblenden')){ var restlaufzeit=rest_lauf_zeit_anzeigen(); if(restlaufzeit==1){ console.log('%cRestlaufzeit aktiviert'+ (performance.now() - start2) + ' ms.','color:green'); }else if(restlaufzeit==2){ console.log('%cRestlaufzeit deaktiviert'+ (performance.now() - start2) + ' ms.','color:orange'); }else{ console.log('%cRestlaufzeit error'+ (performance.now() - start2) + ' ms.','color:red'); } }