- // ==UserScript==
- // @name youtube-playback-rate
- // @namespace mikeOS
- // @version 0.5
- // @description Sets video playback rate and does other stuff.
- // @author Favlist.ru
- // @include *youtube.com*
- // @grant none
- // ==/UserScript==
-
- var rates = new Array(1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,2.1,2.2,2.3);
- var video;
- var channel_name;
- var upload_date;
- if (!localStorage.myratescheck) localStorage.myratescheck = "true";
-
- window.setInterval(function(){
- if (document.location.href.indexOf("watch") > 0){
- video = document.getElementsByTagName("video")[0];
- if (document.getElementById("player-container")) displayProgress(video);
-
- if (!document.getElementById("myrate")){
- var div = document.getElementById("player-container");
- var defaultrate = 1; if(localStorage.defaultrate && localStorage.myratescheck == "true") defaultrate = localStorage.defaultrate;
- for (var i = 0; i<rates.length; i++){
- var button = document.createElement("button");
- button.innerHTML = rates[i];
- button.setAttribute("value",rates[i]);
- button.setAttribute("class","favlist_yt_rate_button");
- if (i===0) button.setAttribute("style","margin-left:10px");
- button.setAttribute("onclick","this.setAttribute(\"disabled\",true);document.getElementById(\"myrate\").disabled=false;document.getElementById(\"myrate\").id=\"\";this.setAttribute(\"id\",\"myrate\");document.getElementsByTagName(\"video\")[0].playbackRate=this.value;localStorage.setItem(\"defaultrate\",this.value);this.blur();");
- if (defaultrate == rates[i]) {button.setAttribute("id","myrate");button.setAttribute("disabled",true);}
- div.appendChild(button);
- }
-
- var label = document.createElement("label");
- label.setAttribute("style","position:relative;top:1px;left:6px;padding:1px 3px 1px 3px;border:1px solid #E0E0E0;background-color:#FAFAFA;color:#C9C9C9");
-
- var check = document.createElement("input"); check.setAttribute("type","checkbox"); check.setAttribute("id","myratescheck");
- check.setAttribute("style","display:none");
- check.setAttribute("onclick","localStorage.setItem(\"myratescheck\",this.checked);p=this.parentNode;if(this.checked){p.style.border=\"1px solid #C7C7C7\";p.style.color=\"#808080\";}else{p.style.border=\"1px solid #E0E0E0\";p.style.color=\"#C9C9C9\";}");
- if(localStorage.myratescheck == "true") {check.setAttribute("checked",true);
- label.setAttribute("style","position:relative;top:3px;left:6px;padding:1px 6px 1px 6px;border:1px solid #545454;background-color:#545454;color:#808080;font-size:17px");
- }
- label.appendChild(check);
- var txt = document.createElement("span"); txt.innerHTML = "✓";label.appendChild(txt);
- div.appendChild(label);
-
- video.playbackRate=defaultrate;
- }
- var myrate = document.getElementById("myrate");
- video.playbackRate=myrate.value;
-
- if (document.getElementById('channel_name') === null){
- var txt1 = document.createElement("span"); txt1.innerHTML = document.getElementsByClassName('date')[0].textContent.replace("Published on ","");
- txt1.setAttribute('id','upload_date');
- txt1.setAttribute("style","color:#A7A7A7;font-size:12px;margin-left:10px");
- document.getElementById("player-container").appendChild(txt1);
- upload_date = document.getElementById('upload_date').textContent;
-
- var txt2 = document.createElement("span"); txt2.innerHTML = document.getElementById('owner-container').textContent;
- txt2.setAttribute('id','channel_name');
- txt2.setAttribute("style","color:#A7A7A7;font-size:14px;font-weight:bold;margin-left:10px;white-space: pre;");
- document.getElementById("player-container").appendChild(txt2);
- channel_name = document.getElementById('channel_name').textContent.replace("Verified","");
- }
-
- if (channel_name !== '' && channel_name != document.getElementById('owner-container').textContent) {
- document.getElementById('channel_name').innerHTML = document.getElementById('owner-container').textContent.replace("Verified","");
- channel_name = document.getElementById('channel_name').textContent.replace("Verified","");
- }
- document.getElementById('upload_date').innerHTML = document.getElementsByClassName('date')[0].textContent.replace("Published on ","");
- }
- },1000);
-
- function displayProgress(video){
- var playerwidth = document.getElementById("player-container").offsetWidth;
- var pcent = (video.currentTime / video.duration)*100;
- var progress_bar = document.getElementById("progress_bar");
- var progress_counter = document.getElementById("progress_counter");
- if (!progress_bar) {
- var bar = document.createElement("div"); bar.id = "progress_bar"; bar.setAttribute("style","height:3px;width:0px;background:#FF4646;position:relative;top:1px;margin-bottom:4px");
- document.getElementById("player-container").appendChild(bar);
- var counter = document.createElement("span"); counter.id = "progress_counter";
- counter.setAttribute("style","font-family: 'Courier';font-size:20px;font-weight:bold;color:#A7A7A7;position:relative;top:2px;margin-right:10px;");
- document.getElementById("player-container").appendChild(counter);
- } else {progress_bar.style.width = (playerwidth / 100) * pcent + "px";}
- if (video.duration) progress_counter.innerHTML = humanTime(Math.round(video.currentTime)) + "/" + humanTime(Math.round(video.duration));
- }
-
- function humanTime(totalSec){
- var hours = parseInt( totalSec / 3600 ) % 24;
- var minutes = parseInt( totalSec / 60 ) % 60;
- var seconds = totalSec % 60;
- if (hours > 0) {
- return hours + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
- }else{
- return (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
- }
- }
-
- var style = document.createElement("style");
- style.innerHTML = ".favlist_yt_rate_button{cursor:pointer;font-size:10px;margin-left:1px;height:24px;width:26px;text-align:center;color:#FAFAFA;border:none;border-left:1px solid #545454;border-right:1px solid #545454;background-color:#545454;}"+
- ".favlist_yt_rate_button[disabled]{color:#545454;border-left:1px solid transparent;border-right:1px solid transparent;background:transparent;cursor:default;} #eow-title{white-space:nowrap;font-size:18px}"+
- "#subitle-container-first{display:none}#watch7-sidebar{margin-top:-389px!important}"+
- ".ytd-iframe-companion-renderer{display:none}"+
- "#player-container {white-space:nowrap;position:relative;bottom:16px}ytd-video-primary-info-renderer{padding: 33px 0 28px 0;}";
- document.getElementsByTagName("head")[0].appendChild(style);
-
-
-
-
-
-
-
- var globalKey ='';
- var keyInterval = 0;
- var keyStop = 1;
- var docTitle = '';
- window.addEventListener("keydown", myFunction);
-
- function myFunction(event) {
- if (event.keyCode == 83 && globalKey != event.keyCode) {
- keyInterval ++; keyStop = 0;docTitle = document.title;
- startKeyInterval();
- }
- globalKey = event.keyCode;
- }
- window.addEventListener("keyup", myFunction2);
-
- function myFunction2(event) {
- if (keyInterval > 10){
- if (event.keyCode == 83) {
- document.location = 'https://www.youtube.com/feed/subscriptions';
- }
- }
- document.title = docTitle;
- keyInterval = 0; keyStop = 1;
- globalKey = '';
- }
-
- function startKeyInterval(){
- if (keyInterval > 10 && document.title != "--- " + docTitle){
- document.title = "[☯] - " + docTitle;
- }
- if (keyInterval > 0&& keyStop === 0) window.setTimeout(function(){keyInterval ++;startKeyInterval();},100);
- }