TorrentGalaxyScript

Torrentgalaxy Special Offer Adblocker + Lazy Dark Theme

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         TorrentGalaxyScript
// @namespace    http://tampermonkey.net/
// @version      0.3.2
// @description  Torrentgalaxy Special Offer Adblocker + Lazy Dark Theme
// @author       nour
// @match        https://torrentgalaxy.to/*
// @match        https://torrentgalaxy.to/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';
    // Set darkthemev2 to 0 if you want to disable it
    localStorage.setItem('darkthemev2', '1');

    // Helper function to convert RGB to HEX
    function rgbToHex(rgb) {
        // Convert an RGB color value to HEX
        let [r, g, b] = rgb.match(/\d+/g).map(Number);
        return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase();
    }

    // Function to replace a specific color across all elements
    function replaceColor(oldColor, newColor) {
        // Normalize oldColor to HEX if it is in RGB format
        if (oldColor.includes('rgb')) {
            oldColor = rgbToHex(oldColor);
        }

        // Ensure oldColor is uppercase since the conversion returns an uppercase HEX code
        oldColor = oldColor.toUpperCase();

        const allElements = document.querySelectorAll('*');
        allElements.forEach(element => {
            const computedStyle = window.getComputedStyle(element);

            // Replace the old color with the new color in all color-related properties
            ['color', 'backgroundColor', 'borderColor'].forEach(property => {
                // Normalize backgroundColor to HEX if it is in RGB format
                let elementColor = computedStyle[property];
                if (elementColor.includes('rgb')) {
                    elementColor = rgbToHex(elementColor);
                }

                if (elementColor === oldColor) {
                    element.style[property] = newColor;
                }
            });
        });
    }


    function removeSpecificDivsAndLogCountOG() {
        const links = document.querySelectorAll('div.hotpicks a[href^="/huxxg.php"]');
        if (links.length === 0) {
            console.log('No div.hotpicks elements found with an \'a\' having href starting with \'/hub.php\'.');
        } else {
            console.log(`Number of div.hotpicks elements found with an 'a' having href starting with '/hub.php': ${links.length}`);
            links.forEach(link => {
                let hotpicksDiv = link.closest('div.hotpicks');
                if (hotpicksDiv) {
                    hotpicksDiv.remove();
                }
            });
        }
    }

    function jew() {

     if (window.location.href === 'https://torrentgalaxy.to/donate') {
        window.location.href = 'https://torrentgalaxy.to/';
        return;
    }

    const links = document.querySelectorAll('div.hotpicks a[onmouseover*="Hot offer!"]');
    if (links.length === 0) {
        // Log if no such links are found
        console.log('No div.hotpicks elements found with an \'a\' having onmouseover containing "Hot offer!".');
    } else {
        // Log how many such links are found
        console.log(`Number of div.hotpicks elements found with an 'a' having onmouseover containing "Hot offer!": ${links.length}`);
        // Remove each parent div.hotpicks of the found links
        links.forEach(link => {
            let hotpicksDiv = link.closest('div.hotpicks');
            if (hotpicksDiv) {
                hotpicksDiv.remove();
            }
        });
    }
}

    // Wait for the document to be fully loaded before observing for changes
    function waitForDocumentBody() {
        if (document.body) {
            if (localStorage.getItem('darkthemev2') === '1') {
            replaceColor('rgb(210, 194, 172)', 'rgb(255, 255, 255)');
            replaceColor('rgb(120, 144, 78)', 'rgb(0, 0, 0)');
            replaceColor('rgb(48, 58, 31)', 'rgb(18, 18, 18)');
            replaceColor('rgb(50, 47, 64)', 'rgb(18, 18, 18)');
            replaceColor('rgb(180, 174, 164)', 'rgb(255, 255, 255)');
            replaceColor('rgb(122, 113, 100)', 'rgb(0, 0, 0)');
            replaceColor('rgb(180, 174, 164)', 'rgb(255, 255, 255)');
            replaceColor('rgb(180, 174, 164)', 'rgb(255, 255, 255)');
            replaceColor('rgb(180, 174, 164)', 'rgb(255, 255, 255)');
            replaceColor('rgb(180, 174, 164)', 'rgb(255, 255, 255)');

            replaceColor('#3c4827', '#000000');
            replaceColor('#d8cab7', '#ffffff');
            replaceColor('#s2f2f2f', '#000000');
            replaceColor('#3f3b50', '#000000');
            replaceColor('#5d87ab', '#ffffff');
            replaceColor('#819FD1', '#ffffff');
            replaceColor('#2f2f2f', '#000000');
            replaceColor('#383838', '#0a0a0a');
            replaceColor('#353535', '#0a0a0a');
            replaceColor('#444444', '#121212');
            replaceColor('#423b48', '#060606');
            replaceColor('#6e236f', '#060606');
            replaceColor('#353146', '#0a0a0a');
            replaceColor('#3c4827', '#000000');
            replaceColor('#3f3b50', '#121212');
            replaceColor('#353146', '#0a0a0a');
        }
            // Configuration of the observer
            const config = { childList: true, subtree: true };

            // Create a MutationObserver to handle dynamically added content
            const observer = new MutationObserver(mutations => {
                mutations.forEach(mutation => {
                    if (mutation.addedNodes) {
                        jew();
                    }
                });
            });

            // Start observing the document for added nodes
            observer.observe(document.body, config);

            // Initial removal of matching divs and log count or 'none found'
            jew();
        } else {
            // If the body isn't available yet, set a timeout to try again
            window.setTimeout(waitForDocumentBody, 50);
        }
    }

    // Start the script
    waitForDocumentBody();
})();