Hide Replies and Reposts from Timeline on X.com

Hide replies and reposts in your X.com (Twitter) home timeline.

当前为 2024-09-19 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Hide Replies and Reposts from Timeline on X.com
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Hide replies and reposts in your X.com (Twitter) home timeline.
// @author       
// @match        https://x.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    /**
     * Function to hide reply tweets and reposts from the home timeline.
     */
    function hideRepliesAndReposts() {
        // Select all tweets in the timeline
        const tweets = document.querySelectorAll('div[data-testid="cellInnerDiv"]');
        tweets.forEach((tweet) => {
            // Check if the tweet is a reply
            const isReply = tweet.querySelector('div[aria-label^="Replying to"]') !== null;

            // Check if the tweet is a repost
            let isRepost = false;
            // Look for the repost badge or text
            const repostBadge = tweet.querySelector('div[data-testid="socialContext"] span');
            if (repostBadge && repostBadge.innerText.includes('Reposted')) {
                isRepost = true;
            }

            // Alternative method: check for the "repost" icon with aria-label
            const repostIcon = tweet.querySelector('svg[aria-label="Reposted"]');
            if (repostIcon) {
                isRepost = true;
            }

            if (isReply || isRepost) {
                // Hide the tweet if it's a reply or repost
                tweet.style.display = 'none';
            }
        });
    }

    // Run the function once the DOM content is loaded
    document.addEventListener('DOMContentLoaded', hideRepliesAndReposts);

    // Observe changes to the timeline to hide new replies and reposts
    const observer = new MutationObserver(hideRepliesAndReposts);
    observer.observe(document.body, { childList: true, subtree: true });
})();