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     2
// @match       https://www.youtube.com/*
// @grant       none
// @namespace https://greasyfork.org/users/206408
// ==/UserScript==

(async () => {

    function l(message){
        console.log(`[Youtube Resumer] ${message}`)
    }

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

    l('starting')

    document.addEventListener("yt-navigate-finish", function() {
        l('navigate-finish')
        tryListen()
    });
})();