// ==UserScript== // @name spiegel.de: entferne störende Elemente // @description Entfernt ausgewählte Elemente von Spiegel Online // @namespace https://greasyfork.org/de/users/541444-critias // @match https://www.spiegel.de/ // @match https://www.spiegel.de/* // @version 3.0 // @grant none // @downloadURL none // ==/UserScript== var hauptteil = document.querySelector('.lg\\:pt-8'); //entfernt versteckte Elemente von der Startseite, damit diese später nicht stören if(window.location.href === "https://www.spiegel.de/"){ var links10 = hauptteil.querySelectorAll('.lg\\:hidden, .hidden'); for(var link10 of links10) { entfernen(link10); } }; var candidateSelectors = [ 'article.py-16', 'div [data-area="article_teaser"]', 'li.py-16', 'article > article.lg\\:py-24', 'div.sm\\:-mt-16', 'div.pb-16', 'ul > li', 'div.mb-16', 'div.z-10', 'main.z-20 > section.relative', 'a.swiper-slide', 'div.mb-4', ]; //Liste mit Elementen, die entfernt werden var unnuetzes = [ '[data-contains-flags*="conditional"]', //Spiegel Plus Artikel + andere Bezahlartikel '[data-flag-name*="paid"]', //Spiegel Plus Artikel + andere Bezahlartikel '[data-conditional-flag*="paid"]', //Spiegel Plus Artikel + andere Bezahlartikel '[data-target-id="content-marketing"]', //Werbung für Eigenprodukte 'div [aria-label^=Anzeige]', //Werbung, die der Adblocker nicht erkennt 'div [aria-label="Die Bilder des Tages"]', //Bilder des Tages 'div [data-target-id="digital-abo-ew"]', //Newsletter Angebote 'path[d^="M7.103 4.003c1.144 0 1.776.816"]', //manager magazin Artikel 'a[href^=\'https://www.spiegel.de/tests\']', //Testbericht-"Artikel" (also eigentlich Produktwerbung) 'a[href^=\'https://www.spiegel.de/thema/test_und_produkte\']', //Testbericht-"Artikel" (also eigentlich Produktwerbung) 'a[href^=\'https://www.spiegel.de/fotostrecke/bilder-des-tages\']', //Bilder des Tages 'a[href^=\'https://www.spiegel.de/deinspiegel/\']', //Dein SPIEGEL Artikel für Kinder 'a[href^=\'https://www.bento.de\']', //Bento Artikel 'a[href^=\'http://www.bento.de\']', //Bento Artikel 'a[href^=\'https://www.manager-magazin.de\']', //manager magazin Artikel ]; //Sorgt dafür, dass die Suche-Funktion weiterhin funktioniert if(window.location.href.indexOf("https://www.spiegel.de/suche/")== -1){ cleaner(); }else{ function suche_cleaner() { var artikel7 = document.querySelectorAll('.lg\\:py-24'); let index = 1; for( index=1; index < artikel7.length; index++ ) { var test1 = artikel7[index].querySelector(unnuetzes); if (test1){ if (artikel7[index] && artikel7[index].parentElement){ artikel7[index].parentElement.remove(); } } } } setTimeout(suche_cleaner, 800); history.pushState = ( f => function pushState(){ var ret = f.apply(this, arguments); window.dispatchEvent(new Event('pushstate')); window.dispatchEvent(new Event('locationchange')); return ret; })(history.pushState); history.replaceState = ( f => function replaceState(){ var ret = f.apply(this, arguments); window.dispatchEvent(new Event('replacestate')); window.dispatchEvent(new Event('locationchange')); return ret; })(history.replaceState); window.addEventListener('popstate',()=>{ window.dispatchEvent(new Event('locationchange')) }); window.addEventListener('locationchange', function(){ setTimeout(suche_cleaner, 800); }) } //Funktion zum Entfernen störender Elemente function cleaner() { var links = document.querySelectorAll(unnuetzes); for(var link of links) { var containerElement = link.closest(candidateSelectors); if(containerElement && containerElement.parentElement){ var nextS = containerElement.nextElementSibling; var previousS = containerElement.previousElementSibling; if(window.location.href === "https://www.spiegel.de/"){ if (nextS && nextS.parentElement){ if (nextS.classList.contains("border-separator-b")| nextS.classList.contains("border-separator-r")) { nextS.parentElement.removeChild(nextS); var deleted = 1; } } if (!deleted) { if (previousS && previousS.parentElement){ if (previousS.classList.contains("border-separator-b")| previousS.classList.contains("border-separator-r")) { previousS.parentElement.removeChild(previousS); var deleted1 = 1; } }} if (!deleted & !deleted1) { var parent1 = containerElement.parentElement; var parent1S = parent1.previousElementSibling; if (parent1S && parent1S.parentElement){ if ((parent1S.classList.contains("border-separator-b")| parent1S.classList.contains("border-separator-r"))& !containerElement.classList.contains("border-separator-b")) { parent1S.parentElement.removeChild(parent1S); var deleted2 = 1; }}} if (!deleted & !deleted1 & !deleted2) { var parent1N = parent1.nextElementSibling; if (parent1N && parent1N.parentElement){ if (parent1N.classList.contains("border-separator-b")| parent1N.classList.contains("border-separator-r")) { parent1N.parentElement.removeChild(parent1N); }}} deleted = null; deleted1 = null; deleted2 = null; }else{ if (nextS && nextS.parentElement){ if (nextS.classList.contains("border-separator-b")& !nextS.classList.contains("py-16")& !nextS.classList.contains("pb-16")) { nextS.parentElement.removeChild(nextS); var deleted3 = 1; } } if (!deleted3) { if (previousS && previousS.parentElement){ if (previousS.classList.contains("border-separator-b")& !previousS.classList.contains("py-16")& !previousS.classList.contains("pb-16")) { previousS.parentElement.removeChild(previousS); } }} } deleted3 = null; containerElement.parentElement.removeChild(containerElement); } } } //Liste mit Abschnitten, die entfernt werden (function() { 'use strict'; var badSpans = document.querySelectorAll(` div [data-settings*="newsletter"], div [data-component="AffiliateBox"], div [data-area^="block>topic:spiegel-bestseller"], div [data-area^="block>bestsellerslider"], div [data-area^="block>podlove"], div [data-area="block>stocks"], div [data-area="block>topic:produkte_im_test"], div [data-area="group:manager_magazin"], div [data-area*="_spiegel+"], section[data-area="block>highlight:bild_des_tages"], section[data-area="block>sportdaten"], section[data-area^="block>podlove"], section[data-area="block>DeinSPIEGEL"], section[data-area="latest-news"], section[data-area*="Podcast von bento"], [data-area^="block>podcastslider"]`) badSpans.forEach((s) => { if(s !== undefined) { s.remove() } }) })(); //entfernt den Abschnitt "Top bei SPIEGEL+" var elList = document.querySelectorAll("div.leading-tight"); elList.forEach(function(el) { if (el.innerHTML.indexOf("Top bei SPIEGEL+") !== -1) { var containerElement3 = el.closest(candidateSelectors); var nextS2 = containerElement3.nextElementSibling; if(containerElement3 && containerElement3.parentElement){ if (nextS2 && nextS2.parentElement){ if (nextS2.classList.contains("border-separator-b")) { nextS2.parentElement.removeChild(nextS2); } } containerElement3.parentElement.removeChild(containerElement3); } } }); //entfernt Hyperlinks, die auf Spiegel Plus Artikel / HBM Plus Artikel / die generische Thema-Seite verlinken, ohne den Text zu entstellen. var links4 = document.querySelectorAll(".RichText a"); links4.forEach(function(el) { if (el.getAttribute("data-link-flag") === 'sponpaid' | el.getAttribute("data-link-flag") === 'paid') { el.replaceWith(...el.childNodes); } if (el.getAttribute("data-link-flag") === 'hbmpaid') { el.replaceWith(...el.childNodes); } if (el.getAttribute("href").indexOf ("www.spiegel.de/thema/")!== -1) { el.replaceWith(...el.childNodes); } }); //entfernt den "Mehr ztum Thema" Abschnitt aus Artikeln, wenn alle vorgeschlagenen Artikel von Spiegel Plus sind. Selbst dann, wenn der Abschnitt irgend einen anderen Namen trägt. var links5 = document.querySelectorAll("span.leading-tight"); for(var link5 of links5) { if ((link5.innerHTML.indexOf("Mehr lesen über") == -1)&(link5.innerHTML.indexOf("Verwandte Artikel") == -1)&(link5.innerHTML !== null)) { var group = link5.closest(".mx-auto"); var artikel = group.querySelector(".items-center"); if (!artikel){ entfernen(group); } } }; //entfernt den "Verwandte Artikel" Abschnitt aus Artikeln, wenn alle vorgeschlagenen Artikel von Spiegel Plus sind und daher bereits entfernt wurden. var links6 = document.querySelectorAll("span.leading-tight"); for(var link6 of links6) { if (link6.innerHTML.indexOf("Verwandte Artikel") !== -1) { var group2 = link6.closest(".w-full"); var artikel2 = group2.querySelector(".pl-12"); if (!artikel2){ entfernen(link6); } } }; if(window.location.href === "https://www.spiegel.de/"){ // entfernt etwaige Abschnitte von der Hauptseite, wenn alle enthaltenen Artikel von Spiegel Plus sind und daher bereits entfernt wurden. var links8 = document.querySelectorAll('[data-area^="block>topic"]'); for(var link8 of links8) { var artikel4 = link8.querySelector('div [data-area^="article_teaser>news"]'); if (!artikel4){ entfernen(link8); } }; // entfernt etwaige Rubriken unter "Alle Rubriken", wenn alle enthaltenen Artikel von Spiegel Plus sind und daher bereits entfernt wurden. var links9 = document.querySelectorAll('div[data-area^="group:"]'); for(var link9 of links9) { var artikel5 = link9.querySelector(".font-bold"); if (!artikel5){ entfernen(link9); } }; //entfernt eine Linie, mehr nicht var links11 = document.querySelector('div[data-area="group:wirtschaft"]'); var linie = links11.querySelector(".border-r"); entfernen(linie); // behebt einen kleinen Fehler var anfang = hauptteil.querySelector('.lg\\:top-32'); if (anfang) { anfang.classList.remove("lg:top-32"); } } var candidateSelectors4 = [ 'div.swiper-container', ]; //entfernt Menü unterhalb der Video-Sektion var links12 = document.querySelectorAll(' a[href^=\'https://www.spiegel.de/thema/auto-tests-im-video/\']'); for(var link12 of links12) { var containerElement6 = link12.closest(candidateSelectors4); var linie2 = containerElement6.previousElementSibling; if(containerElement6 && containerElement6.parentElement){ if (linie2 && linie2.parentElement){ if (linie2.classList.contains("border-separator-b")) { linie2.parentElement.removeChild(linie2); } } containerElement6.parentElement.removeChild(containerElement6); } }; function entfernen(el1) { if(el1 && el1.parentElement){ el1.parentElement.removeChild(el1); }};