Greasy Fork is available in English.

Cqmbo Client for YT!

Anti - Adblocker Removal, Download Video, Auto Like & More!

// ==UserScript==
// @name         Cqmbo Client for YT!
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Anti - Adblocker Removal, Download Video, Auto Like & More!
// @author       Cqmbo__
// @match        https://www.youtube.com/*
// @icon     https://yt3.googleusercontent.com/ofXbHpiwGc4bYnwwljjZJo53E7JRODr-SG32NPV1W6QiUnGUtVAYDwTP2NMz2pUPGnt99Juh5w=s160-c-k-c0x00ffffff-no-rj
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';


var removalInterval;
    var isRemoving = false;
    var removeAdsInterval
    var isRemovingAds = false;
    var autoLikeInterval;
    var isAutoLiking = false;
    var autoDislikeInterval;
    var isAutoDisliking = false;
    var repeatVideoInterval;
    var isRepeating = false;
    var autoSubscribeInterval;
    var isAutoSubscribing = false;
    var ishidden = false;

function toggleelements(){
    const elements = [
        'download-button',
        'screenshot-button',
        'thumbnail-button',
        'repeat-button',
        'youtubelabel',
        'youtubeinput',
        'auto-subscribe-button',
        'colored-ui-button',
        'auto-dislike-button',
        'auto-like-button',
        'removeads-button',
        'removal-button',
        ];

            elements.forEach(id => {
            const toggleableelement = document.getElementById(id);
            if (toggleableelement) {
                toggleableelement.style.display = toggleableelement.style.display === 'none' ? 'block' : 'none';
            }
        });
    }


    var toggleelementbutton = document.createElement('button');
    toggleelementbutton.id = 'toggle-element-button';
    toggleelementbutton.textContent = 'Hide Menu';
    toggleelementbutton.style.position = 'fixed';
    toggleelementbutton.style.top = '520px';
    toggleelementbutton.style.right = '10px';
    toggleelementbutton.style.zIndex = '10000';
    toggleelementbutton.title = 'Toggle Menu/Functions';

    toggleelementbutton.addEventListener('click', function() {
        if (!ishidden) {
            toggleelementbutton.textContent = 'Show Menu';
             toggleelements();
             ishidden = true;
        } else {
            toggleelementbutton.textContent = 'Hide Menu';
            toggleelements();
            ishidden = false;
        }
    });

    document.body.appendChild(toggleelementbutton);


    function startRemovingElement() {
        removalInterval = setInterval(function() {
            var element1 = document.querySelector('.style-scope.yt-playability-error-supported-renderers');
            if (element1) {
                element1.remove();
            }
        }, 100);
        isRemoving = true;
    }

    function stopRemovingElement() {
        clearInterval(removalInterval);
        isRemoving = false;
    }

    var removalButton = document.createElement('button');
    removalButton.id = 'removal-button';
    removalButton.textContent = 'Remove Anti-Adblocker (Disabled)';
    removalButton.style.position = 'fixed';
    removalButton.style.top = '160px';
    removalButton.style.right = '10px';
    removalButton.style.zIndex = '10000';
    removalButton.title = 'Remove Anti-Adblocker';

    removalButton.addEventListener('click', function() {
        if (!isRemoving) {
            removalButton.textContent = 'Remove Anti-Adblocker (Enabled)';
            startRemovingElement();
        } else {
            removalButton.textContent = 'Remove Anti-Adblocker (Disabled)';
            stopRemovingElement();
        }
    });

    document.body.appendChild(removalButton);

    var autoLikeButton = document.createElement('button');
    autoLikeButton.id = 'auto-like-button';
    autoLikeButton.textContent = 'Auto Like (Disabled)';
    autoLikeButton.style.position = 'fixed';
    autoLikeButton.style.top = '410px';
    autoLikeButton.style.right = '10px';
    autoLikeButton.style.zIndex = '10000';
    autoLikeButton.title = 'Automatically like video every 10 seconds';

    autoLikeButton.addEventListener('click', function() {
        if (!isAutoLiking) {
            autoLikeButton.textContent = 'Auto Like (Enabled)';
            startAutoLiking();
        } else {
            autoLikeButton.textContent = 'Auto Like (Disabled)';
            stopAutoLiking();
        }
    });

    document.body.appendChild(autoLikeButton);

    function startAutoLiking() {
        clickLikeButton(); // Click immediately when enabled
        autoLikeInterval = setInterval(clickLikeButton, 10000);
        isAutoLiking = true;
    }

    function stopAutoLiking() {
        clearInterval(autoLikeInterval);
        isAutoLiking = false;
    }


        function clickLikeButton() {
        var dislikeButton = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--icon-button.yt-spec-button-shape-next--segmented-end');
        var likeButton = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--icon-leading.yt-spec-button-shape-next--segmented-start');
        if (likeButton && likeButton.getAttribute('aria-pressed') === 'false' && !isAutoDisliking && dislikeButton && dislikeButton.getAttribute('aria-pressed') === 'false') {
            likeButton.click();
        }
        var ShortsdislikeButton = document.querySelector('[aria-label="Dislike this video"]');
        var ShortslikeButton = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-l.yt-spec-button-shape-next--icon-button');
        var DislikeButtonConfirmer = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--filled.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-l.yt-spec-button-shape-next--icon-button');
        if (ShortslikeButton && ShortslikeButton.getAttribute('aria-pressed') === 'false' && !isAutoDisliking && ShortsdislikeButton && !DislikeButtonConfirmer) {
            ShortslikeButton.click();
        }
    }

    var autoDislikeButton = document.createElement('button');
    autoDislikeButton.id = 'auto-dislike-button';
    autoDislikeButton.textContent = 'Auto Dislike (Disabled)';
    autoDislikeButton.style.position = 'fixed';
    autoDislikeButton.style.top = '500px';
    autoDislikeButton.style.right = '10px';
    autoDislikeButton.style.zIndex = '10000';
    autoDislikeButton.title = 'Automatically dislike video every 10 seconds';

    autoDislikeButton.addEventListener('click', function() {
        if (!isAutoDisliking) {
            autoDislikeButton.textContent = 'Auto Dislike (Enabled)';
            startAutoDisliking();
        } else {
            autoDislikeButton.textContent = 'Auto Dislike (Disabled)';
            stopAutoDisliking();
        }
    });

    document.body.appendChild(autoDislikeButton);

    function startAutoDisliking() {
        clickDislikeButton(); // Click immediately when enabled
        autoDislikeInterval = setInterval(clickDislikeButton, 10000);
        isAutoDisliking = true;
    }

    function stopAutoDisliking() {
        clearInterval(autoDislikeInterval);
        isAutoDisliking = false;
    }

    function clickDislikeButton() {
        var dislikeButton = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--icon-button.yt-spec-button-shape-next--segmented-end');
        var likeButton = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--icon-leading.yt-spec-button-shape-next--segmented-start');
        if (dislikeButton && dislikeButton.getAttribute('aria-pressed') === 'false' && !isAutoLiking && likeButton && likeButton.getAttribute('aria-pressed') === 'false') {
            dislikeButton.click();
        }
        var ShortsdislikeButton = document.querySelector('[aria-label="Dislike this video"]');
        var ShortslikeButton = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-l.yt-spec-button-shape-next--icon-button');
        var DislikeButtonConfirmer = document.querySelector('.yt-spec-button-shape-next.yt-spec-button-shape-next--filled.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-l.yt-spec-button-shape-next--icon-button');
        if (ShortsdislikeButton && !isAutoLiking && ShortslikeButton && ShortslikeButton.getAttribute('aria-pressed') === 'false' && !DislikeButtonConfirmer) {
            ShortsdislikeButton.click();
        }
    }

    var validButtons = true;
    // Create the screenshot button
    const screenshotButton = document.createElement('button');
    screenshotButton.id = 'screenshot-button';
    screenshotButton.title = 'Screenshot Video at Current Timestamp';
    screenshotButton.style.position = 'fixed';
    screenshotButton.style.top = '210px';
    screenshotButton.style.right = '10px';
    screenshotButton.style.zIndex = '10000';
    screenshotButton.style.backgroundColor = '#4caf50';
    screenshotButton.style.color = 'white';

    // Create and append the screenshot icon
    const screenshotIcon = document.createElement('img');
    screenshotIcon.src = 'https://static-00.iconduck.com/assets.00/screenshot-icon-512x512-hmhvvh50.png';
    screenshotIcon.alt = 'Screenshot';
    screenshotIcon.style.width = '24px';
    screenshotIcon.style.height = '24px';
    screenshotButton.appendChild(screenshotIcon);

    // Create the thumbnail button
    const thumbnailButton = document.createElement('button');
    thumbnailButton.id = 'thumbnail-button';
    thumbnailButton.title = 'Download Video Thumbnail';
    thumbnailButton.style.position = 'fixed';
    thumbnailButton.style.top = '255px';
    thumbnailButton.style.right = '10px';
    thumbnailButton.style.zIndex = '10000';
    thumbnailButton.style.backgroundColor = '#ff5722';
    thumbnailButton.style.color = 'white';

    // Create and append the thumbnail icon
    const thumbnailIcon = document.createElement('img');
    thumbnailIcon.src = 'https://th.bing.com/th/id/R.5d0756cfcc115698fa5571019979269b?rik=CyyaHNz7YvDWyQ&pid=ImgRaw&r=0';
    thumbnailIcon.alt = 'Thumbnail';
    thumbnailIcon.style.width = '24px';
    thumbnailIcon.style.height = '24px';
    thumbnailButton.appendChild(thumbnailIcon);

    // Create the download button
    const downloadButton = document.createElement('button');
    downloadButton.id = 'download-button';
    downloadButton.title = 'Download Video';
    downloadButton.style.position = 'fixed';
    downloadButton.style.top = '300px';
    downloadButton.style.right = '10px';
    downloadButton.style.zIndex = '10000';
    downloadButton.style.backgroundColor = '#2196F3';
    downloadButton.style.color = 'white';

    // Create and append the download icon
    const downloadIcon = document.createElement('img');
    downloadIcon.src = 'https://th.bing.com/th/id/OIP.tdSxNLAn5NVt39tvjk9tIAHaHa?w=159&h=180&c=7&r=0&o=5&pid=1.7';
    downloadIcon.alt = 'Download';
    downloadIcon.style.width = '24px';
    downloadIcon.style.height = '24px';
    downloadButton.appendChild(downloadIcon);


    // Create the speed button
    const speedButton = document.createElement('button');
    speedButton.id = 'speed-button';
    speedButton.title = 'Modify Speed of Video';
    speedButton.style.position = 'fixed';
    speedButton.style.top = '345px';
    speedButton.style.right = '10px';
    speedButton.style.zIndex = '10000';
    speedButton.style.backgroundColor = '#ffff00';
    speedButton.style.color = 'white';

    // Create and append the speed icon
    const speedIcon = document.createElement('img');
    speedIcon.src = 'https://th.bing.com/th/id/OIP.FqXL96sm01sDe4pfJAl0cwHaHa?w=180&h=180&c=7&r=0&o=5&pid=1.7';
    speedIcon.alt = 'Speed';
    speedIcon.style.width = '24px';
    speedIcon.style.height = '24px';
    speedButton.appendChild(speedIcon);


    function renderizarContenido() {
        if (validButtons) {
            validButtons = false;
    // Append the buttons to the body
    document.body.appendChild(screenshotButton);
    document.body.appendChild(thumbnailButton);
    document.body.appendChild(speedButton);
    document.body.appendChild(downloadButton);

            // Attach event listeners for buttons
            attachButtonListeners();
        }
    }

    function attachButtonListeners() {
        const screenShotButton = document.getElementById('screenshot-button');
        if (screenShotButton) {
            screenShotButton.onclick = () => {
                const video = document.querySelector('video');
                const canvas = document.createElement('canvas');
                canvas.width = video.videoWidth;
                canvas.height = video.videoHeight;
                const context = canvas.getContext('2d');
                context.drawImage(video, 0, 0, canvas.width, canvas.height);
                const imagenURL = canvas.toDataURL('image/png');
                const linkDownload = document.createElement('a');
                linkDownload.href = imagenURL;
                const titleVideo = document.querySelector('h1.style-scope.ytd-watch-metadata').innerText;
                linkDownload.download = `${video.currentTime.toFixed(0)}s_${titleVideo}.png`;
                linkDownload.click();
            };
        }

        const downloadButton = document.getElementById('download-button');
        if (downloadButton) {
            downloadButton.onclick = () => {
                let currentUrl = window.location.href;

                // Check if the URL contains 'shorts/' and replace it with 'watch?v='
                if (currentUrl.includes('/shorts/')) {
                    currentUrl = currentUrl.replace('/shorts/', '/watch?v=');
                }

                const CutURL = new URLSearchParams(new URL(currentUrl).search);
                let enlace = CutURL.get('v');

                if (enlace) {
                    window.open(
                        `https://www.y2mate.com/en/convert-youtube/${enlace}`,
                        'popUpWindow',
                        'height=800,width=1000,left=50%,top=100,resizable=no,scrollbars=yes,toolbar=no,menubar=yes,location=no,directories=yes,status=no'
                    );
                } else {
                    alert('No video ID found in the URL.');
                }
            };
        }

        const thumbnailButton = document.getElementById('thumbnail-button');
        if (thumbnailButton) {
            thumbnailButton.onclick = () => {
                let currentUrl = window.location.href;

                // Check if the URL contains 'shorts/' and replace it with 'watch?v='
                if (currentUrl.includes('/shorts/')) {
                    currentUrl = currentUrl.replace('/shorts/', '/watch?v=');
                }

                const CutURL = new URLSearchParams(new URL(currentUrl).search);
                let enlace = CutURL.get('v');

                if (enlace) {
                    const maxResImageUrl = `https://i1.ytimg.com/vi/${enlace}/maxresdefault.jpg`;
                    const highQualityImageUrl = `https://i1.ytimg.com/vi/${enlace}/hqdefault.jpg`;

                    fetchImage(maxResImageUrl)
                        .catch(() => fetchImage(highQualityImageUrl))
                        .catch((error) => {
                            alert('No image found');
                            console.error('Error getting image:', error);
                        });
                }
            };
        }
        var ans = '';
        const speedbutton = document.getElementById('speed-button');
        speedbutton.onclick = () => {
        ans = prompt('How much do you want to in/decrease the speed of your video? 1 is default.');
            document.getElementsByTagName('video')[0].playbackRate = Number(ans);
        }
    }

    function fetchImage(imageUrl) {
        return fetch(imageUrl)
            .then((response) => {
                if (!response.ok) {
                    throw new Error(`HTTP error! Status: ${response.status}`);
                }
                return response.blob();
            })
            .then((blob) => {
                const imageSizeKB = blob.size / 1024;

                if (imageSizeKB >= 20) {
                    window.open(
                        imageUrl,
                        'popUpWindow',
                        'height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'
                    );

                    const imageUrlObject = URL.createObjectURL(blob);
                    const linkDownload = document.createElement('a');
                    linkDownload.href = imageUrlObject;
                    const titleVideo = document.querySelector('h1.style-scope.ytd-watch-metadata').innerText;
                    linkDownload.download = `thumbnail_${titleVideo}.jpg`;
                    linkDownload.click();
                } else {
                    alert('No image found');
                    throw new Error('No image found');
                }
            });
    }




    function observeDOM() {
        const observer = new MutationObserver(mutations => {
            mutations.forEach(mutation => {
                if (mutation.type === 'childList' && mutation.addedNodes.length) {
                    renderizarContenido();
                }
            });
        });

        observer.observe(document.body, { childList: true, subtree: true });
    }

    observeDOM();

    var coloredElements = ['video-title', 'style-scope ytd-watch-metadata'];
    var whiteElements = ['primary'];

    const rainbowColors = ['#ff0000', '#ff7f00', '#ffff00', '#00ff00', '#0000ff', '#4b0082', '#9400d3'];

    let currentColor = 'black'; // Default color
    let savedCustomColor = 'black'; // Save custom color to restore it later
    let isCustomColorEnabled = false;
    let isRainbowEnabled = false;
    let isColoredUIEnabled = false;
    let rainbowFlashInterval;

    function toggleColoredUI() {
        const button = document.getElementById('colored-ui-button');
        if (!isColoredUIEnabled) {
            isColoredUIEnabled = true;
            button.textContent = 'Colored UI (Enabled)';
            createColoredUIDropdown();
            if (isCustomColorEnabled) {
                applyCustomColor(savedCustomColor);
            } else if (isRainbowEnabled) {
                startRainbowFlash();
            } else {
                applyCustomColor(currentColor);
            }
        } else {
            isColoredUIEnabled = false;
            button.textContent = 'Colored UI (Disabled)';
            removeColoredUIDropdown();
            applyCustomColor('black');
            stopRainbowFlash();
        }
    }

    function createColoredUIDropdown() {
        const dropdown = document.createElement('div');
        dropdown.id = 'colored-ui-dropdown';
        dropdown.style.position = 'fixed';
        dropdown.style.top = '360px';
        dropdown.style.right = '10px';
        dropdown.style.zIndex = '10000';

        const label = document.createElement('div');
        label.textContent = 'Select Color:';
        dropdown.appendChild(label);

        const defaultOption = createOptionElement('Black (Default)', 'black');
        const customOption = createOptionElement('Custom Color', 'custom');
        const rainbowOption = createOptionElement('Rainbow Flash', 'rainbow');
        const dropdownMenu = document.createElement('select');
        dropdownMenu.id = 'colored-ui-dropdown-menu';
        dropdownMenu.appendChild(defaultOption);
        dropdownMenu.appendChild(customOption);
        dropdownMenu.appendChild(rainbowOption);
        dropdown.appendChild(dropdownMenu);

        if (isCustomColorEnabled) {
            dropdownMenu.value = 'custom';
        } else if (isRainbowEnabled) {
            dropdownMenu.value = 'rainbow';
        } else {
            dropdownMenu.value = currentColor;
        }

        dropdownMenu.addEventListener('change', function() {
            const selectedColor = this.value;
            if (selectedColor === 'custom') {
                isCustomColorEnabled = true;
                stopRainbowFlash();
                openCustomColorPicker();
            } else if (selectedColor === 'rainbow') {
                isRainbowEnabled = true;
                isCustomColorEnabled = false;
                startRainbowFlash();
            } else {
                isCustomColorEnabled = false;
                stopRainbowFlash();
                applyCustomColor(selectedColor);
            }
        });

        document.body.appendChild(dropdown);
    }

    function removeColoredUIDropdown() {
        const dropdown = document.getElementById('colored-ui-dropdown');
        if (dropdown) {
            dropdown.remove();
        }
    }

    function createOptionElement(text, value) {
        const option = document.createElement('option');
        option.text = text;
        option.value = value;
        return option;
    }

    function openCustomColorPicker() {
        if (document.getElementById('custom-color-picker')) {
            return;
        }

        const customColorPicker = document.createElement('input');
        customColorPicker.type = 'color';
        customColorPicker.id = 'custom-color-picker';
        customColorPicker.style.position = 'fixed';
        customColorPicker.style.top = '395px';
        customColorPicker.style.right = '10px';
        customColorPicker.style.zIndex = '10000';

        customColorPicker.addEventListener('input', function() {
            const selectedColor = this.value;
            currentColor = selectedColor;
            savedCustomColor = selectedColor;
            applyCustomColor(selectedColor);
        });

        document.body.appendChild(customColorPicker);
    }

    function applyCustomColor(color) {
        coloredElements.forEach(elementId => {
            const elements = document.getElementsByClassName(elementId);
            for (let element of elements) {
                element.style.color = color;
            }
        });

        whiteElements.forEach(elementId => {
            const elements = document.getElementsByClassName(elementId);
            for (let element of elements) {
                element.style.color = (isColoredUIEnabled && (isCustomColorEnabled || isRainbowEnabled)) ? color : 'white';
            }
        });

        currentColor = color;
    }

    function startRainbowFlash() {
        if (rainbowFlashInterval) {
            clearInterval(rainbowFlashInterval);
        }
        let currentIndex = 0;

        rainbowFlashInterval = setInterval(() => {
            const currentColor = rainbowColors[currentIndex];
            applyCustomColor(currentColor);
            currentIndex = (currentIndex + 1) % rainbowColors.length;
        }, 500);
    }

    function stopRainbowFlash() {
        clearInterval(rainbowFlashInterval);
        isRainbowEnabled = false;
        if (!isColoredUIEnabled) {
            applyCustomColor('black');
        } else if (isCustomColorEnabled) {
            applyCustomColor(savedCustomColor);
        } else {
            applyCustomColor(currentColor);
        }
    }

    function toggleElement() {
        const elementToToggle = [
            'custom-color-picker'
        ];

        elementToToggle.forEach(id => {
            const element = document.getElementById(id);
            if (element) {
                element.style.display = element.style.display === 'none' ? 'block' : 'none';
            }
        });
    }

    function createColoredUIButton() {
        if (document.getElementById('colored-ui-button')) {
            return;
        }

        const button = document.createElement('button');
        button.id = 'colored-ui-button';
        button.textContent = 'Colored UI (Disabled)';
        button.style.position = 'fixed';
        button.style.top = '480px';
        button.style.right = '10px';
        button.title = 'Color Selected Elements';
        button.style.zIndex = '10000';

        button.addEventListener('click', toggleElement);
        button.addEventListener('click', toggleColoredUI);

        document.body.appendChild(button);
    }

    createColoredUIButton();

    // New background function
    function createBackgroundFunctionality() {
        const youtubeLabel = document.createElement('label');
        youtubeLabel.textContent = 'Background Image:';
        youtubeLabel.style.position = 'fixed';
        youtubeLabel.style.top = '430px';
        youtubeLabel.style.right = '10px';
        youtubeLabel.style.zIndex = '10000';
        youtubeLabel.id = 'youtubelabel';
        youtubeLabel.style.color = 'red';

        const youtubeInput = document.createElement('input');
        youtubeInput.type = 'text';
        youtubeInput.placeholder = 'Paste image URL here...';
        youtubeInput.style.position = 'fixed';
        youtubeInput.style.top = '460px';
        youtubeInput.style.right = '10px';
        youtubeInput.style.zIndex = '10000';
        youtubeInput.id = 'youtubeinput';

        youtubeInput.addEventListener('keydown', function(event) {
            if (event.key === 'Enter') {
                const url = youtubeInput.value;
                console.log('URL Entered:', url); // Debugging line
                if (url) {
                    setBackground(url);
                } else {
                    clearBackground();
                }
            }
        });

        document.body.appendChild(youtubeLabel);
        document.body.appendChild(youtubeInput);
    }

    function setBackground(url) {
        const primaryInner = document.getElementById('primary-inner');
        console.log('Setting background for primary-inner with URL:', url); // Debugging line
        if (primaryInner) {
            primaryInner.style.backgroundImage = `url(${url})`;
            primaryInner.style.backgroundSize = 'cover';
            primaryInner.style.backgroundPosition = 'center';
        }
    }

    function clearBackground() {
        const primaryInner = document.getElementById('primary-inner');
        console.log('Clearing background for primary-inner'); // Debugging line
        if (primaryInner) {
            primaryInner.style.backgroundImage = '';
        }
    }

    createBackgroundFunctionality();

    var autoSubscribeButton = document.createElement('button');
    autoSubscribeButton.id = 'auto-subscribe-button';
    autoSubscribeButton.textContent = 'Auto Subscribe (Disabled)';
    autoSubscribeButton.style.position = 'fixed';
    autoSubscribeButton.style.top = '120px';
    autoSubscribeButton.style.right = '10px';
    autoSubscribeButton.style.zIndex = '10000';
    autoSubscribeButton.title = 'Automatically subscribe to channels';

    autoSubscribeButton.addEventListener('click', function() {
        if (!isAutoSubscribing) {
            autoSubscribeButton.textContent = 'Auto Subscribe (Enabled)';
            startAutoSubscribing();
        } else {
            autoSubscribeButton.textContent = 'Auto Subscribe (Disabled)';
            stopAutoSubscribing();
        }
    });

    document.body.appendChild(autoSubscribeButton);

    function startAutoSubscribing() {
        clickSubscribeButton(); // Click immediately when enabled
        autoSubscribeInterval = setInterval(clickSubscribeButton, 10000);
        isAutoSubscribing = true;
    }

    function stopAutoSubscribing() {
        clearInterval(autoSubscribeInterval);
        isAutoSubscribing = false;
    }

    function clickSubscribeButton() {
        var subscribeButton = document.querySelector('[aria-label^="Subscribe to"]');
        if (subscribeButton && subscribeButton.textContent.includes('Subscribe')) {
            subscribeButton.click();
        }
    }


})();