Hide Replies and Reposts from Timeline on X.com

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

目前為 2024-09-19 提交的版本,檢視 最新版本

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

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

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

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

你需要先安裝一款使用者腳本管理器擴展,比如 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 });
})();