NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Last.fm PRO adblock // @namespace Violentmonkey Scripts // @match https://www.last.fm/* // @grant none // @icon https://www.google.com/s2/favicons?domain=last.fm // @version 1.0 // @author Alenga // @description - // @license GPL-3.0-only // ==/UserScript== /* GPL-3.0 License Copyright (C) [year] [your name] This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ (function() { 'use strict'; // Function to remove elements by CSS selector const removeElements = (selector) => { const elements = document.querySelectorAll(selector); elements.forEach((element) => { element.remove(); // Removes the element from the DOM }); }; // Function to remove specific blocks by their selectors const removeBlocks = () => { removeElements('.buffer-2'); removeElements('.secondary-nav-item--events'); removeElements('.play-this-track-playlink--itunes'); removeElements('.resource-external-link--apple-music'); removeElements('.subscribe-cta'); removeElements('.secondary-nav-item-link--active'); removeElements('.listening-report-row.listening-report-row--centered.listening-report-row--upsell'); removeElements('.mpu-subscription-upsell'); removeElements('.auth-dropdown-menu-item.auth-dropdown-pro-text'); // Add more selectors here if needed }; // MutationObserver to watch for changes in the DOM (e.g., new content is added dynamically) const observer = new MutationObserver(() => { // When new content is added or the page is updated, remove unwanted blocks removeBlocks(); }); // Start observing the body of the document for added child elements observer.observe(document.body, { childList: true, subtree: true }); // Initial call to remove elements when the page first loads removeBlocks(); })();