Youtube Resumer

Updates the url so that it contains "?t={time}" corresponding to video.currentTime. Sometimes Youtube opens a video with a t parameter, but it doesn't get updated and when you refresh you go back to that time instead of where you left off.

目前為 2021-12-04 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Youtube Resumer
// @description Updates the url so that it contains "?t={time}" corresponding to video.currentTime. Sometimes Youtube opens a video with a t parameter, but it doesn't get updated and when you refresh you go back to that time instead of where you left off.
// @version     3
// @match       https://www.youtube.com/*
// @grant       none
// @namespace https://gf.qytechs.cn/users/206408
// ==/UserScript==

(async () => {

    function l(...args){
        console.log(`[Youtube Resumer]`, ...args)
    }

    function tryListen(){
        const video = document.querySelector('video');
        if(video){
            l('listening', video)
            listening = true
            video.addEventListener('timeupdate', (event) => {
                const time = parseInt(video.currentTime)
                if(time > 0) { //avoid having ?t=0
                    const url = new URL(window.location.href)
                    url.searchParams.set('t', time)
                    window.history.replaceState(null, null, url);
                }
            })
        }
    }

    let listening = false //the video element exists even if you go back to the home page, so no need to readd event listeners

    //Event for each page change
    document.addEventListener("yt-navigate-finish", function() {
        l('navigate-finish')
        if(!listening) tryListen()
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址