NiTwit

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

目前为 2023-07-26 提交的版本。查看 最新版本

// ==UserScript==
// @name         NiTwit
// @namespace    http://tampermonkey.net/
// @version      0.1.2
// @description  Show a button on the top to quickly toggle between Twitter and Nitter (or any other instance).
// @author       Appel
// @match        *://*.twitter.com/*
// @grant        GM_getValue
// @grant        GM_setValue
// @license MIT
// ==/UserScript==

(function () {
	"use strict";

	window.addEventListener("load", function () {
		let alternateDomain = GM_getValue("alternateDomain");

		// If no alternate domain has been set, prompt the user to input one, default is 'https://nitter.net'
		if (!alternateDomain) {
			alternateDomain = prompt("Please enter the full alternate domain (include https://) you want to switch to from https://twitter.com:", "https://nitter.net");

			// If the user provides an alternate domain, save it
			if (alternateDomain) {
				GM_setValue("alternateDomain", alternateDomain);
			}
		}

		// Add the match rule for the alternate domain
		if (alternateDomain) {
			GM_info.scriptHandler.addMetaRule({ name: "@match", value: `${alternateDomain}/*` });
		}

		const url = window.location.href;
		let newUrl = "";

		// Create button
		let btn = document.createElement("button");
		btn.classList.add("nitter-switch");
		btn.textContent = "Switch";
		btn.style.position = "fixed";
		btn.style.top = "0";
		btn.style.right = "0";
		btn.style.zIndex = "9999";

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

		btn.addEventListener("click", function () {
			if (url.includes("twitter.com")) {
				newUrl = url.replace("https://twitter.com", alternateDomain);
			} else if (url.includes(alternateDomain)) {
				newUrl = url.replace(alternateDomain, "https://twitter.com");
			}

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