設定隱藏特定關鍵字於 news.cnblogs.com

隱藏於 news.cnblogs.com 上的特定新聞

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        博客园新闻板块设置屏蔽词
// @name:en      Hide Specified Keywords at news.cnblogs.com
// @name:es      Ocultar palabras clave específicas en news.cnblogs.com
// @name:fr      Masquer les mots-clés spécifiés sur news.cnblogs.com
// @name:de      Ausblenden bestimmter Schlüsselwörter auf news.cnblogs.com
// @name:zh-TW   設定隱藏特定關鍵字於 news.cnblogs.com
// @name:ja      news.cnblogs.comで指定したキーワードを非表示
// @name:ko      news.cnblogs.com에서 특정 키워드 숨기기
// @name:pt      Ocultar palavras-chave especificadas no news.cnblogs.com
// @name:ru      Скрыть указанные ключевые слова на news.cnblogs.com
// @name:hi      news.cnblogs.com पर निर्दिष्ट कीवर्ड छुपाएं
// @name:ar      إخفاء الكلمات المفتاحية المحددة في news.cnblogs.com
// @name:it      Nascondi le parole chiave specificate su news.cnblogs.com
// @name:vi      Ẩn từ khóa được chỉ định trên news.cnblogs.com
// @name:tr      news.cnblogs.com'da belirtilen anahtar kelimeleri gizle
// @name:pl      Ukryj określone słowa kluczowe na news.cnblogs.com
// @name:sv      Dölj angivna nyckelord på news.cnblogs.com
// @name:he      הסתר מילות מפתח ספציפיות ב-news.cnblogs.com
// @name:nl      Verberg opgegeven trefwoorden op news.cnblogs.com
// @name:el      Απόκρυψη καθορισμένων λέξεων-κλειδιών στο news.cnblogs.com
// @name:uk      Сховати вказані ключові слова на news.cnblogs.com
// @name:th      ซ่อนคำสำคัญที่กำหนดไว้ที่ news.cnblogs.com

// @description  Hide Specified news at news.cnblogs.com
// @description:en  Hide Specified news at news.cnblogs.com
// @description:es  Ocultar noticias específicas en news.cnblogs.com
// @description:fr  Masquer des nouvelles spécifiques sur news.cnblogs.com
// @description:de  Bestimmte Nachrichten auf news.cnblogs.com ausblenden
// @description:zh-TW  隱藏於 news.cnblogs.com 上的特定新聞
// @description:ja  news.cnblogs.comの指定されたニュースを非表示にします
// @description:ko  news.cnblogs.com에서 지정된 뉴스를 숨깁니다
// @description:pt  Ocultar notícias especificadas em news.cnblogs.com
// @description:ru  Скрыть указанные новости на news.cnblogs.com
// @description:hi  news.cnblogs.com पर निर्दिष्ट समाचार छुपाएं
// @description:ar  إخفاء الأخبار المحددة في news.cnblogs.com
// @description:it  Nascondi notizie specifiche su news.cnblogs.com
// @description:vi  Ẩn tin tức được chỉ định trên news.cnblogs.com
// @description:tr  news.cnblogs.com'da belirtilen haberleri gizle
// @description:pl  Ukryj określone wiadomości na news.cnblogs.com
// @description:sv  Dölj specifika nyheter på news.cnblogs.com
// @description:he  הסתר חדשות ספציפיות ב-news.cnblogs.com
// @description:nl  Verberg specifieke nieuwsberichten op news.cnblogs.com
// @description:el  Απόκρυψη συγκεκριμένων ειδήσεων στο news.cnblogs.com
// @description:uk  Сховати вказані новини на news.cnblogs.com
// @description:th  ซ่อนข่าวที่กำหนดไว้ที่ news.cnblogs.com

// @namespace    http://tampermonkey.net/
// @version      0.1
// @icon         https://assets.cnblogs.com/favicon.ico
// @author       aspen138
// @match        *://news.cnblogs.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_openInTab
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_notification
// @grant        GM_info
// @grant        window.onurlchange
// @grant        GM_addStyle
// @license      MIT
// ==/UserScript==




(function() {
    'use strict';

    let addKeywordCommandId;
    let removeKeywordCommandId;
    let viewKeywordsCommandId;

    // Function to hide elements containing specific text
    function hideElementsByText(selector, text) {
        const elements = document.querySelectorAll(selector);
        elements.forEach(element => {
            if (element.textContent.includes(text)) {
                element.style.display = 'none';
            }
        });
    }

    // Function to hide elements based on stored keywords
    function hideElementsByKeywords() {
        const keywords = GM_getValue('hideKeywords', []);
        keywords.forEach(keyword => {
            hideElementsByText('.news_block', keyword);
            hideElementsByText('.entry_summary', keyword);
            hideElementsByText('.tag', keyword);
        });
    }

    // Function to add a new keyword
    function addKeyword() {
        const keyword = prompt('Enter a keyword to hide:');
        if (keyword) {
            let keywords = GM_getValue('hideKeywords', []);
            if (!keywords.includes(keyword)) {
                keywords.push(keyword);
                GM_setValue('hideKeywords', keywords);
                alert(`Keyword "${keyword}" added.`);
                location.reload();
            } else {
                alert('Keyword already exists.');
            }
        }
    }

    // Function to remove a keyword
    function removeKeyword() {
        const keywords = GM_getValue('hideKeywords', []);
        const keyword = prompt('Enter a keyword to remove:', keywords.join(', '));
        if (keyword && keywords.includes(keyword)) {
            const updatedKeywords = keywords.filter(k => k !== keyword);
            GM_setValue('hideKeywords', updatedKeywords);
            alert(`Keyword "${keyword}" removed.`);
            location.reload();
        } else {
            alert('Keyword not found.');
        }
    }

    // Function to view all keywords
    function viewKeywords() {
        const keywords = GM_getValue('hideKeywords', []);
        if (keywords.length > 0) {
            alert(`Current keywords: ${keywords.join(', ')}`);
        } else {
            alert('No keywords set.');
        }
    }

    // Unregister existing menu commands (if any)
    if (addKeywordCommandId) {
        GM_unregisterMenuCommand(addKeywordCommandId);
    }
    if (removeKeywordCommandId) {
        GM_unregisterMenuCommand(removeKeywordCommandId);
    }
    if (viewKeywordsCommandId) {
        GM_unregisterMenuCommand(viewKeywordsCommandId);
    }

    // Register menu commands
    addKeywordCommandId = GM_registerMenuCommand('Add Keyword to Hide', addKeyword);
    removeKeywordCommandId = GM_registerMenuCommand('Remove Keyword to Hide', removeKeyword);
    viewKeywordsCommandId = GM_registerMenuCommand('View All Keywords', viewKeywords);

    // Hide elements based on stored keywords
    hideElementsByKeywords();

})();