Auto Dim Twitter

Toggles the Twitter web dark mode based on the selected hour range

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Auto Dim Twitter
// @namespace    https://burakgarci.net
// @version      1.1
// @description  Toggles the Twitter web dark mode based on the selected hour range
// @author       Burak Garcı
// @match        https://x.com/*
// @icon         https://www.google.com/s2/favicons?domain=x.com
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_registerMenuCommand
// @run-at       document-start
// ==/UserScript==

(function () {
    'use strict';

    // Default hour range
    var defaultStartHour = 19; // Set the start hour here (in 24-hour format)
    var defaultEndHour = 8; // Set the end hour here (in 24-hour format)

    // Check for stored hours
    var storedStartHour = parseInt(GM_getValue('startHour'));
    var storedEndHour = parseInt(GM_getValue('endHour'));

    // Use default hours if no stored hours found
    var startHour = !isNaN(storedStartHour) ? storedStartHour : defaultStartHour;
    var endHour = !isNaN(storedEndHour) ? storedEndHour : defaultEndHour;

    // Create menu command for user to change settings
    GM_registerMenuCommand('Set Hour Range', setHourRange);

    // Function to set hour range
    function setHourRange() {
        var inputStartHour = prompt('Enter the start hour (in 24-hour format):', startHour);
        var inputEndHour = prompt('Enter the end hour (in 24-hour format):', endHour);

        if (inputStartHour !== null && inputEndHour !== null) {
            var parsedStartHour = parseInt(inputStartHour);
            var parsedEndHour = parseInt(inputEndHour);

            if (!isNaN(parsedStartHour) && !isNaN(parsedEndHour)) {
                startHour = parsedStartHour;
                endHour = parsedEndHour;
                GM_setValue('startHour', startHour);
                GM_setValue('endHour', endHour);
                applyDarkMode();
            } else {
                alert('Invalid hour value!');
            }
        }
    }

    // Function to apply dark mode based on hour range
    function applyDarkMode() {
        var currentHour = new Date().getHours();

        if (currentHour >= startHour || currentHour < endHour) {
            document.cookie = 'night_mode=1; path=/; secure; domain=.x.com';
        } else {
            document.cookie = 'night_mode=0; path=/; secure; domain=.x.com';
        }
    }

    // Apply dark mode on initial load
    applyDarkMode();
})();