// ==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
// ==/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);
}};