Hides "who to follow" and "trending now" spam on Twitter's web app by scanning the page for it every second.
// ==UserScript==
// @name Twitter spam hider
// @description Hides "who to follow" and "trending now" spam on Twitter's web app by scanning the page for it every second.
// @author Gercomsci
// @namespace https://greasyfork.org/de/users/771568-gercomsci
// @version 1.0 beta (2022-02-09)
// @include https://*.twitter.com/*
// @include https://twitter.com/*
// @include https://mobile.twitter.com/*
// (redundant URLs to ensure for compatibility)
// @grant none
// @license GPL 3.0
// ==/UserScript==
function hideTwitterSpam() {
// Check if element exists, to prevent an error from terminating the loop.
if ( document.querySelectorAll('[aria-label="Who to follow"]')[0] /* Check if exists */
&& document.querySelectorAll('[aria-label="Who to follow"]')[0].parentNode.style.display != 'none' ) /* Check if not already hidden to prevent repeated console output */ {
console.log ("Hiding \"Who to follow\" spam")
document.querySelectorAll('[aria-label="Who to follow"]')[0].parentNode.style.display = 'none'; // hide
}
if ( document.querySelectorAll('[aria-label="Timeline: Trending now"]')[0] /* Check if exists */
&& document.querySelectorAll('[aria-label="Timeline: Trending now"]')[0].parentNode.style.display != 'none' ) /* Check if not already hidden to prevent repeated console output */ {
console.log ("Hiding \"Trends for you\" spam")
document.querySelectorAll('[aria-label="Timeline: Trending now"]')[0].parentNode.style.display = 'none'; // hide
}
}
hideTwitterSpamInterval = setInterval(hideTwitterSpam, 1000); // Searches for spam and hides it every second.
// This is the best possible solution on a ReactJS-based site, since it uses randomized CSS class names, meaning the only way to hide spam selectively is to make JavaScript code locate it on the page continuously, whack-a-mole style.