Get YouTube Channel URLs

Gets all of the Channel URLs for your information

// ==UserScript==
// @name     Get YouTube Channel URLs
// @description Gets all of the Channel URLs for your information
// @version  2.0
// @match    https://*.youtube.com/@*
// @match    https://www.youtube.com/@*
// @match    https://youtube.com/@*
// @match    https://www.youtube.com/@
// @match    https://*.youtube.com/c/*
// @match    https://*.youtube.com/user/*
// @match    https://www.youtube.com/channel/*
// @match    https://*.youtube.com/channel/*
// @run-at   document-start
// @grant    GM_setClipboard
// @grant    GM_registerMenuCommand
// @grant    GM_openInTab
// @icon     https://www.google.com/s2/favicons?domain=youtube.com
// @namespace https://github.com/Vandekieft/MonkeyScripts/
// @license  MIT
// ==/UserScript==


(function() {
    'use strict';

    function refreshPage() {
        location.reload();
    }

    function extractChannelURLs() {
        var htmlContent = document.documentElement.innerHTML;
        var channelUrlRegex = /"channelUrl":"(https:\/\/www\.youtube\.com\/channel\/[a-zA-Z0-9_-]*)"/;
        var vanityUrlRegex = /"vanityChannelUrl":"(http:\/\/www\.youtube\.com\/@[a-zA-Z0-9_-]*)"/;
        var channelUrlMatch = htmlContent.match(channelUrlRegex);
        var vanityUrlMatch = htmlContent.match(vanityUrlRegex);
        var channelUrl = null;
        var vanityUrl = null;

        if (channelUrlMatch) {
            channelUrl = channelUrlMatch[1];
            console.log('Channel URL:', channelUrl);
        }
        if (vanityUrlMatch) {
            vanityUrl = vanityUrlMatch[1];
            console.log('Vanity URL:', vanityUrl);
        }

        var box = document.createElement('div');
        box.style.position = 'fixed';
        box.style.left = '50%';
        box.style.top = '50%';
        box.style.transform = 'translate(-50%, -50%)';
        box.style.backgroundColor = '#333';
        box.style.color = 'cyan';
        box.style.border = '1px solid black';
        box.style.padding = '10px';
        box.style.zIndex = '9999';
        box.style.maxWidth = '80%';
        box.style.overflow = 'hidden';

        var urlsContainer = document.createElement('div');
        urlsContainer.style.marginBottom = '10px';

        if (channelUrl) {
            var channelUrlSection = createURLSection('Channel URL', channelUrl);
            urlsContainer.appendChild(channelUrlSection);
        }
        if (vanityUrl) {
            var vanityUrlSection = createURLSection('Vanity URL', vanityUrl);
            urlsContainer.appendChild(vanityUrlSection);
        }

        var closeButton = createButton('Close', function() {
            box.parentNode.removeChild(box);
        });
        closeButton.style.float = 'right';

        box.appendChild(urlsContainer);
        box.appendChild(closeButton);

        document.body.appendChild(box);
    }

    function createURLSection(label, url) {
        var section = document.createElement('div');
        section.style.marginBottom = '15px';

        var labelElement = document.createElement('span');
        labelElement.textContent = label + ': ';
        labelElement.style.fontSize = '16px';
        labelElement.style.fontWeight = 'bold';
        labelElement.style.fontFamily = 'YouTube Sans';
        section.appendChild(labelElement);

        var urlElement = document.createElement('span');
        urlElement.textContent = url;
        urlElement.style.wordBreak = 'break-all';
        urlElement.style.fontSize = '16px';
        urlElement.style.fontFamily = 'YouTube Sans';
        section.appendChild(urlElement);

        var copyButton = createButton('Copy', function() {
            GM_setClipboard(url);
        });
        copyButton.style.marginRight = '10px';
        copyButton.style.marginLeft = '10px';
        copyButton.style.fontSize = '12px';
        copyButton.style.float = 'right';
        section.appendChild(copyButton);

        return section;
    }

    function createButton(text, onClick) {
        var button = document.createElement('button');
        button.textContent = text;
        button.style.padding = '5px 10px';
        button.style.marginRight = '5px';
        button.style.backgroundColor = '#555';
        button.style.color = 'white';
        button.style.border = 'none';
        button.style.borderRadius = '3px';
        button.style.cursor = 'pointer';
        button.style.fontSize = '12px';
        button.addEventListener('click', onClick);
        return button;
    }

    GM_registerMenuCommand('Load Channel URLs', function() {
        refreshPage();
    });

    GM_registerMenuCommand('Show Loaded Channel URLs', function() {
        extractChannelURLs();
    });
})();