您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
hide articles matching some keywords / coded in cooperation with perplexity ai ;) To add words see menue of script
// ==UserScript== // @name printables_hide_by_keywords // @namespace https://gf.qytechs.cn/de/users/157797-lual // @version 0.2 // @description hide articles matching some keywords / coded in cooperation with perplexity ai ;) To add words see menue of script // @author lual // @match https://www.printables.com/* // @icon https://icons.duckduckgo.com/ip2/prusaprinters.org.ico // @license MIT // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // ==/UserScript== // (function() { 'use strict'; //////////////////////////////////////////////////////////////////// // wortliste im browser verwalten... // // Initiale Wortliste let wordsToHide = GM_getValue('wordsToHide', ['gridfinity', 'benchy']); // Speichern der initialen Liste, falls sie noch nicht existiert if (!GM_getValue('wordsToHide')) { GM_setValue('wordsToHide', wordsToHide); } function addWord() { const newWord = prompt('Geben Sie ein neues Wort zum Verbergen ein:'); if (newWord && !wordsToHide.includes(newWord)) { wordsToHide.push(newWord); GM_setValue('wordsToHide', wordsToHide); alert(`"${newWord}" wurde zur Liste hinzugefügt.`); loadWords(); forgetCheckedArticles(); hideAndReplaceArticles(); } } function removeWord() { const wordToRemove = prompt('Geben Sie das zu entfernende Wort ein:'); const index = wordsToHide.indexOf(wordToRemove); if (index > -1) { wordsToHide.splice(index, 1); GM_setValue('wordsToHide', wordsToHide); alert(`"${wordToRemove}" wurde aus der Liste entfernt. (Bitte Seite neu laden (F5))`); loadWords(); forgetCheckedArticles(); } else { alert(`"${wordToRemove}" wurde nicht in der Liste gefunden.`); } } function showWords() { alert('Aktuelle Liste der zu verbergenden Wörter:\n' + wordsToHide.join(', ')); } GM_registerMenuCommand('Wort hinzufügen', addWord); GM_registerMenuCommand('Wort entfernen', removeWord); GM_registerMenuCommand('Wortliste anzeigen', showWords); // Hauptfunktion zum Verbergen der Wörter function loadWords() { // Holen Sie sich die aktuelle Liste der zu verbergenden Wörter wordsToHide = GM_getValue('wordsToHide', []); } loadWords(); //alert('Aktuelle Liste der zu verbergenden Wörter:\n' + wordsToHide.join(', ')); /////////////////////////////////////////////////////////////////////////// // Objekt zur Verfolgung der Anzahl der ausgeblendeten Artikel pro Wort const wordCounters = {}; wordsToHide.forEach(word => wordCounters[word] = 0); function forgetCheckedArticles() { const articles = document.querySelectorAll('article'); articles.forEach(article => { article.dataset.checked = 'false'; }); } function hideAndReplaceArticles() { const articles = document.querySelectorAll('article'); articles.forEach(article => { if (article.dataset.checked) return; // Überspringe bereits überprüfte Artikel const hDiv = article.querySelector('article div div div h5 a.h.clamp-two-lines'); if (hDiv) { const textorig = hDiv.textContent; const text = hDiv.textContent.toLowerCase(); for (const word of wordsToHide) { if (text.includes(word.toLowerCase())) { wordCounters[word]++; const replacementDiv = document.createElement('div'); replacementDiv.className = 'article-replacement'; replacementDiv.style.cssText = ` color: #555555; #background-color: #f0f0f0; padding: 10px; margin: 0px 0; border: 1px solid #555555; border-radius: 1px; font-style: italic; `; // Hinweis Dv const hinweisDiv = document.createElement('div'); hinweisDiv.textContent = `(Hidden - because keyword "${word}" was found (${wordCounters[word]}))`; hinweisDiv.style.cssText = ` color: #555555; font-size: 14px; #background-color: #f0f0f0; padding: 10px; margin: 0px 0; #border: 1px solid #555555; #border-radius: 1px; font-style: italic; `; replacementDiv.appendChild(hinweisDiv); // Zusätzliches Div const additionalDiv = document.createElement('div'); additionalDiv.className = 'additional-content'; additionalDiv.textContent = ` ${textorig} `; additionalDiv.style.cssText = ` padding: 10px; font-size: 16px; font-weight: 700 `; // replacementDiv.appendChild(additionalDiv); hDiv.style.cssText = ` color: #555555; padding: 10px; font-size: 16px; font-weight: 700 `; replacementDiv.appendChild(hDiv); article.parentNode.replaceChild(replacementDiv, article); break; } } } article.dataset.checked = 'true'; // Markiere den Artikel als überprüft }); } // Throttle-Funktion zur Leistungsoptimierung function throttle(func, limit) { let inThrottle; return function() { const args = arguments; const context = this; if (!inThrottle) { func.apply(context, args); inThrottle = true; setTimeout(() => inThrottle = false, limit); } }; } // Funktion zum Ausführen des Skripts function runScript() { hideAndReplaceArticles(); // Füge einen Scroll-Event-Listener hinzu window.addEventListener('scroll', throttle(hideAndReplaceArticles, 250)); } // Führe das Skript aus, wenn das DOM geladen ist if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runScript); } else { runScript(); } // Zusätzlicher MutationObserver für dynamisch geladene Inhalte const observer = new MutationObserver(throttle(() => { hideAndReplaceArticles(); }, 250)); observer.observe(document.body, { childList: true, subtree: true }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址