NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Youtube Widescreen // @description Gives you the option to convert any Youtube Channel with one click to Widescreen Format. // @author alike03 // @version 1.0.1 // @namespace youtubeWS // @icon https://addons.cdn.mozilla.net/user-media/addon_icons/2252/2252505-64.png // @updateURL https://openuserjs.org/meta/alike03/Youtube_Widescreen.meta.js // @supportURL https://openuserjs.org/scripts/alike03/Youtube_Widescreen/issues // @downloadURL https://openuserjs.org/src/scripts/alike03/Youtube_Widescreen.user.js // @homepageURL http://alike.ml/UserScript.php // @match https://*.youtube.com/* // @require https://code.jquery.com/jquery-3.4.1.min.js // @copyright 2019, alike03 (https://openuserjs.org/users/alike03) // @license MIT // ==/UserScript== window.addEventListener("spfdone", process); // old youtube design window.addEventListener("yt-navigate-start", remove); // new youtube design window.addEventListener("yt-navigate-finish", process); // new youtube design window.addEventListener("load", process); // one-time early processing window.addEventListener("unload", saveData); //Get Screenress let sc_height = screen.height; let sc_width = screen.width; let ratio = screen.width / 1920; let channelWidend = false; let savedChannels = null; let movie_player = null; let video = null; //Get savedChannels if (localStorage.getItem("savedChannels1") != null) savedChannels = JSON.parse(localStorage.getItem("savedChannels1")); if (savedChannels == null) savedChannels = []; function checkPlayerExistence() { if (movie_player == null && document.getElementById("movie_player") != null) { movie_player = document.getElementById("movie_player"); video = document.getElementById("movie_player").getElementsByTagName("video")[0]; } } function remove() { $("#widescreenButton").remove(); $(video).removeClass("widescreen-fullscreen"); } function process() { checkPlayerExistence(); if (movie_player != null) { (function () { let channelName = null; //Check if it's the old or the new Design if ($("body").is("#body")) { $("#watch7-subscription-container span:nth-child(4)").after(' <span id="widescreenButton" class="yt-uix-button-subscription-container"><button class="yt-uix-button yt-uix-button-size-default yt-uix-button-subscribed-branded yt-uix-subscription-button yt-can-buffer hover-enabled yt-uix-servicelink" type="button" aria-busy="false"><span class="yt-uix-button-content"><span class="enable-widescreen" aria-label="Make Videos from this Channel Widescreen">Enable Widescreen</span><span class="disable-widescreen" aria-label="Disable Widescreen">Disable Widescreen</span></span></button></span>') } else { var checkExistBL = setInterval(function () { if ($("#container div#info div#flex").length) { remove(); $("#container div#info div#flex").after('<button id="widescreenButton" class="wsButtonNew"><span class="enable-widescreen" aria-label="Make Videos from this Channel Widescreen">Enable Widescreen</span><span class="disable-widescreen" aria-label="Disable Widescreen">Disable Widescreen</span></button>'); clearInterval(checkExistBL); } }, 100); } var checkExistWB = setInterval(function () { if ($("#widescreenButton").length) { getChannel(); clearInterval(checkExistWB); $('#widescreenButton').click(function () { buttonClick(); }) } }, 100); let ytdapp = document.getElementsByTagName("ytd-app")[0]; observer.observe(movie_player, { attributes: true }); //observer.observe(ytdapp, {attributes: true}); })() } }; function getChannel() { if ($("body").is("#body")) { channelName = $(".yt-user-info a:first-child").text(); setTimeout(function () { enableButton(); }, 1000); } else { var checkExist = setInterval(function () { if ($("#owner-container #owner-name a:first-child").text().length) { channelName = $("#owner-container #owner-name a:first-child").text(); enableButton(); clearInterval(checkExist); } }, 100); } } function enableButton() { if (savedChannels.includes(channelName)) { $('#widescreenButton .disable-widescreen').css("display", "inline"); channelWidend = true; } else { $('#widescreenButton .enable-widescreen').css("display", "inline"); channelWidend = false; } } function newVidCheck() { if (savedChannels.includes(channelName)) { } else { } } function buttonClick() { if (savedChannels.includes(channelName)) { savedChannels.pop(channelName); $('#widescreenButton .disable-widescreen').hide(); $('#widescreenButton .enable-widescreen').show(); channelWidend = false; } else { savedChannels.push(channelName); $('#widescreenButton .disable-widescreen').show(); $('#widescreenButton .enable-widescreen').hide(); channelWidend = true; } localStorage.setItem("savedChannels1", JSON.stringify(savedChannels)); checkWidescreen(); console.log(savedChannels); } function checkWidescreen() { let attributeValue = movie_player.classList; if (attributeValue.contains("ytp-fullscreen") && !$(video).hasClass("widescreen-fullscreen") && channelWidend === true) { $(video).addClass("widescreen-fullscreen"); } if ($(video).hasClass("widescreen-fullscreen") && (!attributeValue.contains("ytp-fullscreen") || channelWidend === false)) { $(video).removeClass("widescreen-fullscreen"); } } let observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.attributeName === "class" || mutation.attributeName === "masthead-hidden_") { checkWidescreen(); } }); }); let css = [ ".html5-video-container video.widescreen-fullscreen {", "width: " + sc_width + "px !important;", "height: " + sc_height + "px !important;", "left: 0 !important;", "transform: scale(" + ratio + ", " + ratio + ") translate(0px, 0px);", "}", ".disable-widescreen, .enable-widescreen {", "display: none", "}", "button.wsButtonNew {", "border: none;", "background: none;", "cursor: pointer;", "}", ".wsButtonNew > span {", "font-size: 1.3rem;", "font-weight: bolder;", "letter-spacing: .007px;", "text-transform: uppercase;", "color: var(--yt-spec-text-secondary);", "}" ].join("\n"); { var node = document.createElement("style"); node.appendChild(document.createTextNode(css)); var heads = document.getElementsByTagName("head"); if (heads.length > 0) { heads[0].appendChild(node); } else { document.documentElement.appendChild(node); } } function saveData() { localStorage.setItem("savedChannels1", JSON.stringify(savedChannels)); } console.log("Youtube Widescreen");