NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name OLX Sponsored Begone // @name:pl Ukrywacz ofert sponsorowanych na OLX // @namespace https://github.com/b13kjack/OLX-Sponsored-Begone-Script // @version 2024-02-08 // @description Hides sponsored listings // @description:pl Ukrywa oferty sponsorowane // @author b13kjack // @license MIT // @downloadURL https://raw.githubusercontent.com/b13kjack/OLX-Sponsored-Begone-Script/main/olx-sponsored-begone.user.js // @updateURL https://raw.githubusercontent.com/b13kjack/OLX-Sponsored-Begone-Script/main/olx-sponsored-begone.user.js // @supportURL https://github.com/b13kjack/OLX-Sponsored-Begone-Script/issues // @match https://olx.pl/* // @match https://*.olx.pl/* // @match https://olx.pl* // @match https://*.olx.pl* // @icon https://www.google.com/s2/favicons?sz=64&domain=olx.pl // @grant none // ==/UserScript== let areSponsoredListingsHidden = true; function ensureToggleButtonExists() { if (!document.querySelector('[data-testid="grid-icon-duplicate"]')) { const existingButton = document.querySelector('[data-testid="grid-icon"]'); if (existingButton) { const newButton = document.createElement('button'); newButton.setAttribute('data-testid', 'grid-icon-duplicate'); newButton.textContent = 'Wyświetl/Ukryj Oferty Sponsorowane'; newButton.style.cssText = window.getComputedStyle(existingButton).cssText; existingButton.insertAdjacentElement('afterend', newButton); newButton.addEventListener('click', () => { areSponsoredListingsHidden = !areSponsoredListingsHidden; updateSponsoredListingsVisibility(); }); } } } function updateSponsoredListingsVisibility() { const listingsContainer = document.querySelector('[data-container-for-listings]'); if (areSponsoredListingsHidden) { document.querySelectorAll('[data-cy="l-card"]').forEach(card => { if (card.textContent.includes('Wyróżnione')) { card.style.display = 'none'; } }); } else { const sponsoredListings = []; document.querySelectorAll('[data-cy="l-card"]').forEach(card => { if (card.textContent.includes('Wyróżnione')) { card.style.display = ''; sponsoredListings.push(card); } }); sponsoredListings.reverse().forEach(card => { listingsContainer.insertBefore(card, listingsContainer.firstChild); }); } } setInterval(ensureToggleButtonExists, 5000); function handleNewListings(mutations) { mutations.forEach(mutation => { if (mutation.addedNodes.length) { updateSponsoredListingsVisibility(); } }); } const observer = new MutationObserver(handleNewListings); observer.observe(document.body, { childList: true, subtree: true }); ensureToggleButtonExists(); updateSponsoredListingsVisibility();