Add Speed Slider to Youtube Player Settings
当前为
// ==UserScript==
// @name Youtube Player Speed Slider
// @namespace youtube_player_speed_slider
// @version 0.1.0
// @description Add Speed Slider to Youtube Player Settings
// @author Łukasz
// @match https://*.youtube.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var YT_F = {};
YT_F.option = {
menu:null,
speedMenu: null,
label:null,
menuClass : "ytp-menuitem",
};
YT_F.new = function(tag, option){
var element = document.createElement(tag);
for(var param in option){
element[param] = option[param];
}
return element;
};
YT_F.get = function(tselector, all){
all = all || false;
var type = tselector.substring(0,1);
var selector = tselector.substring(1);
if(type == "#"){
return document.getElementById(selector);
}
else if(type == "."){
var elements = document.getElementsByClassName(selector);
if(all){
return elements;
}
else{
return elements.length ? elements[0] : null;
}
}
};
YT_F.build = function() {
YT_F.option.menu = YT_F.get('.ytp-panel-menu');
YT_F.option.menu.appendChild(YT_F.buildSpeedMenu());
};
YT_F.buildSpeedMenu = function(){
YT_F.option.speedMenu = YT_F.new('div', {'className':'ytp-menuitem'});
YT_F.option.speedMenu.label = YT_F.new('div', {'className':'ytp-menuitem-label', 'innerHTML':'<b>Szybkość: 1</b>'});
var right = YT_F.new('div', {'className':'ytp-menuitem-content'});
var range = YT_F.new('input', {'className':'', 'type':'range', 'min':0.5, 'max':4, 'step':0.1, 'value':1});
document.addEventListener('change', YT_F.onchange);
right.appendChild(range);
YT_F.option.speedMenu.appendChild(YT_F.option.speedMenu.label);
YT_F.option.speedMenu.appendChild(right);
return YT_F.option.speedMenu;
};
YT_F.updateLabel = function(value){
YT_F.option.speedMenu.label.innerHTML = "Szybkość: " + value;
};
YT_F.onchange = function(event){
YT_F.updateLabel(event.target.value);
YT_F.updatePlayerSpeed(event.target.value);
};
YT_F.updatePlayerSpeed= function(value){
YT_F.get('.html5-main-video').playbackRate = value;
};
YT_F.annotationsSwitchOffAndRemoveDefaultSpeedMenu = function(){
var settings_button = YT_F.get(".ytp-settings-button");
settings_button.click(); settings_button.click();
var all_labels = document.getElementsByClassName("ytp-menuitem-label");
for (var i = 0; i < all_labels.length; i++) {
if ((all_labels[i].innerHTML == "Annotations" || all_labels[i].innerHTML == "Adnotacje") &&
(all_labels[i].parentNode.getAttribute("aria-checked") == "true")) {
all_labels[i].parentNode.click();
}
if (all_labels[i].innerHTML == "Speed" || all_labels[i].innerHTML == "Szybkość"){
all_labels[i].parentNode.style.display = 'none';
}
}
};
YT_F.build();
YT_F.annotationsSwitchOffAndRemoveDefaultSpeedMenu();
})();