您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
extension for saving and setting last progress in Youtube Videos
当前为
// ==UserScript== // @license MIT // @name YoutubePlayBack // @namespace http://tampermonkey.net/ // @version 1.1 // @description extension for saving and setting last progress in Youtube Videos // @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() })();