Greasy Fork

Greasy Fork is available in English.

过滤MT下载数小于指定数的条目

过滤m-team下载数小于指定数的条目

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         过滤MT下载数小于指定数的条目
// @namespace    http://tampermonkey.net/
// @version      0.4.5
// @description  过滤m-team下载数小于指定数的条目
// @author       Kaers
// @match        https://kp.m-team.cc/*
// @grant        none
// @license      GPL-3.0
// @run-at document-idle
// ==/UserScript==

(function() {
    'use strict';

    var isInputMode = false;
    var inputValue = localStorage.getItem("filterInputValue") || ""; // 从本地存储中获取输入值
    if(inputValue == ""){
        inputValue = 200;
        localStorage.setItem("filterInputValue", inputValue);
    }


    // 创建一个 MutationObserver 来监听 DOM 变化
    const observer = new MutationObserver((mutationsList, observer) => {
        // 当 DOM 发生变化时,检查页面路径
        if (window.location.pathname.startsWith('/browse')) {
            // 将按钮元素重新显示
            filterButton.style.display = "block";
            resetFilterButton.style.display = "block";
        }else{
            filterButton.style.display = "none";
            resetFilterButton.style.display = "none";
        }
    });

    // 配置 MutationObserver 监听哪些变化
    const config = { childList: true, subtree: true };

    // 启动观察者,监听整个文档的变化
    observer.observe(document.body, config);


    // 创建一个按钮元素
    var resetFilterButton = document.createElement("button");
    resetFilterButton.innerHTML = "重置"; // 如果有保存的值,则显示保存的值
    resetFilterButton.style.position = "fixed";
    resetFilterButton.style.bottom = "10px";
    resetFilterButton.style.right = "85px";
    resetFilterButton.style.zIndex = "9999";

    // 添加按钮点击事件
    resetFilterButton.addEventListener("click", function() {
        if (!isInputMode) {
            filterFunction(true);
        }
    });

    // 创建一个按钮元素
    var filterButton = document.createElement("button");
    filterButton.innerHTML = "x>"+inputValue; // 如果有保存的值,则显示保存的值
    filterButton.style.position = "fixed";
    filterButton.style.bottom = "10px";
    filterButton.style.right = "20px";
    filterButton.style.zIndex = "9999";

    // 添加按钮点击事件
    filterButton.addEventListener("click", function() {
        if (!isInputMode) {
            filterFunction(false);
        }
    });

    // 将按钮添加到页面中
    document.body.appendChild(filterButton);
    document.body.appendChild(resetFilterButton);


    // 添加按钮双击事件
    filterButton.addEventListener("dblclick", function() {
        if (!isInputMode) {
            var inputField = document.createElement("input");
            inputField.type = "text";
            inputField.style.position = "fixed";
            inputField.style.bottom = "10px";
            inputField.style.right = "20px";
            inputField.style.zIndex = "9999";
            inputField.style.padding = "5px";
            inputField.style.border = "1px solid #ccc";
            inputField.style.backgroundColor = "#fff";
            inputField.style.width = "60px"; // 设置输入框的宽度
            document.body.appendChild(inputField);

            // 焦点定位到输入框
            inputField.focus();

            // 移除按钮元素
            filterButton.style.display = "none";

            isInputMode = true;

            // 添加输入框失去焦点事件
            inputField.addEventListener("blur", function() {
                handleInputBlur(inputField);
            });

            // 添加输入框回车键事件
            inputField.addEventListener("keypress", function(event) {
                if (event.key === "Enter") {
                    handleInputBlur(inputField);
                }
            });
        }
    });



    // 在这里定义你提供的JavaScript函数
    function filterFunction(clearFilter) {
        // 获取表格中的所有行
        var rows = document.querySelectorAll('table tr');

        // 循环遍历每一行,跳过表头
        for (var i = 1; i < rows.length; i++) {
            var row = rows[i];

            if(clearFilter){
                row.style.display = '';
                continue;
            }

            var uploads = parseInt(row.cells[4].innerText.trim(), 10);
            var downloads = parseInt(row.cells[5].innerText.trim(), 10);
            console.log('上传量:', uploads, '下载量:', downloads);

            // 如果上传数量小于inputValue,则隐藏该行
            if (uploads < inputValue) {
                row.style.display = 'none';
            }else{
                row.style.display = '';
            }
        }
    }

    // 输入框失去焦点时的处理函数
    function handleInputBlur(inputField) {
        // 延迟移除输入框,以确保它不会在失去焦点时立即移除
        setTimeout(function() {
            if(inputField.value !== ""){
                // 在这里获取输入框的值
                inputValue = inputField.value;
                // 将输入值保存到本地存储
                localStorage.setItem("filterInputValue", inputValue);
                // 更新按钮文本为输入值
                filterButton.innerHTML = "x>"+inputValue;
            }
            // 移除输入框元素
            inputField.remove();

            // 将按钮元素重新显示
            filterButton.style.display = "block";

            isInputMode = false;
        }, 100);
    }

})();