// ==UserScript== // @name Auto-Translate Posts on Twitter // @version 1.3 // @description Automatically clicks the "Translate post" button on X.com posts // @author https://github.com/ruukulada // @namespace https://github.com/ruukulada // @match https://*.x.com/* // @icon https://abs.twimg.com/favicons/twitter.2.ico // @license MIT // @grant none // @downloadURL none // ==/UserScript== (function () { 'use strict'; let mutationTimeout; // Function to find and click the "Translate post" button const clickTranslateButton = () => { const buttons = document.querySelectorAll('button span'); for (const el of buttons) { if (el.textContent.trim() === "Translate post") { const button = el.closest('button'); if (button) { button.click(); console.log("Clicked 'Translate post' button."); } } } }; // Debounced mutation handler const debouncedMutationHandler = () => { if (mutationTimeout) clearTimeout(mutationTimeout); mutationTimeout = setTimeout(() => { clickTranslateButton(); }, 100); // Delay in milliseconds }; // Monitor changes within the main content area const mainContentArea = document.querySelector('main') || document.body; const observer = new MutationObserver(() => debouncedMutationHandler()); // Start observing the main content area observer.observe(mainContentArea, { childList: true, subtree: true }); // Initial check in case the button is already present clickTranslateButton(); })();