// ==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 5.2 // @grant none // @downloadURL none // ==/UserScript== var hauptteil = document.querySelector('.lg\\:pt-8'); //entfernt unsichtbare Elemente, damit diese die Funktion des Scripts nicht beeinträchtigen if(window.location.href.indexOf("https://www.spiegel.de/suche/")== -1){ if (hauptteil) { var links10 = hauptteil.querySelectorAll('.lg\\:hidden, .hidden'); for(var link10 of links10) { var ist_video = link10.hasAttribute('data-video-el'); var ist_dropdown = link10.hasAttribute('data-accordion-el'); if (!ist_video && !ist_dropdown) { 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', 'a.swiper-slide', 'div.mb-4', 'section[data-area="block>video"] > div.z-10 > div.lg\\:pt-24', ]; //Liste mit Elementen, die entfernt werden var unnuetzes = [ '[data-flag-name="Spplus-paid"]', //Spiegel Plus Artikel '[data-flag-name="Spaudio-paid"]', //Spiegel Plus Podcasts '[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 'div[data-settings*="https://sportdaten.spiegel.de\"]', //Sportdaten / Spielergebnisse '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 'section[data-area="block>video"] > div.z-10 > div.lg\\:pt-24', //Menü unterhalb der Video-Sektion ]; var links55 = document.querySelectorAll(unnuetzes); for(var link0 of links55) { var containerElement55 = link0.closest(candidateSelectors); if (containerElement55) { containerElement55.classList.add("markiert"); } } //Sorgt für eine gute Reihenfolge / schließt Lücken, die von entfernten Elementen zurückgelassen würden var linksll = document.querySelectorAll(unnuetzes); for(var linkl of linksll) { var containerElement = linkl.closest(candidateSelectors); var areal = linkl.closest('[data-area^="block>topic"]'); if (areal) { if(containerElement && containerElement.parentElement){ var vierzwoelf = areal.querySelectorAll('.lg\\:w-4\\/12:not([data-area="article_teaser>news-s"]):not([data-area^="article_teaser>external"]):not(.markiert):not(.md\\:pl-24):not(.md\\:px-24):not(.lg\\:p-24):not(.lg\\:pl-24)'); var sechszwoelf = areal.querySelectorAll('.lg\\:w-6\\/12:not([data-area="article_teaser>news-s"]):not(.markiert):not(.md\\:pl-24):not(.md\\:px-24)'); var achtzwoelf = areal.querySelectorAll('.lg\\:w-8\\/12:not(.md\\:pl-24):not(.md\\:px-24)'); if (containerElement.classList.contains("lg:w-8/12")){ if (vierzwoelf && achtzwoelf){ if (vierzwoelf.length > 1) { containerElement.classList.add("markiert2"); vierzwoelf[vierzwoelf.length- 1].classList.add("markiert2"); vierzwoelf[vierzwoelf.length- 2].classList.add("markiert2"); var erster2 = areal.querySelectorAll('.markiert2'); if (erster2[0] === containerElement) { var container_hat_Linie2 = containerElement.querySelector('.border-separator-r'); var vierzwoelf_hat_Linie2 = vierzwoelf[vierzwoelf.length- 2].querySelector('.border-separator-r'); var vierzwoelf_hat_Linie3 = vierzwoelf[vierzwoelf.length- 1].querySelector('.border-separator-r'); var linie_linie = areal.querySelector('.border-separator-r'); if (!container_hat_Linie2 && vierzwoelf_hat_Linie2 && vierzwoelf_hat_Linie2.parentElement){ vierzwoelf_hat_Linie2.parentElement.removeChild(vierzwoelf_hat_Linie2); } if (!vierzwoelf_hat_Linie3) { var cloned_linie = linie_linie.cloneNode(true); vierzwoelf[vierzwoelf.length- 1].appendChild(cloned_linie); } if (container_hat_Linie2 && !vierzwoelf_hat_Linie2){ let knoten2 = document.createElement("div"); vierzwoelf[vierzwoelf.length- 2].appendChild(knoten2); knoten2.replaceWith(container_hat_Linie2); } containerElement.replaceWith(vierzwoelf[vierzwoelf.length- 1]); swapElements(vierzwoelf[vierzwoelf.length- 1],vierzwoelf[vierzwoelf.length- 2]); } if (erster2[1] === containerElement) { var container_hat_Linie1 = containerElement.querySelector('.border-separator-r'); var vierzwoelf_hat_Linie1 = vierzwoelf[vierzwoelf.length- 1].querySelector('.border-separator-r'); if (!container_hat_Linie1 && vierzwoelf_hat_Linie1 && vierzwoelf_hat_Linie1.parentElement){ vierzwoelf_hat_Linie1.parentElement.removeChild(vierzwoelf_hat_Linie1); } if (container_hat_Linie1 && !vierzwoelf_hat_Linie1){ var vierzwoelf_last1 = vierzwoelf[vierzwoelf.length- 1].lastElementChild; let knoten1 = document.createElement("div"); vierzwoelf[vierzwoelf.length- 1].insertBefore(knoten1, vierzwoelf_last1.nextElement); knoten1.replaceWith(container_hat_Linie1); } containerElement.replaceWith(vierzwoelf[vierzwoelf.length- 1]); } if (containerElement) { containerElement.classList.remove("markiert2"); } vierzwoelf[vierzwoelf.length- 1].classList.remove("markiert2"); vierzwoelf[vierzwoelf.length- 2].classList.remove("markiert2"); }}} if (containerElement.classList.contains("lg:w-4/12")){ if (!(containerElement.getAttribute("data-area") === 'article_teaser>news-s')){ if (vierzwoelf){ if (vierzwoelf.length > 0) { containerElement.classList.add("markiert2"); vierzwoelf[vierzwoelf.length- 1].classList.add("markiert2"); var erster = areal.querySelectorAll('.markiert2'); if (erster[0] === containerElement) { var container_hat_Linie = containerElement.querySelector('.border-separator-r'); var vierzwoelf_hat_Linie = vierzwoelf[vierzwoelf.length- 1].querySelector('.border-separator-r'); if (!container_hat_Linie && vierzwoelf_hat_Linie && vierzwoelf_hat_Linie.parentElement){ vierzwoelf_hat_Linie.parentElement.removeChild(vierzwoelf_hat_Linie); } if (container_hat_Linie && !vierzwoelf_hat_Linie){ var vierzwoelf_last = vierzwoelf[vierzwoelf.length- 1].lastElementChild; let knoten = document.createElement("div"); vierzwoelf[vierzwoelf.length- 1].insertBefore(knoten, vierzwoelf_last.nextElement); knoten.replaceWith(container_hat_Linie); } containerElement.replaceWith(vierzwoelf[vierzwoelf.length- 1]); } if (containerElement) { containerElement.classList.remove("markiert2"); } vierzwoelf[vierzwoelf.length- 1].classList.remove("markiert2"); }}}} if (containerElement.classList.contains("lg:w-6/12")){ if (!(containerElement.getAttribute("data-area") === 'article_teaser>news-s')){ if (sechszwoelf){ if (sechszwoelf.length > 0) { containerElement.classList.add("markiert2"); sechszwoelf[sechszwoelf.length- 1].classList.add("markiert2"); var erster1 = areal.querySelectorAll('.markiert2'); if (erster1[0] === containerElement) { var container_hat_Linie4 = containerElement.querySelector('.border-separator-r'); var sechszwoelf_hat_Linie4 = sechszwoelf[sechszwoelf.length- 1].querySelector('.border-separator-r'); if (!container_hat_Linie4 && sechszwoelf_hat_Linie4 && sechszwoelf_hat_Linie4.parentElement){ sechszwoelf_hat_Linie4.parentElement.removeChild(sechszwoelf_hat_Linie4); } if (container_hat_Linie4 && !sechszwoelf_hat_Linie4){ var sechszwoelf_last4 = sechszwoelf[sechszwoelf.length- 1].lastElementChild; let knoten4 = document.createElement("div"); sechszwoelf[sechszwoelf.length- 1].insertBefore(knoten4, sechszwoelf_last4.nextElement); knoten4.replaceWith(container_hat_Linie4); } containerElement.replaceWith(sechszwoelf[sechszwoelf.length- 1]); } if (containerElement) { containerElement.classList.remove("markiert2"); } sechszwoelf[sechszwoelf.length- 1].classList.remove("markiert2"); }}}} }} } function swapElements(elm1, elm2) { var parent1, next1; parent1 = elm1.parentNode; next1 = elm1.nextElementSibling; parent1.insertBefore(elm2, next1); } //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 = 0; for( index=0; index < artikel7.length; index++ ) { var test1 = artikel7[index].querySelector(unnuetzes); if (test1){ if (artikel7[index]){ artikel7[index].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, 600); setTimeout(suche_cleaner, 1500); }) } //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"))&&!(!containerElement.classList.contains("w-full")&& !containerElement.classList.contains("lg:w-full")&& nextS.classList.contains("w-full"))) { 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"))&&!(!containerElement.classList.contains("w-full")&& !containerElement.classList.contains("lg:w-full")&& previousS.classList.contains("w-full"))) { 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"))&&!(!containerElement.classList.contains("w-full")&& !containerElement.classList.contains("lg:w-full")&& nextS.classList.contains("w-full"))) { 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"))&&!(!containerElement.classList.contains("w-full")&& !containerElement.classList.contains("lg:w-full")&& previousS.classList.contains("w-full"))) { previousS.parentElement.removeChild(previousS); } }} } deleted3 = null; containerElement.parentElement.removeChild(containerElement); } } } //Liste mit Abschnitten, die entfernt werden (function() { 'use strict'; var abschnitte = [ 'div [data-settings*="newsletter"]', //Newsletter Angebote 'div [data-component="AffiliateBox"]', //Werbung 'div [data-area^="block>topic:spiegel-bestseller"]', //Spiegel Bestseller 'div [data-area^="block>bestsellerslider"]', //Spiegel Bestseller Menü 'div [data-area^="block>podlove"]', //Podcasts 'div [data-area="block>stocks"]', //Börse 'div [data-area="block>topic:produkte_im_test"]', //Testbericht-"Artikel" (also eigentlich Produktwerbung) 'div [data-area="group:manager_magazin"]', //Manager Magazin Artikel 'div [data-area*="_spiegel+"]', //Spiegel Plus Artikel 'div [data-area^="block>podcastbox"]', //Podcast Menü 'section[data-area="block>highlight:bild_des_tages"]', //Bilder des Tages 'section[data-area^="block>podlove"]', //Podcasts 'section[data-area="block>DeinSPIEGEL"]', //DEIN SPIEGEL (Spiegel Artikel für Kinder) 'section[data-area="latest-news"]', //Extra Hinweis auf neue Artikel 'section[data-area*="Podcast von bento"]', //Bento Podcast '[data-area="block>sportdaten"]', //Sportdaten bzw. Spielergebnisse '[data-contains-flags^="Spplus-conditional"]', //Spiegel Plus Symbol bei kostenlosen Artikeln '[data-area^="block>podcastslider"]', //Podcast Menü 'div[data-area="group:wirtschaft"] > .border-r', //entfernt eine Linie, mehr nicht 'div.mt-12', //Lesezeichen und Lesedauer Infoleiste 'div.mt-8 > .flex', //Lesezeichen und Lesedauer Infoleiste ]; var badSpans = document.querySelectorAll(abschnitte) 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, .RichText"); 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, .pl-18"); 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"]'); 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); } }; // behebt einen kleinen Fehler var anfang = document.querySelectorAll('.lg\\:top-32'); if (anfang) { for(var anfang1 of anfang) { anfang1.classList.remove("lg:top-32"); } } } //räumt ein paar übriggebliebene Linien auf if(window.location.href.indexOf("https://www.spiegel.de/suche/")== -1){ var links13 = document.querySelectorAll("div.border-separator-b"); for(var link13 of links13) { if (link13 && link13.parentElement){ if (link13.classList.contains("w-full")) { var prev13 = link13.previousElementSibling; var next13 = link13.nextElementSibling; var teaserlist = link13.closest('[data-area="article-teaser-list"]'); if ((!next13 || !prev13)&& link13.parentElement && !teaserlist) { link13.parentElement.removeChild(link13); } if (link13 && link13.parentElement && prev13 && !teaserlist) { if (prev13.classList.contains("z-20")|| prev13.classList.contains("top-0")){ link13.parentElement.removeChild(link13); } } if (link13 && link13.parentElement && teaserlist) { if (!link13.parentElement.nextElementSibling.hasAttribute("data-block-el")){ link13.parentElement.removeChild(link13); } } if (link13 && link13.parentElement && prev13 && !teaserlist) { if (prev13.classList.contains("border-separator-b")){ link13.parentElement.removeChild(link13); } } if (link13 && link13.parentElement && next13 && !teaserlist) { if (next13.classList.contains("border-separator-b")){ link13.parentElement.removeChild(link13); } } } } } } function entfernen(el1) { if(el1 && el1.parentElement){ el1.parentElement.removeChild(el1); }};