TorrentGalaxyScript

Torrentgalaxy Special Offer Adblocker + Lazy Dark Theme

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==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();
})();