From 23f26f1406b4f43cc8a8a447969d36f43f2ee8a9 Mon Sep 17 00:00:00 2001 From: Joelmatic <78729990+TheRealJoelmatic@users.noreply.github.com> Date: Sat, 9 Dec 2023 15:27:43 +0000 Subject: [PATCH] New skipping method and Cleaned up code Basically added a way of skipping ads using the adCenter. Removed the josn paths thing as it was causing the video player block. I've tested and been using this version since yesterday and had no problems with seeing ads and have not been blocked. --- Youtube-Ad-blocker-Reminder-Remover.user.js | 118 +++++++------------- 1 file changed, 43 insertions(+), 75 deletions(-) diff --git a/Youtube-Ad-blocker-Reminder-Remover.user.js b/Youtube-Ad-blocker-Reminder-Remover.user.js index dca0bb5..a93472f 100644 --- a/Youtube-Ad-blocker-Reminder-Remover.user.js +++ b/Youtube-Ad-blocker-Reminder-Remover.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Remove Adblock Thing // @namespace http://tampermonkey.net/ -// @version 2.4 +// @version 2.5 // @description Removes Adblock Thing // @author JoelMatic // @match https://www.youtube.com/* @@ -24,31 +24,21 @@ const removePopup = true; // Enable debug messages into the console - const debug = true; + const debugMessages = true; // // CODE // + // If you have any suggestions, bug reports, + // or want to contribute to this userscript, + // feel free to create issues or pull requests in the GitHub repository. + // + // GITHUB: https://github.com/TheRealJoelmatic/RemoveAdblockThing - // Specify domains and JSON paths to remove - const domainsToRemove = [ - '*.youtube-nocookie.com/*' - ]; - const jsonPathsToRemove = [ - 'playerResponse.adPlacements', - 'playerResponse.playerAds', - 'adPlacements', - 'playerAds', - 'playerConfig', - 'auxiliaryUi.messageRenderers.enforcementMessageViewModel' - ]; - - // Observe config - const observerConfig = { - childList: true, - subtree: true - }; + // + // Varables used for the Popup Remover + // const keyEvent = new KeyboardEvent("keydown", { key: "k", code: "KeyK", @@ -68,24 +58,20 @@ //This is used to check if the video has been unpaused already let unpausedAfterSkip = 0; - if (debug) console.log("Remove Adblock Thing: Remove Adblock Thing: Script started"); - // Old variable but could work in some cases - window.__ytplayer_adblockDetected = false; + //Set everything up here + if (debugMessages) console.log("Remove Adblock Thing: Script started"); if(adblocker) addblocker(); if(removePopup) popupRemover(); - if(removePopup) observer.observe(document.body, observerConfig); // Remove Them pesski popups function popupRemover() { - removeJsonPaths(domainsToRemove, jsonPathsToRemove); setInterval(() => { const fullScreenButton = document.querySelector(".ytp-fullscreen-button"); const modalOverlay = document.querySelector("tp-yt-iron-overlay-backdrop"); const popup = document.querySelector(".style-scope ytd-enforcement-message-view-model"); const popupButton = document.getElementById("dismiss-button"); - // const popupButton2 = document.getElementById("ytp-play-button ytp-button"); const video1 = document.querySelector("#movie_player > video.html5-main-video"); const video2 = document.querySelector("#movie_player > .html5-video-container > video"); @@ -100,20 +86,20 @@ } if (popup) { - if (debug) console.log("Remove Adblock Thing: Popup detected, removing..."); + if (debugMessages) console.log("Remove Adblock Thing: Popup detected, removing..."); if(popupButton) popupButton.click(); - // if(popupButton2) popupButton2.click(); + popup.remove(); unpausedAfterSkip = 2; fullScreenButton.dispatchEvent(mouseEvent); - + setTimeout(() => { fullScreenButton.dispatchEvent(mouseEvent); }, 500); - if (debug) console.log("Remove Adblock Thing: Popup removed"); + if (debugMessages) console.log("Remove Adblock Thing: Popup removed"); } // Check if the video is paused after removing the popup @@ -128,10 +114,10 @@ // undetected adblocker method function addblocker() { - setInterval(() => - { - const skipBtn = document.querySelector('.videoAdUiSkipButton,.ytp-ad-skip-button'); + setInterval(() =>{ const ad = [...document.querySelectorAll('.ad-showing')][0]; + + const skipBtn = document.querySelector('.videoAdUiSkipButton,.ytp-ad-skip-button'); const sidAd = document.querySelector('ytd-action-companion-ad-renderer'); const displayAd = document.querySelector('div#root.style-scope.ytd-display-ad-renderer.yt-simple-endpoint'); const sparklesContainer = document.querySelector('div#sparkles-container.style-scope.ytd-promoted-sparkles-web-renderer'); @@ -145,11 +131,24 @@ if (ad) { + if (debugMessages) console.log("Remove Adblock Thing: Found Ad"); + const video = document.querySelector('video'); - video.playbackRate = 10; - video.volume = 0; - video.currentTime = video.duration; - skipBtn?.click(); + const openAdCenterButton = document.querySelector('.ytp-ad-button-icon'); + const blockAdButton = document.querySelector('[label="Block ad"]'); + const blockAdButtonConfirm = document.querySelector('.Eddif [label="CONTINUE"] button'); + + if (video) video.playbackRate = 10; + if (video) video.volume = 0; + if (video) video.currentTime = video.duration || 0; + + if (video) skipBtn?.click(); + + openAdCenterButton?.click(); + blockAdButton?.click(); + blockAdButtonConfirm?.click(); + + if (debugMessages) console.log("Remove Adblock Thing: skipped Ad (✔️)"); } sidAd?.remove(); @@ -162,13 +161,14 @@ sponsor?.forEach((element) => { if (element.getAttribute("id") === "panels") { element.childNodes?.forEach((childElement) => { - if (childElement.data.targetId && childElement.data.targetId !=="engagement-panel-macro-markers-description-chapters") + if (childElement.data.targetId && childElement.data.targetId !=="engagement-panel-macro-markers-description-chapters"){ //Skipping the Chapters section childElement.remove(); - }); - } else { - element.remove(); - } + } + }); + } else { + element.remove(); + } }); nonVid?.click(); }, 50) @@ -181,39 +181,7 @@ // Simulate pressing the "k" key to unpause the video document.dispatchEvent(keyEvent); unpausedAfterSkip = 0; - if (debug) console.log("Remove Adblock Thing: Unpaused video using 'k' key"); + if (debugMessages) console.log("Remove Adblock Thing: Unpaused video using 'k' key"); } else if (unpausedAfterSkip > 0) unpausedAfterSkip--; } - function removeJsonPaths(domains, jsonPaths) - { - const currentDomain = window.location.hostname; - if (!domains.includes(currentDomain)) return; - - jsonPaths.forEach(jsonPath => { - const pathParts = jsonPath.split('.'); - let obj = window; - let previousObj = null; - let partToSetUndefined = null; - - for (const part of pathParts) { - if (obj.hasOwnProperty(part)) { - previousObj = obj; // Keep track of the parent object. - partToSetUndefined = part; // Update the part that we may set to undefined. - obj = obj[part]; - } else { - break; // Stop when we reach a non-existing part. - } - } - - // If we've identified a valid part to set to undefined, do so. - if (previousObj && partToSetUndefined !== null) { - previousObj[partToSetUndefined] = undefined; - } - }); - } - // Observe and remove ads when new content is loaded dynamically - const observer = new MutationObserver(() => - { - removeJsonPaths(domainsToRemove, jsonPathsToRemove); - }); })();