Unsubscribes from all subreddits by targeting <a> elements.
// ==UserScript==
// @name Unsubscribe All Subreddits (Target Links)
// @namespace http://tampermonkey.net/
// @version 2.4
// @description Unsubscribes from all subreddits by targeting <a> elements.
// @author cross7139
// @match https://www.reddit.com/subreddits
// @grant none
// @license MIT
// ==/UserScript==
(function () {
'use strict';
console.log("Script started: Looking for 'Leave' links...");
const MAX_RETRIES = 50;
let retryCount = 0;
// Function to locate and click 'Leave' links
function findAndClickLeaveLinks() {
// Select all <a> tags with the 'option active remove login-required' class
const links = document.querySelectorAll('a.option.active.remove.login-required');
if (links.length > 0) {
console.log(`${links.length} 'Leave' links found.`);
links.forEach((link, index) => {
setTimeout(() => {
try {
console.log(`Clicking 'Leave' link for subreddit #${index + 1}`);
link.click();
console.log(`Successfully clicked 'Leave' link for subreddit #${index + 1}`);
} catch (err) {
console.error(`Error clicking 'Leave' link for subreddit #${index + 1}:`, err);
}
}, index * 1000); // 1-second delay to prevent throttling
});
} else if (retryCount < MAX_RETRIES) {
retryCount++;
console.warn(
`Retrying to find 'Leave' links (#${retryCount}/${MAX_RETRIES}) in 2 seconds...`
);
setTimeout(findAndClickLeaveLinks, 2000); // Retry after 2 seconds
} else {
console.error("Max retries reached. Could not find 'Leave' links.");
}
}
// Debugging: Log all <a> elements periodically
setInterval(() => {
const allLinks = document.querySelectorAll('a');
console.log(`Total links on page: ${allLinks.length}`);
allLinks.forEach((link, idx) => {
console.log(
`Link #${idx}: Text = "${link.textContent.trim()}" | Classes = "${link.className}"`
);
});
}, 5000); // Logs every 5 seconds
// Start the process
findAndClickLeaveLinks();
})();