Skip to content

Instantly share code, notes, and snippets.

@m-ueno
Created January 19, 2012 20:55
Show Gist options
  • Save m-ueno/1642527 to your computer and use it in GitHub Desktop.
Save m-ueno/1642527 to your computer and use it in GitHub Desktop.
youtube-kb
// ==UserScript==
// @name youtube-kb
// @author uenop
// @namespace http://twitter.com/uenomasaru
// @include http://www.youtube.com/watch?*
// ==/UserScript==
(function() {
var time_seek = 15, tick_volume = 10, tick_volume2 = 20;
var key = {
debug : 'o',
fullscreen : 'S-f',
loop : 'r',
mute_toggle : 'm',
n_second : 'S-n',
play : 'p',
seek_back : 'u',
seek_forward : 'i',
seek_head : 'S-h',
volumedown : 't',
volumedown2 : 'S-t',
volumeup : 'y',
volumeup2 : 'S-y'
};
document.addEventListener('keydown', function (e) {
var player = document.getElementById("watch-player").children(0);
var pressed = String.fromCharCode(e.which).toLowerCase();
pressed = (e.ctrlKey ? 'C-' : '') + (e.altKey ? 'A-' : '') + (e.shiftKey ? 'S-' : '') + pressed;
switch(pressed){
case key.debug:
console.log(player);
player.setPlaybackQuality( player.getAvailableQualityLevels()[0] );
break;
case key.loop :
case key.fullscreen:
break;
case key.mute_toggle:
player.isMuted() ? player.unMute() : player.mute();
break;
case key.n_second:
e.preventDefault();
var s = prompt('seek to (second OR min:sec)',"1:00");
var n = 0;
var a = s.match(/\d+/g);
if( a.length==1 ){
n = s;
} else if( a.length==2 ){
n = Number(a[0]*60) + Number(a[1]);
} else
break;
player.seekTo(n);
break;
case key.play:
(player.getPlayerState() == 1 ) ? player.pauseVideo() : player.playVideo();
break;
case key.seek_back:
player.seekTo( player.getCurrentTime() - time_seek );
break;
case key.seek_forward:
player.seekTo( player.getCurrentTime() + time_seek );
break;
case key.seek_head:
player.seekTo(0);
break;
case key.volumedown:
player.setVolume(player.getVolume() - tick_volume);
break;
case key.volumedown2:
player.setVolume(player.getVolume() - tick_volume2);
break;
case key.volumeup:
player.setVolume(player.getVolume() + tick_volume);
break;
case key.volumeup2:
player.setVolume(player.getVolume() + tick_volume2);
break;
default:
// window.opera.postError(e.which + " " + String.fromCharCode(e.which))
}
}, false);
// Force High Quality
document.addEventListener('load', function (e) {
var player = document.getElementById("watch-player").children(0);
player.setPlaybackQuality( player.getAvailableQualityLevels()[0] );
}, true);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment