YouTube Short Link Copier

Copy the short YouTube link directly when pressing Shift + S, and with timestamp when pressing Shift + C.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         YouTube Short Link Copier 
// @namespace    https://greasyfork.org/en/scripts/474134-youtube-short-link-copier
// @version      3.2
// @description  Copy the short YouTube link directly when pressing Shift + S, and with timestamp when pressing Shift + C.
// @author       passerbynwfow
// @match        https://www.youtube.com/*
// @match        https://music.youtube.com/*
// @grant        GM_setClipboard
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    function getVideoIDFromQuery() {
        return new URLSearchParams(window.location.search).get("v");
    }

    function getCurrentPlaybackTimeInSeconds() {
        const videoElem = document.querySelector('video');
        return videoElem ? Math.floor(videoElem.currentTime) : 0;
    }

    document.addEventListener('keydown', function(e) {
        if (!e.shiftKey) return;

        const host = window.location.host;
        const videoID = getVideoIDFromQuery();
        const currentSeconds = getCurrentPlaybackTimeInSeconds();

        if (e.key === 'S') {
            if (host === 'www.youtube.com' && window.location.pathname.startsWith('/shorts/')) {
                GM_setClipboard(window.location.href);
                return;
            }

            const baseLink = host === 'www.youtube.com' ? 'https://youtu.be/' : 'https://music.youtube.com/watch?v=';
            if (videoID) GM_setClipboard(`${baseLink}${videoID}`);
        } else if (e.key === 'C' && videoID) {
            const baseLink = host === 'www.youtube.com' ? 'https://youtu.be/' : 'https://music.youtube.com/watch?v=';
            GM_setClipboard(`${baseLink}${videoID}&t=${currentSeconds}`);
        }
    });
})();