您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Comprehensive Spotify AdBlocker (audio, banners, premium prompts).
- // ==UserScript==
- // @name Spotify AdBlocker
- // @namespace http://tampermonkey.net/
- // @version 3.0
- // @description Comprehensive Spotify AdBlocker (audio, banners, premium prompts).
- // @author Plancy
- // @match https://open.spotify.com/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (async function () {
- 'use strict';
- const queryAsync = (query, interval = 250) => new Promise(resolve => {
- const checkInterval = setInterval(() => {
- const element = document.querySelector(query);
- if (element) {
- clearInterval(checkInterval);
- resolve(element);
- }
- }, interval);
- });
- const removeElements = selector => {
- document.querySelectorAll(selector).forEach(el => el.remove());
- };
- const handleAudioAds = () => {
- const audioAd = document.querySelector('audio[src*="spotify.com/ad"]');
- if (audioAd) {
- audioAd.src = "";
- audioAd.pause();
- }
- };
- const inject = ({ ctx, fn, transform }) => {
- const original = ctx[fn];
- ctx[fn] = function () {
- const result = original.apply(this, arguments);
- return transform ? transform.call(this, result, ...arguments) : result;
- };
- };
- const observer = new MutationObserver(() => {
- removeElements('[data-testid="ad-slot-container"], [class*="ad-"]');
- handleAudioAds();
- removeElements('.ButtonInner-sc-14ud5tc-0.fcsOIN');
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true,
- });
- const adRemovalInterval = setInterval(() => {
- removeElements('[data-testid="ad-slot-container"], [class*="ad-"]');
- handleAudioAds();
- removeElements('.ButtonInner-sc-14ud5tc-0.fcsOIN');
- }, 1000);
- const nowPlayingBar = await queryAsync(".now-playing-bar");
- const playButton = await queryAsync("button[title=Play], button[title=Pause]");
- let audio;
- inject({
- ctx: document,
- fn: "createElement",
- transform(result, type) {
- if (type === "audio") {
- audio = result;
- }
- return result;
- },
- });
- new MutationObserver(() => {
- if (audio && playButton && document.querySelector(".now-playing > a")) {
- audio.src = "";
- playButton.click();
- }
- }).observe(nowPlayingBar, {
- childList: true,
- subtree: true,
- });
- window.addEventListener('beforeunload', () => {
- observer.disconnect();
- clearInterval(adRemovalInterval);
- });
- console.log("Spotify AdBlocker Ultimate is active");
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址