X Timeline Cleaner - Only Followed Accounts

Hide tweets from users you don't follow on X.com timeline

目前为 2024-09-19 提交的版本。查看 最新版本

// ==UserScript==
// @name         X Timeline Cleaner - Only Followed Accounts
// @namespace    https://x.com/
// @version      2.9
// @description  Hide tweets from users you don't follow on X.com timeline
// @match        https://twitter.com/*
// @match        https://x.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    function hideUnfollowedTweets() {
        var tweets = document.querySelectorAll('article');

        tweets.forEach(tweet => {
            // Check if the tweet contains a "Follow" button
            var followButton = tweet.querySelector('div[role="button"][data-testid$="-follow"]');

            // If the "Follow" button is present, hide the tweet
            if (followButton) {
                tweet.style.display = 'none';
                return;
            }

            // Additional check for promoted content
            var isPromoted = tweet.innerText.includes('Promoted');
            if (isPromoted) {
                tweet.style.display = 'none';
                return;
            }

            // Optional: Hide replies, reposts, and threads from followed accounts if desired
            // Uncomment the following lines if you want to hide them as well

            /*
            var isRepost = tweet.querySelector('[data-testid="socialContext"]');
            var replyPhrases = ['Replying to', 'Respondiendo a', 'Répondre à', 'Antwort an', 'Rispondendo a', 'Responder a'];
            var isReply = replyPhrases.some(phrase => tweet.innerText.includes(phrase));
            var threadPhrases = ['Show this thread', 'Mostrar este hilo', 'Afficher ce fil', 'Diesen Thread anzeigen', 'Mostra questo thread'];
            var isThread = threadPhrases.some(phrase => tweet.innerText.includes(phrase));

            if (isRepost || isReply || isThread) {
                tweet.style.display = 'none';
            }
            */
        });
    }

    // Observe dynamic content loading
    const observer = new MutationObserver(() => {
        hideUnfollowedTweets();
    });
    observer.observe(document.body, { childList: true, subtree: true });

    // Initial call
    hideUnfollowedTweets();
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址