您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
no annoying spotify ads >:|
// ==UserScript== // @name SPOTIFY ADBLOCKER // @namespace https://tampermonkey.net/ // @version 1.5 // @description no annoying spotify ads >:| // @author snoopti // @match https://*.spotify.com/* // @grant none // @run-at document-start // @license MIT https://github.com/snoopti/SpotifyAdBlocker/blob/main/LICENSE // @icon https://www.google.com/s2/favicons?sz=64&domain=spotify.com // ==/UserScript== !(async function () { async function queryAsync(query) { return new Promise((resolve) => { const interval = setInterval(() => { const element = document.querySelector(query); if (element) { clearInterval(interval); return resolve(element); } }, 250); }); } function inject({ ctx, fn, middleware, transform }) { const original = ctx[fn]; ctx[fn] = function () { if (!middleware || middleware.call(this, ...arguments) !== false) { const result = original.call(this, ...arguments); return transform ? transform.call(this, result, ...arguments) : result; } }; } 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; }, }); let playInterval; new MutationObserver(() => { const link = document.querySelector(".now-playing > a"); if (link) { if (!audio) { return; } if (!playButton) { return; } audio.src = ""; playButton.click(); if (!playInterval) { playInterval = setInterval(() => { if ( !document.querySelector(".now-playing > a") && playButton.title === "Pause" ) { clearInterval(playInterval); playInterval = null; } else { playButton.click(); } }, 500); } } }).observe(nowPlayingBar, { characterData: true, childList: true, attributes: true, subtree: true, }); })(); (function () { "use strict"; function removeElementsByClassName(className) { let elements = document.getElementsByClassName(className); while (elements.length > 0) { elements[0].parentNode.removeChild(elements[0]); } } removeElementsByClassName( "ButtonInner-sc-14ud5tc-0 ksgXuD encore-over-media-set" ); removeElementsByClassName( "ButtonInner-sc-14ud5tc-0 kNmeGH encore-inverted-light-set Upqw01TOXETOmR5Td7Dj" ); const observer = new MutationObserver(function (mutations) { mutations.forEach(function () { removeElementsByClassName( "ButtonInner-sc-14ud5tc-0 ksgXuD encore-over-media-set" ); removeElementsByClassName( "ButtonInner-sc-14ud5tc-0 kNmeGH encore-inverted-light-set Upqw01TOXETOmR5Td7Dj" ); }); }); observer.observe(document.body, { childList: true, subtree: true }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址