Greasy Fork

spiegel.de: entferne störende Elemente

Entfernt ausgewählte Elemente von Spiegel Online

目前为 2021-04-06 提交的版本。查看 最新版本

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