【微博移动端】内容过滤与界面简化

过滤低互动(自定义点赞、评论数阈值)微博,并移除顶部导航栏、悬浮刷新按钮等界面元素。

À partir de 2025-09-13. Voir la dernière version.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         【微博移动端】内容过滤与界面简化
// @namespace   https://github.com/realSilasYang/UserScripts
// @version         2025-09-13
// @description    过滤低互动(自定义点赞、评论数阈值)微博,并移除顶部导航栏、悬浮刷新按钮等界面元素。
// @author          阳熙来
// @icon             data:image/png;base64,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
// @license         GNU GPLv3
// @match        *://m.weibo.cn/*
// @match        *://huati.weibo.cn/*
// @match        *://h5.video.weibo.com/*
// @match        *://card.weibo.com/*
// @match        *://weibo.com/l/wblive/m/show/*
// ==/UserScript==

(function () {
    'use strict';

    // --- 配置区域 ---
    const MIN_COMMENTS = 5;
    const MIN_LIKES = 10;
    const POST_SELECTOR = '.wb-item-wrap, .card.weibo-member';

    // 将所有需要移除的元素的选择器放在这里
    const SELECTORS_TO_REMOVE = [
        '.lite-topbar.main-top',  // 顶部导航栏
        '.refresh-btn.lite-iconf' // 悬浮刷新按钮
    ];

    // --- 核心功能函数 ---

    /**
     * 解析互动数 (评论/点赞)。
     * @param {Element} iconElement - 图标元素
     * @returns {number} - 解析后的数值
     */
    function parseCount(iconElement) {
        if (!iconElement) return 0;
        const h4 = iconElement.parentElement.querySelector('h4');
        if (!h4 || !h4.textContent) return 0;
        const text = h4.textContent.trim();
        if (text.includes('万')) return parseFloat(text) * 10000;
        const num = parseInt(text, 10);
        return isNaN(num) ? 0 : num;
    }

    /**
     * 判断微博帖子是否应保留。
     * @param {Element} box - 微博帖子的根元素
     * @returns {boolean} - true 表示保留
     */
    function shouldKeep(box) {
        let commentIcon, likeIcon;
        if (box.matches('.wb-item-wrap')) {
            commentIcon = box.querySelector('.lite-iconf-comments');
            likeIcon = box.querySelector('.lite-iconf-like');
        } else if (box.matches('.card.weibo-member')) {
            commentIcon = box.querySelector('.m-font-comment');
            likeIcon = box.querySelector('.m-icon-like');
        } else {
            return true;
        }
        const commentNum = parseCount(commentIcon);
        const likeNum = parseCount(likeIcon);
        return commentNum >= MIN_COMMENTS && likeNum >= MIN_LIKES;
    }

    /**
     * 过滤单个微博帖子。
     * @param {Element} box - 微博帖子的根元素
     */
    function filterSingle(box) {
        if (!shouldKeep(box)) {
            box.remove();
        }
    }

    /**
     * 批量过滤一个根元素下的所有微博帖子。
     * @param {Element|Document} root - 搜索的根节点
     */
    function filterAll(root = document) {
        root.querySelectorAll(POST_SELECTOR).forEach(filterSingle);
    }

    /**
     * [重构] 移除所有在配置列表中指定的UI元素。
     */
    function cleanupUI() {
        SELECTORS_TO_REMOVE.forEach(selector => {
            document.querySelectorAll(selector).forEach(element => element.remove());
        });
    }


    // --- 主逻辑 ---

    // 观察DOM变化,处理动态加载的内容
    const observer = new MutationObserver(() => {
        // 每次DOM变动时,都清理UI元素并过滤帖子
        cleanupUI();
        filterAll();
    });

    observer.observe(document.documentElement, {
        childList: true,
        subtree: true
    });

    // 脚本运行时,也对已存在的内容进行一次初始处理
    function initialRun() {
        cleanupUI();
        filterAll();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initialRun);
    } else {
        initialRun();
    }
})();