NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name YouTube Seeker
// @license MIT
// @namespace https://github.com/aycabta
// @version 0.2.1
// @description benry
// @include /^https:\/\/www\.youtube\.com\/watch\?.*v=.*$/
// @copyright 2016+, Code Ass
// ==/UserScript==
(function() {
function initialize() {
var savedTime = null;
var seekSeconds = 5;
var isShownControls = true;
var leftControls = document.getElementsByClassName('ytp-left-controls')[0];
var secondsInfo = document.createElement('div');
secondsInfo.style.color = '#BBB';
secondsInfo.classList.add('ytp-time-display');
secondsInfo.classList.add('notranslate');
var secondsText = document.createTextNode('seek ' + seekSeconds.toString(10))
secondsInfo.appendChild(secondsText);
leftControls.appendChild(secondsInfo);
document.addEventListener("keydown", function(e) {
var to = null;
var player = document.getElementById("movie_player");
switch (e.keyCode) {
case 219: // [
seekSeconds--;
console.log("seek with " + seekSeconds + " seconds");
secondsText.textContent = 'seek ' + seekSeconds.toString(10);
break;
case 221: // ]
seekSeconds++;
console.log("seek with " + seekSeconds + " seconds");
secondsText.textContent = 'seek ' + seekSeconds.toString(10);
break;
case 85: // u
to = player.getCurrentTime() - seekSeconds;
break;
case 79: // o
to = player.getCurrentTime() + seekSeconds;
break;
case 83: // s
savedTime = player.getCurrentTime();
break;
case 82: // r
if (savedTime !== null) {
to = savedTime;
}
break;
case 72: // h
if (isShownControls) {
player.hideControls();
isShownControls = false;
} else {
player.showControls();
isShownControls = true;
}
break;
case 73: // i
switch (player.getPlayerState()) {
case 1: // playing
player.pauseVideo();
break;
default:
player.playVideo();
break;
}
break;
}
if (to !== null) {
if (to < 0) {
to = 0;
} else if (to > player.getDuration()) {
to = player.getDuration();
}
console.log("seek to " + to);
player.seekTo(to, true);
}
});
};
if (window.top === window.self) {
var script = document.createElement ('script');
script.textContent = '(' + initialize.toString() + ')()';
var head = document.getElementsByTagName ('head')[0];
setTimeout(function() {
head.appendChild(script);
}, 200);
}
})();