This repository has been archived by the owner on May 13, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 70
/
adblock.js
90 lines (73 loc) · 3.36 KB
/
adblock.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//@ts-check
// NAME: adblock
// AUTHOR: CharlieS1103
// DESCRIPTION: Block all audio and UI ads on Spotify
/// <reference path="../../spicetify-cli/globals.d.ts" />
(function adblock() {
const { Platform } = Spicetify;
if (!Platform) {
setTimeout(adblock, 300)
return
}
const styleSheet = document.createElement("style")
styleSheet.innerHTML =
`
.MnW5SczTcbdFHxLZ_Z8j, .WiPggcPDzbwGxoxwLWFf, .ReyA3uE3K7oEz7PTTnAn, .main-leaderboardComponent-container, .sponsor-container, a.link-subtle.main-navBar-navBarLink.GKnnhbExo0U9l7Jz2rdc, button[title="Upgrade to Premium"], button[aria-label="Upgrade to Premium"], .main-topBar-UpgradeButton, .main-contextMenu-menuItem a[href^="https://www.spotify.com/premium/"] {
display: none !important;
}
`
document.body.appendChild(styleSheet);
delayAds();
const billboard = Spicetify.Platform.AdManagers.billboard.displayBillboard;
Spicetify.Platform.AdManagers.billboard.displayBillboard = function (arguments) {
Spicetify.Platform.AdManagers.billboard.finish()
// hook before call
var ret = billboard.apply(this, arguments);
// hook after call
Spicetify.Platform.AdManagers.billboard.finish()
const observer = new MutationObserver((mutations, obs) => {
const billboardAd = document.getElementById('view-billboard-ad');
if (billboardAd) {
Spicetify.Platform.AdManagers.billboard.finish()
obs.disconnect();
return;
}
});
observer.observe(document, {
childList: true,
subtree: true
});
return ret;
};
async function delayAds() {
if (!Spicetify.Platform?.UserAPI) {
setTimeout(delayAds, 300);
return;
}
const productState = Spicetify.Platform.UserAPI._product_state || Spicetify.Platform.UserAPI._product_state_service;
await productState.putOverridesValues({ pairs: { ads: "0", catalogue: "premium", product: "premium", type: "premium" } });
Spicetify.Platform.AdManagers.audio.audioApi.cosmosConnector.increaseStreamTime(-100000000000);
Spicetify.Platform.AdManagers.billboard.billboardApi.cosmosConnector.increaseStreamTime(-100000000000);
await Spicetify.Platform.AdManagers.audio.disable();
await Spicetify.Platform.AdManagers.billboard.disable();
await Spicetify.Platform.AdManagers.leaderboard.disableLeaderboard();
await Spicetify.Platform.AdManagers.sponsoredPlaylist.disable();
console.log("[Adblock] Ads disabled", Spicetify.Platform.AdManagers);
};
setInterval(delayAds, 30 * 10000);
(async function disableEsperantoAds() {
if (!Spicetify.Platform?.UserAPI) {
setTimeout(disableEsperantoAds, 300);
return;
}
try{
const productState = Spicetify.Platform.UserAPI._product_state || Spicetify.Platform.UserAPI._product_state_service;
await productState.putOverridesValues({ pairs: { ads: "0", catalogue: "premium", product: "premium", type: "premium" } });
productState.subValues({ keys: ["ads"] }, () => {
delayAds();
});
}catch(e){
console.log("[Adblock] Product State does not exist", e);
}
})();
})()