X/Twitter 乾淨的選單和側邊欄(支持多種語言)

乾淨的 選單、Grok、高級訂閱、探索、通知、訊息、書籤和可自訂設定

目前為 2024-06-11 提交的版本,檢視 最新版本

// ==UserScript==
// @name         X/Twitter Clean menu and sidebar (Supports multiple language)
// @name:ja      X/Twitter きれいなメニューとサイドバー(多言語対応)
// @name:zh-TW   X/Twitter 乾淨的選單和側邊欄(支持多種語言)
// @name:zh-cn   X/Twitter 干净的选单和侧边栏(支持多种语言)
// @version      1.1
// @description  hidden Menu,Grok,Premium subscription,Explore,Notifications,Messages,Bookmarks and Customizable Settings
// @description:ja    清潔なメニュー、Grok、高度なサブスクリプション、探索、通知、メッセージ、ブックマーク、およびカスタム設定
// @description:zh-tw 乾淨的 選單、Grok、高級訂閱、探索、通知、訊息、書籤和可自訂設定
// @description:zh-cn 干净的 选单、Grok、高级订阅、探索、通知、私信、书签和可自订设定
// @license      MIT
// @author       movwei
// @match        https://x.com/*
// @match        https://twitter.com/*
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_addStyle
// @namespace https://gf.qytechs.cn/users/1041101
// ==/UserScript==

(function() {
    'use strict';

    const defaultSettings = {
        hideGrok: true,
        hidePremiumSignUp: true,
        hideSelectors: true,
        hideExplore: false,
        hideNotifications: false,
        hideBookmarks: false,
        hideMessages: false
    };

    const settings = {
        hideGrok: GM_getValue('hideGrok', defaultSettings.hideGrok),
        hidePremiumSignUp: GM_getValue('hidePremiumSignUp', defaultSettings.hidePremiumSignUp),
        hideSelectors: GM_getValue('hideSelectors', defaultSettings.hideSelectors),
        hideExplore: GM_getValue('hideExplore', defaultSettings.hideExplore),
        hideNotifications: GM_getValue('hideNotifications', defaultSettings.hideNotifications),
        hideBookmarks: GM_getValue('hideBookmarks', defaultSettings.hideBookmarks),
        hideMessages: GM_getValue('hideMessages', defaultSettings.hideMessages)
    };

    // 多語言支持
    const language = navigator.language || navigator.userLanguage;
    const languages = {
        'en': {
            'hideGrok': 'Hide Grok',
            'hidePremiumSignUp': 'Hide Premium Sign-up',
            'hideSelectors': 'Hide Subscribe Message',
            'hideExplore': 'Hide Explore',
            'hideNotifications': 'Hide Notifications',
            'hideMessages': 'Hide Messages',
            'hideBookmarks': 'Hide Bookmarks',
            'settings': 'Settings',
            'saveRefresh': 'Save & refresh',
            'close': 'Close'
        },
        'zh-TW': {
            'hideGrok': '隱藏 Grok',
            'hidePremiumSignUp': '隱藏 高級訂閱',
            'hideSelectors': '隱藏 訂閱訊息',
            'hideExplore': '隱藏 探索',
            'hideNotifications': '隱藏 通知',
            'hideMessages': '隱藏 訊息',
            'hideBookmarks': '隱藏 書籤',
            'settings': '設定',
            'saveRefresh': '保存並刷新',
            'close': '關閉'
        },
        'zh-CN': {
            'hideGrok': '隐藏 Grok',
            'hidePremiumSignUp': '隐藏 高级订阅',
            'hideSelectors': '隐藏 订阅消息',
            'hideExplore': '隐藏 探索',
            'hideNotifications': '隐藏 通知',
            'hideMessages': '隐藏 私信',
            'hideBookmarks': '隐藏 书签',
            'settings': '设置',
            'saveRefresh': '保存并刷新',
            'close': '关闭'
        },
        'ja': {
            'hideGrok': 'Grokを非表示',
            'hidePremiumSignUp': 'プレミアムサインアップを非表示',
            'hideSelectors': 'サブスクライブメッセージを非表示',
            'hideExplore': '話題を検索を非表示',
            'hideNotifications': '通知を非表示',
            'hideMessages': 'メッセージを非表示',
            'hideBookmarks': 'ブックマークを非表示',
            'settings': '設定',
            'saveRefresh': '保存してリフレッシュ',
           'close': '閉じる'
        },
    };

    const currentLanguage = languages[language] || languages['en'];

    function createSettingsPanel() {
        const panel = document.createElement('div');
        panel.id = 'settingsPanel';
        panel.innerHTML = `
            <div id="settingsPanelContent">
                <h2>${currentLanguage['settings']}</h2>
                <label><input type="checkbox" id="hideGrokCheckbox" ${settings.hideGrok ? 'checked' : ''}> ${currentLanguage['hideGrok']}</label><br>
                <label><input type="checkbox" id="hidePremiumSignUpCheckbox" ${settings.hidePremiumSignUp ? 'checked' : ''}> ${currentLanguage['hidePremiumSignUp']}</label><br>
                <label><input type="checkbox" id="hideSelectorsCheckbox" ${settings.hideSelectors ? 'checked' : ''}> ${currentLanguage['hideSelectors']}</label><br>
                <label><input type="checkbox" id="hideExploreCheckbox" ${settings.hideExplore ? 'checked' : ''}> ${currentLanguage['hideExplore']}</label><br>
                <label><input type="checkbox" id="hideNotificationsCheckbox" ${settings.hideNotifications ? 'checked' : ''}> ${currentLanguage['hideNotifications']}</label><br>
                <label><input type="checkbox" id="hideMessagesCheckbox" ${settings.hideMessages ? 'checked' : ''}> ${currentLanguage['hideMessages']}</label><br>
                <label><input type="checkbox" id="hideBookmarksCheckbox" ${settings.hideBookmarks ? 'checked' : ''}> ${currentLanguage['hideBookmarks']}</label><br>
                <button id="saveSettingsButton">${currentLanguage['saveRefresh']}</button>
                <button id="closeSettingsButton">${currentLanguage['close']}</button>
            </div>
        `;
        document.body.appendChild(panel);

        document.getElementById('saveSettingsButton').addEventListener('click', saveSettings);

        document.getElementById('closeSettingsButton').addEventListener('click', () => {
            document.getElementById('settingsPanel').style.display = 'none';
        });
    }

    function saveSettings() {
        settings.hideGrok = document.getElementById('hideGrokCheckbox').checked;
        settings.hidePremiumSignUp = document.getElementById('hidePremiumSignUpCheckbox').checked;
        settings.hideSelectors = document.getElementById('hideSelectorsCheckbox').checked;
        settings.hideExplore = document.getElementById('hideExploreCheckbox').checked;
        settings.hideNotifications = document.getElementById('hideNotificationsCheckbox').checked;
        settings.hideBookmarks = document.getElementById('hideBookmarksCheckbox').checked;
        settings.hideMessages = document.getElementById('hideMessagesCheckbox').checked;

        GM_setValue('hideGrok', settings.hideGrok);
        GM_setValue('hidePremiumSignUp', settings.hidePremiumSignUp);
        GM_setValue('hideSelectors', settings.hideSelectors);
        GM_setValue('hideExplore', settings.hideExplore);
        GM_setValue('hideNotifications', settings.hideNotifications);
        GM_setValue('hideBookmarks', settings.hideBookmarks);
        GM_setValue('hideMessages', settings.hideMessages);
        location.reload();
    }


    GM_addStyle(`
        #settingsPanel {
            width: 250px;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: white;
            border: 1px solid #ccc;
            padding: 20px;
            z-index: 10000;
            display: none;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            border-radius: 8px;
        }

        #settingsPanelContent {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            width: 100%;
        }

        #settingsPanel h2 {
            margin: 0 0 15px 0;
            font-size: 18px;
            color: #333;
            text-align: center;
            width: 100%;
        }

        #settingsPanel label {
            margin: 5px 0;
            font-size: 14px;
            color: #333;
        }

        #settingsPanel button {
            margin-top: 10px;
            padding: 8px 15px;
            font-size: 14px;
            color: white;
            background-color: #007BFF;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            width: 100%;
        }

        #settingsPanel button#closeSettingsButton {
            background-color: #6c757d;
        }
    `);


    createSettingsPanel();
    GM_registerMenuCommand(currentLanguage['settings'], () => {
        const panel = document.getElementById('settingsPanel');
        panel.style.display = 'block';
    });

    function addGlobalStyle(css) {
        var head, style;
        head = document.getElementsByTagName('head')[0];
        if (!head) { return; }
        style = document.createElement('style');
        style.type = 'text/css';
        style.innerHTML = css;
        head.appendChild(style);
    }


    var phrases = [
        'Premium\'a Abone Ol', // 土耳其文 - Türkçe
        'Abonner på Premium', // 丹麥文 - dansk
        '', // 巴斯克文 (測試版) - euskara
        'プレミアムにサブスクライブ', // 日文 - 日本語
        '', // 加利西亞文 (測試版) - galego
        'Subscriu-te a Premium', // 加泰蘭文 - català
        'પ્રીમિયમ પર સબ્સ્ક્રાઇબ કરો', // 古吉拉特文 - ગુજરાતી
        'Fizess elő a Premiumra!', // 匈牙利文 - magyar
        'Berlangganan Premium', // 印尼文 - Indonesia
        'Premium को सब्सक्राइब करें', // 印地文 - हिन्दी
        'Suscríbete a Premium', // 西班牙文 - español
        'Pretplatite se na Premium', // 克羅埃西亞文 - hrvatski
        'Premiumಗೆ ಸಬ್‌ಸ್ರೈಬ್ ಮಾಡಿ', // 坎那達文 - ಕನ್ನಡ
        'הרשמה ל-Premium', // 希伯來文 - עברית
        'Εγγραφή στο Premium', // 希臘文 - Ελληνικά
        'Premium-க்குச் சப்ஸ்கிரைப் செய்', // 坦米爾文 - தமிழ்
        'Premium-এ সাবস্ক্রাইব করুন', // 孟加拉文 - বাংলা
        'Abonnez‑vous à Premium', // 法文 - français
        'اشتراک در Premium', // 波斯文 - فارسی
        'Zasubskrybuj usługę Premium', // 波蘭文 - polski
        'Tilaa Premium', // 芬蘭文 - suomi
        'الاشتراك في Premium', // 阿拉伯文 - العربية
        'الاشتراك في Premium', // 阿拉伯文 (陰性) - العربية (مؤنث)
        'Подпишитесь на Premium', // 俄文 - русский
        'Абонирайте се за Premium', // 保加利亞文 - български
        'Subscribe to Premium', // 英文 - English
        'Subscribe to Premium', // 英文(英國) - British English
        '', // 挪威文 - norsk
        'สมัครสมาชิก Premium', // 泰文 - ไทย
        'Передплатити Premium', // 烏克蘭文 - українська
        '', // 烏都文 (測試版) - اردو
        'Langgan Premium', // 馬來文 - Melayu
        'Premium ची सदस्यता घ्या', // 馬拉地文 - मराठी
        'Přihlaste se k odběru předplatného Premium', // 捷克文 - čeština X
        'Abonneren op Premium', // 荷蘭文 - Nederlands
        'Zaregistrujte sa do služby Premium', // 斯洛伐克文 - slovenčina
        'Mag-subscribe sa Premium', // 菲律賓文 - Filipino
        'Đăng ký gói Premium', // 越南文 - Tiếng Việt
        'Претплати се на Premium', // 塞爾維亞文 - српски
        '', // 愛爾蘭文 (測試版) - Gaeilge
        'Prenumerera på Premium', // 瑞典文 - svenska
        'Abbonati a Premium', // 義大利文 - italiano
        'Assine o Premium', // 葡萄牙文 - português
        'Premium abonnieren', // 德文 - Deutsch
        '訂閱 Premium', // 繁體中文
        'Premium 구독하기', // 韓文 - 한국어
        '订阅 Premium', // 简体中文
        'Abonează-te la Premium', // 羅馬尼亞文 - română
    ];


var selectors = phrases.map(function(phrase) {
    if (phrase !== '') {
        return 'aside[aria-label="' + phrase + '"]';
    } else {
        return '';
    }
}).filter(selector => selector !== '').join(', ');

var cssRules = '';
if (settings.hideSelectors) {
    cssRules += selectors + '{ display: none !important; }';
}
if (settings.hideGrok) {
    cssRules += 'a[href="/i/grok"] { display: none !important; }';
}
if (settings.hidePremiumSignUp) {
    cssRules += 'a[href="/i/premium_sign_up"] { display: none !important; }';
}
if (settings.hideExplore) {
    cssRules += 'a[href="/explore"] { display: none !important; }';
}
if (settings.hideNotifications) {
    cssRules += 'a[href="/notifications"] { display: none !important; }';
}
if (settings.hideBookmarks) {
    cssRules += 'a[href="/i/bookmarks"] { display: none !important; }';
}
if (settings.hideMessages) {
    cssRules += 'a[href="/messages"] { display: none !important; }';
}

addGlobalStyle(cssRules);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址