No More Dramas - TJUPT/PTer

torrent page filter

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         No More Dramas - TJUPT/PTer
// @namespace    http://tampermonkey.net/
// @version      0.1.3
// @description  torrent page filter
// @author       colder
// @match        https://*.tjupt.org/torrents.php*
// @match        https://*.tju.pt/torrents.php*
// @match        https://*.pterclub.com/torrents.php*
// @match        https://*.pterclub.net/torrents.php*
// @license MIT
// ==/UserScript==


(function() {
    'use strict';
    const filterChars = ["-GodDramas", "短剧"];
    
    function containsFilterChar(text) {
        return filterChars.some(char => text.includes(char));
    }
    
    function hideFilteredTRs() {
        const torrentsTable = document.querySelector('.torrents') || 
                             document.querySelector('table.torrents') ||
                             document.querySelector('table');
        
        if (torrentsTable) {
            torrentsTable.querySelectorAll('tr').forEach(tr => {
                if (containsFilterChar(tr.textContent)) {
                    tr.style.display = 'none';
                }
            });
        }
    }
    
    function observeDOMChanges() {
        const observer = new MutationObserver((mutations) => {
            hideFilteredTRs();
        });
        const config = { childList: true, subtree: true };
        observer.observe(document.body, config);
    }
    
    // Wait for page load
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', hideFilteredTRs);
    } else {
        hideFilteredTRs();
    }
    
    observeDOMChanges();
})();