NiTwit - From Twitter to Nitter and back

Show a button on the top to quickly toggle between Twitter and Nitter.net (or any other instance).

目前為 2023-07-26 提交的版本,檢視 最新版本

// ==UserScript==
// @name         NiTwit - From Twitter to Nitter and back
// @namespace    http://tampermonkey.net/
// @version      0.1.7
// @description  Show a button on the top to quickly toggle between Twitter and Nitter.net (or any other instance).
// @author       Ap
// @match        *://*.twitter.com/*
// @match        *://*.nitter.net/*
// @match        *://*.unofficialbird.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
	("use strict");

	let alternateDomain = "https://nitter.net";

    // MutationObserver watches for changes in the document
    let observer = new MutationObserver(function() {
        if (document.querySelector('.nitter-switch')) {
            return;
        }

        let btnColor, btnText, btnTitle;

        // Create button
        let btn = document.createElement('button');
        btn.classList.add('nitter-switch');
        btn.style.position = 'fixed';
        btn.style.top = '10px';
        btn.style.right = '10px';
        btn.style.zIndex = '9999';
        btn.style.color = 'white';
        btn.style.borderRadius = '50%';
        btn.style.width = '30px';
        btn.style.height = '30px';
        btn.style.border = 'none';
        btn.style.cursor = 'pointer';
        btn.style.fontSize = '20px';
        btn.style.textAlign = 'center';
        btn.style.padding = '0';
        btn.style.lineHeight = '30px';
        btn.style.transition = 'transform .3s ease';

        // Add button to page
        document.body.appendChild(btn);

        btn.addEventListener('click', function(){
            // Always grab the most current URL
            const url = window.location.href;
            let newUrl = '';

            // Set button color, text, and title based on the current URL
            if (url.includes('twitter.com')) {
                btnColor = '#ff6c60';
                btnText = 'N';
                btnTitle = 'Switch to Nitter';
                newUrl = url.replace('https://twitter.com', alternateDomain);
            } else if (url.includes(alternateDomain)) {
                btnColor = '#1d9bf0';
                btnText = 'T';
                btnTitle = 'Switch to Twitter';
                newUrl = url.replace(alternateDomain, 'https://twitter.com');
            }

            // Set button color, text, and title
            btn.textContent = btnText;
            btn.title = btnTitle;
            btn.style.backgroundColor = btnColor;

            // Add "pop" animation
            this.style.transform = 'scale(1.2)';
            setTimeout(() => this.style.transform = 'scale(1)', 300);

            window.location.href = newUrl;
        });
    });

	observer.observe(document, { childList: true, subtree: true });
})();