// ==UserScript== // @name Customize Zeit Online // @namespace https://greasyfork.org/en/users/689160-georg-vogt // @version 4.3 // @description Entferne unerwünschte Artikel/Abschnitte aus Zeit Online // @author Georg Vogt // @match https://www.zeit.de/* // @grant GM_setValue // @grant GM_getValue // @run-at document-body // @downloadURL none // ==/UserScript== "use strict"; function hideNode(node) { try { node.style.display = "none"; // node.style.background = "red"; // debug } catch {}; } document.addEventListener("DOMContentLoaded", () => { // Create Settings on bottom function createCheckbox(text, id) { const div = document.createElement("div"); div.innerHTML = ` `; div.onclick = function () { GM_setValue(id, div.firstElementChild.checked); }; return div; } const main = document.querySelector("main"); const settings = document.createElement("div"); settings.innerHTML = "

Customize Zeit Online Einstellungen

"; settings.appendChild(createCheckbox("Blocke Zeit+", "tm_czo_zeitplus")); settings.appendChild(createCheckbox("Blocke Zett", "tm_czo_zett")); settings.appendChild(createCheckbox("Blocke Verlagsangebote", "tm_czo_verlag")); settings.appendChild(createCheckbox("Blocke Podcasts", "tm_czo_podcast")); settings.appendChild(createCheckbox("Blocke Videos", "tm_czo_video")); main.appendChild(settings); // bad single nodes const queries = new Map([ ["section.zon-teaser-printbox", "div.cp-region"], // Diese Woche in der ZEIT ["section[data-ct-context='buzzboard']", "div.cp-region"], // Beliebte Artikel ["section.frame.frame--quiz", "div.cp-area"], // Quiz ["section[data-ct-context='shop']", "div.cp-region"], // Shop ["section[data-ct-context='headed-spiele']", "div.cp-region"], // Spiele ["section[data-ct-context='newsticker']", "div.cp-region"], // Newsticker ["section[data-ct-context='printkiosk']", "div.cp-region"], // Jetzt für sie am Kiosk ["aside.newsletter-signup", "aside"], // Newsletter ["div.zg-wiegehtesihnen", "div"], // Stimmungsumfrage ["figure [href^='https://www.zeit.de/serie/die-kaenguru-comics']", "div.scrollable-wrapper"], // Känguru comic ]); // remove Zeit+ if (GM_getValue("tm_czo_zeitplus", true)) { const zplusArticles = main.querySelectorAll("article:not([data-zplus='zplus-dynamic']) svg.svg-symbol.zplus-logo"); zplusArticles.forEach(node => hideNode(node.closest("article"))); // remove sidebar Zeit+ const sideBoxes = document.querySelectorAll("article aside.topicbox"); for (const sideBox of sideBoxes) { if (sideBox.childNodes[1]?.childNodes[1]?.innerText == "DAS BESTE AUS Z+") { hideNode(sideBox); } } } // remove zett articles if (GM_getValue("tm_czo_zett", true)) { const zettArticles = main.querySelectorAll("article [href^='https://www.zeit.de/zett']"); zettArticles.forEach(node => hideNode(node.closest("article"))); } // remove Verlagsangebot if (GM_getValue("tm_czo_verlag", true)) { const verlagsangebotArticles = main.querySelectorAll("article.zon-teaser-standard.zon-teaser-standard--ad"); verlagsangebotArticles.forEach(node => hideNode(node)); } // remove podcasts if (GM_getValue("tm_czo_podcast", true)) { const podcasts = main.querySelectorAll(["article.zon-teaser-standard.zon-teaser-standard--podcast","article.zon-teaser-wide.zon-teaser-wide--podcast"]); podcasts.forEach(node => hideNode(node)); } // remove videos if (GM_getValue("tm_czo_video", true)) { const videos = main.querySelectorAll("article[data-video-id]"); videos.forEach(node => hideNode(node)); } // remove bad single nodes queries.forEach((node, query) => hideNode(main.querySelector(query)?.closest(node))); // remove regions without articles main.querySelectorAll("div.cp-region:not([style='display: none;'])").forEach(node => node.querySelector("article:not([style='display: none;'])")? "": hideNode(node)); // show corona dashbord main.querySelector("div.zg-corona").closest("div.cp-region").style.display = ""; }); // remove paywall footer const callback = function(mutationsList, observer) { for(const mutation of mutationsList) { for (const node of mutation.addedNodes) { if (node.className?.startsWith("paywall-footer")) { hideNode(node); observer.disconnect(); } } } }; const observerFooter = new MutationObserver(callback); observerFooter.observe(document.body, {childList: true});