Twitter Sensitive Content Viewer

Simple script to automatically click "Show" on tweets hidden behind the sensitive content warning on Twitter.

Terá de instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

Terá de instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Terá de instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Terá de instalar uma extensão como Tampermonkey para instalar este script.

Terá de instalar uma extensão de gestão de scripts de utilizador para instalar este script.

(Já tenho um gestor de scripts de utilizador, deixe-me instalá-lo!)

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

(Já tenho um gestor de estilos de utilizador, deixe-me instalá-lo!)

// ==UserScript==
// @name         Twitter Sensitive Content Viewer
// @namespace    [email protected]
// @version      1.1.1.5
// @description  Simple script to automatically click "Show" on tweets hidden behind the sensitive content warning on Twitter.
// @author       omfgmule
// @match        *://twitter.com/*

// ==/UserScript==

(function() {
    'use strict';

    // If this script is helpful to you please consider simply retweeting so more people can use it!
    // https://x.com/omfgmule/status/1777623521427894569

    //Supported languages, if you need languages added feel free to contact me at @omfgmule on twitter or post a comment on the greasefork page
    const supportedLanguages = {
        EN: "Show",
        JP: "表示",
        ES: "Mostrar",
		CNS: "显示",
        CNT: "顯示",
        PL: "Pokaż",
        DE: "Anzeigen",
        TH: "แสดง"
    };

    const supportedRemoveButtonLanguages = {
        EN: "Hide",
        JP: "非表示にする",
        ES: "Ocultar",
		CNS: "隐藏",
        CNT: "隱藏",
        PL: "Ukryj",
        DE: "Ausblenden",
        TH: "ซ่อน"
    };

    window.addEventListener('load', function() {
        const revealSensitiveContent = () => {
            const currentUrl = window.location.href;
            if (!currentUrl.includes('/settings/')) {
                document.querySelectorAll('span.css-1qaijid.r-bcqeeo.r-qvutc0').forEach(span => {
                    const foundSupportedLanguage = Object.values(supportedLanguages).includes(span.textContent);
                    if (foundSupportedLanguage) {
                        let clickedAlready = false;
                        let target = span.parentNode;
                        if (target && target.click && !clickedAlready) {
                            target.click();
                            clickedAlready = true;
                        }
                        target = span.parentNode.parentNode
                            if (target && target.click && !clickedAlready) {
                                target.click();
                            }
                    }

                });
            }
        };

        const removeHideButton = () => {
            const currentUrl = window.location.href;
            if (!currentUrl.includes('/settings/')) {
                document.querySelectorAll('span.css-1qaijid.r-bcqeeo.r-qvutc0').forEach(span => {
                    let foundSupportedRemoveButtonLanguage = Object.values(supportedRemoveButtonLanguages).includes(span.textContent);
                    if (foundSupportedRemoveButtonLanguage) {
                        let thirdParentNode = span.parentNode.parentNode.parentNode;
                        if (thirdParentNode.className.includes('css-175oi2r r-sdzlij r-1phboty r-rs99b7 r-lrvibr')) {
                            thirdParentNode.remove();
                        }
                    }

                });
            }
        };

        revealSensitiveContent();
        removeHideButton();
        setInterval(revealSensitiveContent, 100);
        setInterval(removeHideButton, 100);
    });
})();