YouTube Link Fixer

Remove YouTube redirections and show full links in descriptions.

// ==UserScript==
// @name        YouTube Link Fixer
// @namespace   Violentmonkey Scripts
// @match        *://www.youtube.com/*
// @match        *://*.youtu.be/*
// @grant       none
// @version     1.0
// @author      TimeTravel_0
// @license GPLv3
// @description Remove YouTube redirections and show full links in descriptions.
// ==/UserScript==

(function() {
    'use strict';

    // Function to clean YouTube redirect links
    function cleanRedirectLinks() {
        document.querySelectorAll('a[href*="youtube.com/redirect"]').forEach(anchor => {
            const urlParams = new URLSearchParams(new URL(anchor.href).search);
            const directUrl = urlParams.get('q'); // Get actual URL from ?q=
            if (directUrl) {
                anchor.href = decodeURIComponent(directUrl);
            }
        });
    }

    // Function to replace truncated text in video descriptions with full URLs
    function replaceTruncatedLinks() {
        document.querySelectorAll('#description-inline-expander a').forEach(anchor => {
            if (anchor.href && !anchor.href.includes('youtube.com') && !anchor.href.includes('youtu.be')) {
                anchor.textContent = anchor.href;
            }
        });
    }


    // Run on initial page load
    cleanRedirectLinks();
    replaceTruncatedLinks();

    // Use MutationObserver to watch for dynamic content changes
    const observer = new MutationObserver(() => {
        cleanRedirectLinks();
        replaceTruncatedLinks();
    });

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

})();