Have you ever closed a YouTube video by accident, or have you gone to another one and when you come back the video starts from 0? With this extension it won't happen anymore
当前为
// ==UserScript==
// @license MIT
// @name YoutubePlayBack
// @namespace http://tampermonkey.net/
// @version 1.1.1
// @description Have you ever closed a YouTube video by accident, or have you gone to another one and when you come back the video starts from 0? With this extension it won't happen anymore
// @author Costin Alexandru Sandu
// @match https://www.youtube.com/watch*
// @icon https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant none
// ==/UserScript==
(function() {
'strict'
var savedProgressAlreadySet = false
function executeFnInPageContext (fn) {
const fnStringified = fn.toString()
return window.eval('('+fnStringified+')'+'()')
}
function getVideoCurrentTime () {
const currentTime = executeFnInPageContext(() => {
const player = document.querySelector('#movie_player')
return player.getCurrentTime()
})
return currentTime
}
function getVideoId () {
const id = executeFnInPageContext(() => {
const player = document.querySelector('#movie_player')
return player.getVideoData().video_id
})
return id
}
function playerExists () {
const exists = executeFnInPageContext(() => {
const player = document.querySelector('#movie_player')
return Boolean(player)
})
return exists
}
function setVideoProgress (progress) {
window.eval('var progress ='+ progress)
executeFnInPageContext(() => {
const player = document.querySelector('#movie_player')
player.seekTo(window.progress)
})
window.eval('delete progress')
}
function saveVideoProgress() {
const videoProgress = getVideoCurrentTime()
const videoId = getVideoId()
window.localStorage.setItem(videoId, videoProgress)
}
function getSavedVideoProgress() {
const videoId = getVideoId()
const savedVideoProgress = window.localStorage.getItem(videoId)
return savedVideoProgress
}
function logError(message) {
console.log('[YoutubeRememberLastTime] '+message)
}
function setSavedProgress () {
const savedProgress = getSavedVideoProgress();
setVideoProgress(savedProgress)
savedProgressAlreadySet = true
}
function isReadyToSetSavedProgress () {
return !savedProgressAlreadySet && playerExists() && getSavedVideoProgress()
}
function main() {
if (isReadyToSetSavedProgress()) {
setSavedProgress()
}
saveVideoProgress()
}
function initialize() {
if (isReadyToSetSavedProgress()) {
setSavedProgress()
}
setInterval(main, 1500)
}
initialize()
})();