Skip to content

Instantly share code, notes, and snippets.

@thesanjeetc
Last active November 12, 2020 16:12
Show Gist options
  • Save thesanjeetc/f2b695ce3b3aec7c12a05d725107473c to your computer and use it in GitHub Desktop.
Save thesanjeetc/f2b695ce3b3aec7c12a05d725107473c to your computer and use it in GitHub Desktop.
// When an ad is detected, this script mutes the Spotify music player and plays custom audio files instead
// Paste in console of web app / PWA
// Add your own audio file URLs below to replace the ads
// Or empty to play nothing
//-------------------------------------------------------//
let tunes = [
"https://cdn2.melodyloops.com/mp3/preview-remembering-burian-1262.ogg",
"https://cdn2.melodyloops.com/mp3/preview-yoga-and-zen-1308.ogg",
"https://cdn2.melodyloops.com/mp3/preview-rise-of-a-hero-1138.ogg",
];
//-------------------------------------------------------//
let muteSelector = ".spoticon-volume-16.control-button.volume-bar__icon";
let disabledSkipSelector = ".spoticon-skip-forward-16.control-button--disabled";
let muteButton = document.querySelector(muteSelector);
let tune = new Audio();
let muted = false;
const waitForAd = () => {
let skipButton = document.querySelector(disabledSkipSelector);
if (skipButton != null) {
setTimeout(() => waitForAd(), 200);
} else {
tune.pause();
muted = false;
muteButton.click();
}
};
const playTune = () => {
if (tunes.length != 0) {
tune.src = tunes[Math.floor(Math.random() * tunes.length)];
tune.currentTime = 0;
tune.play();
tune.onended = () => {
playTune();
};
}
};
setInterval(() => {
if (!muted) {
let skipButton = document.querySelector(disabledSkipSelector);
if (skipButton != null) {
muteButton.click();
muted = true;
playTune();
waitForAd();
}
}
}, 200);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment