// ==UserScript== // @name Google Shut Up! // @namespace http://tampermonkey.net/ // @version 0.1.7.2 // @description try to take over the world! // @author You // @include /^https\:\/\/[a-z]*\.(google|youtube)\.[a-z]*/ // @grant none // @run-at document-start // @downloadURL none // ==/UserScript== (function() { console.log("Google Shut Up: Start"); //https://stackoverflow.com/a/45956628---- //youtube wtf events //new layout > 2017 window.addEventListener("yt-navigate-finish", function(event) { window.dispatchEvent(new Event('locationchange')) }); //old layout < 2017 window.addEventListener("spfdone", function(e) { window.dispatchEvent(new Event('locationchange')) }); function TryToTrueDismissLogin(){ //to avoid the return of popup if(document.cookie.match(/CONSENT\=YES\+EN\.en\+V13\+BX/) !== null){ if(localStorage.getItem("dismissed-login") === "pending" && document.URL.match(/^https\:\/\/(accounts\.(google|youtube)\.com|www\.google\.com\/recaptcha)/i) === null){ localStorage.setItem("dismissed-login", "true") console.log("Google Shut Up: dismissed-login: true"); location.reload(); } } } window.addEventListener('locationchange', TryToTrueDismissLogin); //if cookie is unset then inject it if(document.cookie.match(/CONSENT\=YES\+EN\.en\+V13\+BX/) === null){ //cookie injection document.cookie = "CONSENT=YES+EN.en+V13+BX; expires=Fri, 01 Jan 2038 00:00:00 GMT; domain="+document.URL.match(/^https\:\/\/[a-z]*\.((google|youtube)\.[\.a-z]*)/)[1]+"; path =/; Secure"; //this prevent use of mutation observer if(document.URL.match(/^https\:\/\/www\.youtube\.com/i) !== null){ console.log("Google Shut Up: dismissed-login: false"); localStorage.setItem("dismissed-login","false"); } //reload on accounts.google.com pages causes infinite loop if(document.URL.match(/^https\:\/\/(accounts\.(google|youtube)\.com|www\.google\.com\/recaptcha)/i) === null){ //refresh page to avoid cookie's popup console.log("cookie refresh"); location.reload(); } } else { TryToTrueDismissLogin(); } var ytdObserver = null; var videoObserver = null; var currentTime = 0; var waitToRun = 0; function dismissLoginRequest(){ //Check if Observer intercepted the login popup if(document.querySelector("paper-dialog") !== null && document.querySelector("paper-dialog>yt-upsell-dialog-renderer") !== null){ console.log("Google Shut Up: waited "+waitToRun*20+" ms"); var dismiss_button = document.getElementById("dismiss-button"); //Optimistic click if(dismiss_button !== null){ dismiss_button.click(); //Pending because this is not the end console.log("Google Shut Up: dismissed-login: pending"); localStorage.setItem("dismissed-login","pending"); ytdObserver.disconnect(); } } else { if(waitToRun < 4){ waitToRun++; setTimeout(function(){dismissLoginRequest();},20); } return; } waitToRun = 0; var video = document.querySelector(".html5-video-container>video"); if(video !== null && video.paused === true){ videoObserver.disconnect(); //play again the video, I don't know how youtube stop it video.click(); //restore last currentTime saved but it's not perferct video.currentTime = currentTime; currentTime = 0; } } window.addEventListener("load",function(){ //this workaround is for youtube only because it asks to login if(document.URL.match(/^https\:\/\/www\.youtube\.com/i) !== null){ //check if there is nothing to do if(localStorage.getItem("dismissed-login") === null || localStorage.getItem("dismissed-login") === "false"){ console.log("Google Shut Up: waiting login popup"); //Observe page's mutation to intercept login popup ytdObserver = new MutationObserver(dismissLoginRequest); ytdObserver.observe( document.querySelector("ytd-app"), {childList: true} ); //Observe player mutation because when youtube ask to login reset player currentTime //this solution is not perfect but it seems to work if(document.querySelector(".html5-video-player") !== null){ videoObserver = new MutationObserver(function(){ var videoCurrentTime = document.querySelector(".html5-video-container>video").currentTime; currentTime = (videoCurrentTime > currentTime) ? videoCurrentTime : currentTime; }); videoObserver.observe( document.querySelector(".html5-video-player"), {attributes: true} ); } }else{ console.log("Google Shut Up: nothing to do here"); } } },{once:true}); //This part is useless now but I maintain it as comment for further needed //commented because if script fails you can still manually allow cookies and dismiss login popup //var style = document.createElement("style"); //style.innerHTML = "#lb, iron-overlay-backdrop.opened[style^='z-index:'], ytd-consent-bump-lightbox[id='consent-bump']/*,paper-dialog.style-scope.ytd-popup-container[style*='z-index:']*/{display: none !important}"; /* if(document.URL.match(/https\:\/\/www\.youtube\.com/i) === null){ style.innerHTML += "html{overflow-y: scroll !important}"; } var headCheckInterval = window.setInterval( function (){ if(document.head !== null){ window.clearInterval(headCheckInterval); //no more needed //document.head.appendChild(style); } }, 20); */ })();