-
-
Save mrkskwsnck/5633f0c64947458b73a8c9f742cda3b8 to your computer and use it in GitHub Desktop.
Script for Userscripts browser extension to skip ads on Youtube.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Skip YouTube Ads | |
// @description This is your new file, start writing code | |
// @match *://*.youtube.com/* | |
// ==/UserScript== | |
function skipAd() { | |
const adPlaying = document.body.querySelector(".ad-showing"); | |
if (!adPlaying) { | |
console.info("ad not found"); | |
return; | |
} | |
const button = document.querySelector(".ytp-ad-skip-button-text"); | |
if (button) { | |
button?.click(); | |
console.info("skip ad button clicked"); | |
return; | |
} | |
const video = document.querySelector("video"); | |
if (video) { | |
video.currentTime = video.duration - 1; | |
video.playbackRate = 20; | |
console.info("ad video skipped"); | |
} | |
} | |
function connect() { | |
const targetNode = document.body; | |
// Options for the observer (which mutations to observe) | |
const config = { attributes: true, childList: true, subtree: true }; | |
observer.observe(targetNode, config); | |
} | |
// Callback function to execute when mutations are observed | |
function callback(mutationsList, observer) { | |
// Use traditional 'for loops' for IE 11 | |
for (const mutation of mutationsList) { | |
if (mutation.type === "attributes" && mutation.attributeName === "class" && mutation.target.classList.contains("ad-showing")) { | |
observer.disconnect(); | |
console.info("skipping ad …"); | |
setTimeout(skipAd, 500); | |
setTimeout(connect, 2000); | |
} | |
} | |
}; | |
// Create an observer instance linked to the callback function | |
const observer = new MutationObserver(callback); | |
// Start observing the target node for configured mutations | |
connect(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment