Youtube focusking

Helps you not overwhelmed with the recommendations from YT.

    // ==UserScript==
// @name         Youtube focusking
// @namespace    http://tampermonkey.net/
// @version      0.55
// @description  Helps you not overwhelmed with the recommendations from YT.
// @author       dharan
// @match        *://www.youtube.com/*
// @icon         https://www.google.com/s2/favicons?domain=youtube.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let config = {
        home : {
            hide    : true,
            message : {
                display : true,
                content : "<div style='margin-top:20px; font-weight:500; color: green'> Peace Bruhh !!</div>" +
                          "<div style='margin-top:20px'> Home page blocked <br> Due to " +
                              "<span> Recommendation-engine content manipulation</span> <br>" +
                          "</div><br>",
            }
        },

        related_videos : {
            hide    : true,
        },
    };


    //Home - Utils
    var home = {
       init : function(){
           home.show.message();

           //Listeners
           setTimeout(function(){
               document.getElementById("guide-button").addEventListener("click", function(){
                   home.hide.logo();
                   home.hide.forwards();
               });
           },1000);
       },

       hide : {
          logo : function(){
              let logoElem = document.getElementsByTagName("ytd-topbar-logo-renderer");
              for(let i = 0; i< logoElem.length; i++){
                  logoElem[i].style="pointer-events:none";
              }
          },

          forwards : function(){
              setTimeout(function(){
                  let elem = document.getElementsByTagName("ytd-guide-entry-renderer")[0];
                  if (!!elem){
                      let homeButton = elem.querySelector("[title=Home]");
                      if(!!homeButton) homeButton.remove();
                  }
              }, 900);
          },
       },
       show : {
          message : function(){
              //If home results rendered - then render the message there
              var elements = document.getElementsByTagName("ytd-two-column-browse-results-renderer")
              for(let i =0; i < elements.length; i++){
                  let domElement = elements[i];
                  if(domElement!=null && domElement.getAttribute("page-subtype") == "home")
                  {
                      domElement.style = "color: grey; display: flex; font-size: 20px; color: grey; flex-direction:column; font-size: 20px; margin-left: 65%; margin-top: 19%;"
                      domElement.innerHTML = config.home.message.content;
                  }
              }
          }
       },
    };


    var player = {
        init : function(){
            let playerContainer = document.getElementById("player-theater-container");
            player.align(!!playerContainer && playerContainer.children.length != 0);
            player.hide.recommendations();

            //Observer - init
            if (playerContainer!=undefined){
                var observer = new MutationObserver(function(config){
                    player.align(config[0].addedNodes.length!=0);
                });
                observer.observe(playerContainer, {'childList':true});
            }
        },

        align : function(isTheatre){
            if(isTheatre){
                document.getElementById("movie_player").style = "width:100%";
                document.getElementById("ytd-player").style = "height:100%";
            }
            else{
                setTimeout(function(){
                    let videoDOM = document.getElementsByTagName("video")[0];
                    document.getElementById("movie_player").style = "width:" + videoDOM.style.width;
                    document.getElementById("ytd-player").style   = "height:" + videoDOM.style.height;
                }, 1000);
            }
        },

        hide : {
            recommendations : function(){
                var count = 0;
                var repeater = setInterval(function(){
                    var playerContainer = document.getElementsByTagName("ytd-watch-flexy")[0];
                    if(++count == 10) clearInterval(repeater);
                    if(!!playerContainer && playerContainer.querySelector("[id=secondary]")!=null){
                        playerContainer.querySelector("[id=secondary]").remove();
                    }
                },500);
            }
        },
    }

    var browser = {
        Constants : {
            lastURL : "#",
        },
        isFirefox : function(){
            return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
        },
        getURL : function(){
            return document.location.href;
        },
        updateURL : function(){
            browser.Constants.lastURL = document.location.href;
        }
    };


    //INIT
    browser.updateURL();
    URLRouter();


    function URLRouter(){
        home.hide.logo();
        home.hide.forwards();

        if(browser.Constants.lastURL.indexOf("watch")!=-1){
            player.init();
        }
        else{
            home.init();
        }
    }

    //URL WATCHER
    new MutationObserver(() => {
        if (browser.getURL() !== browser.Constants.lastURL) {
            browser.updateURL();
            URLRouter();
        }
    }).observe(document, {subtree: true, childList: true});

})();