4lrick / Auto Refresh Twitter (X) Timeline

// ==UserScript==
// @name               Auto Refresh Twitter (X) Timeline
// @namespace          https://gist.github.com/4lrick/bedb39b069be0e4c94dc20214137c9f5
// @version            2.1
// @description        Automatically refreshes the Twitter (X) timeline every 5 seconds without refreshing the tab.
// @description:fr     Actualise automatiquement la timeline Twitter (X) toutes les 5 secondes sans rafraîchir l'onglet.
// @description:es     Refresca automáticamente el timeline de Twitter (X) cada 5 segundos sin refrescar la pestaña.
// @description:de     Aktualisiert automatisch die Twitter (X) Timeline alle 5 Sekunden ohne das Tab neu zu laden.
// @description:it     Aggiorna automaticamente la timeline di Twitter (X) ogni 5 secondi senza aggiornare la scheda.
// @description:zh-CN  在不刷新标签页的情况下, 每5秒自动刷新Twitter(X)时间轴。
// @author             4lrick
// @match              https://x.com/*
// @icon               https://www.google.com/s2/favicons?sz=64&domain=twitter.com
// @grant              none
// @license            GPL-3.0-only
// ==/UserScript==

(function() {
    'use strict';

    const refreshIntervalInSeconds = 5;

    function isAtTopOfPage() {
        return window.scrollY <= 120;
    }

    function refreshTimeline() {
        if (window.location.href.startsWith('https://x.com/home')) {
            if (isAtTopOfPage()) {
                const refreshButton = document.querySelector('[aria-label="X"]');
                if (refreshButton) {
                    refreshButton.click();
                }
            }
        }
    }
    setInterval(refreshTimeline, refreshIntervalInSeconds * 1000);
})();