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.
当前为
// ==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://greasyfork.org/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()
});
})();