Created
November 30, 2024 20:09
-
-
Save brunolm/ef550af45ed65c70487f723999d58b49 to your computer and use it in GitHub Desktop.
Block Ad accounts on X (Twitter) | UserScript | Tampermonkey
This file contains hidden or 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 Block Ad accounts on X (Twitter) | |
// @namespace http://tampermonkey.net/ | |
// @version 2024-11-30 | |
// @description try to take over the world! | |
// @author You | |
// @match https://x.com/* | |
// @icon https://www.google.com/s2/favicons?sz=64&domain=x.com | |
// @grant none | |
// ==/UserScript== | |
async function blockAdvertisers() { | |
const ads = Array.from( | |
document.querySelectorAll('[data-testid="tweet"] [style*="rgb"]') | |
).filter((ad) => /^Ad$/.test(ad.innerText)); | |
for (const ad of ads) { | |
const tweet = ad.closest('[data-testid="tweet"]'); | |
localStorage.__blockAdvertisers = localStorage.__blockAdvertisers || "{}"; | |
const btn = | |
ad.parentElement.parentElement.parentElement.querySelector("button"); | |
btn.click(); | |
await new Promise((r) => setTimeout(r, 100)); | |
const menu = document.querySelector('[role="menu"]'); | |
const blockBtn = Array.from( | |
menu.querySelectorAll('div[role="menuitem"]') | |
).find((d) => /Block @/.test(d.innerText)); | |
blockBtn.click(); | |
await new Promise((r) => setTimeout(r, 100)); | |
const okBtn = document.querySelector('[role="group"] button'); | |
okBtn.click(); | |
await new Promise((r) => setTimeout(r, 1000)); | |
localStorage.__blockAdvertisers = JSON.stringify({ | |
...JSON.parse(localStorage.__blockAdvertisers), | |
[tweet.querySelector("a").href.slice(1)]: | |
true, | |
}); | |
const maybeLater = Array.from(document.querySelectorAll("button")).find( | |
(x) => /Maybe later/.test(x.innerText) | |
); | |
maybeLater?.click(); | |
await new Promise((r) => setTimeout(r, 100)); | |
} | |
} | |
blockAdvertisers(); | |
setInterval(() => { | |
blockAdvertisers(); | |
}, 5000); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment