YouTube Shorts URL to Normal URL (Enhanced)

自动将 YouTube Shorts 链接替换为普通视频链接,包括动态导航

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         YouTube Shorts URL to Normal URL (Enhanced)
// @namespace    https://example.com/
// @version      1.1
// @description  自动将 YouTube Shorts 链接替换为普通视频链接,包括动态导航
// @author       yy
// @match        https://*.youtube.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // 检查并转换 Shorts URL 的函数
    function convertShortsUrl() {
        const currentUrl = window.location.href;
        if (currentUrl.includes("/shorts/")) {
            const videoCode = currentUrl.split("/shorts/")[1];
            const normalUrl = `https://www.youtube.com/watch?v=${videoCode}`;
            window.location.replace(normalUrl);
        }
    }

    // 初始调用,处理页面加载时的 Shorts URL
    convertShortsUrl();

    // 监听 URL 变化(支持 YouTube 的动态导航)
    let lastUrl = window.location.href;
    const observer = new MutationObserver(() => {
        const newUrl = window.location.href;
        if (newUrl !== lastUrl) {
            lastUrl = newUrl;
            convertShortsUrl();
        }
    });

    // 监听文档的变化
    observer.observe(document, { subtree: true, childList: true });
})();