Amazon URL Shortener

Adds a button to copy the short link of Amazon products and optionally modifies the URL in the address bar

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

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

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name         Amazon URL Shortener
// @namespace    https://github.com/Leproide/Amazon_URLShortener/
// @version      1.6.4
// @description:en  Adds a button to copy the short link of Amazon products and optionally modifies the URL in the address bar
// @description:it  Aggiunge un pulsante per copiare il link corto dei prodotti Amazon, opzionalmente modifica l'URL nella barra degli indirizzi.
// @author       Leproide
// @include      *://*.amazon.*/*
// @include       https://*.amazon.co.jp/*
// @include       https://*.amazon.com/*
// @include       https://*.amazon.ae/*
// @include       https://*.amazon.co.uk/*
// @include       https://*.amazon.it/*
// @include       https://*.amazon.in/*
// @include       https://*.amazon.eg/*
// @include       https://*.amazon.com.au/*
// @include       https://*.amazon.nl/*
// @include       https://*.amazon.ca/*
// @include       https://*.amazon.sa/*
// @include       https://*.amazon.sg/*
// @include       https://*.amazon.se/*
// @include       https://*.amazon.de/*
// @include       https://*.amazon.com.tr/*
// @include       https://*.amazon.com.br/*
// @include       https://*.amazon.fr/*
// @include       https://*.amazon.com.be/*
// @include       https://*.amazon.pl/*
// @include       https://*.amazon.com.mx/*
// @include       https://*.amazon.cn/*
// @icon         data:image/jpeg;base64,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
// @license      GPL v2
// @description Adds a button to copy the short link of Amazon products and optionally modifies the URL in the address bar
// ==/UserScript==

(function () {
    'use strict';

    // Configuration: Enable or disable features
    const enableButton = true; // true to add the copy button, false to disable it
    const modifyUrl = true; // true to modify the browser URL, false to leave it unchanged
    const popupDuration = 1500; // Popup duration in milliseconds (1.5 seconds)

    // Function to generate the short link
    function generateShortLink() {
        const currentUrl = window.location.href;
        let match = currentUrl.match(/\/dp\/([A-Z0-9]{10})/); // Find the ASIN in /dp/
        if (!match) {
            match = currentUrl.match(/\/gp\/product\/([A-Z0-9]{10})/); // Find the ASIN in /gp/product/
            if (match) {
                return `${window.location.origin}/dp/${match[1]}`;
            }
        } else {
            return `${window.location.origin}/dp/${match[1]}`;
        }
        return null;
    }

    // Function to copy text to clipboard
    function copyToClipboard(text) {
        const tempInput = document.createElement('input');
        document.body.appendChild(tempInput);
        tempInput.value = text;
        tempInput.select();
        document.execCommand('copy');
        document.body.removeChild(tempInput);
        showPopup(text);
    }

    // Function to show popup
    function showPopup(text) {
        const lang = navigator.language || navigator.userLanguage;
        const message = lang.startsWith('it') ? 'Link copiato in clipboard' : 'Link copied to clipboard';

        const popup = document.createElement('div');
        const line1 = document.createElement('div');
        const line2 = document.createElement('div');

        // Line 1: "Link copiato"
        line1.textContent = message;
        line1.style.marginBottom = '8px';
        line1.style.fontWeight = 'bold';

        // Line 2: Short link
        line2.textContent = text;
        line2.style.wordBreak = 'break-all'; // Prevent text overflow

        // Popup container
        popup.appendChild(line1);
        popup.appendChild(line2);
        popup.style.position = 'fixed';
        popup.style.top = '50%';
        popup.style.left = '50%';
        popup.style.transform = 'translate(-50%, -50%)';
        popup.style.padding = '20px 40px';
        popup.style.backgroundColor = '#ffa41c';
        popup.style.color = '#111';
        popup.style.borderRadius = '12px';
        popup.style.fontSize = '16px';
        popup.style.textAlign = 'center';
        popup.style.boxShadow = '0 8px 15px rgba(0, 0, 0, 0.3)'; // Shadow around the popup
        popup.style.zIndex = '9999';
        popup.style.opacity = '0'; // Start hidden
        popup.style.transition = 'opacity 0.4s'; // Fade effect

        document.body.appendChild(popup);

        // Fade in
        setTimeout(() => {
            popup.style.opacity = '1';
        }, 10);

        // Fade out and remove
        setTimeout(() => {
            popup.style.opacity = '0';
            setTimeout(() => popup.remove(), 400); // Ensure it is removed after fade-out
        }, popupDuration);
    }

    // Modify the URL in the address bar if enabled
    if (modifyUrl) {
        const shortLink = generateShortLink();
        if (shortLink) {
            window.history.replaceState(null, '', shortLink);
        }
    }

    // Add the copy button if enabled
    if (enableButton) {
        // Find the product title
        const productTitleElement = document.getElementById('productTitle');
        if (productTitleElement) {
            // Detect browser language
            const lang = navigator.language || navigator.userLanguage;
            const buttonText = lang.startsWith('it') ? 'Copia Link Breve' : 'Copy Short Link';

            // Create the button
            const copyButton = document.createElement('button');
            copyButton.textContent = buttonText;
            copyButton.style.marginTop = '10px';
            copyButton.style.marginBottom = '4px'; // Add spacing below the button
            copyButton.style.padding = '8px 16px';
            copyButton.style.backgroundColor = '#ffa41c';
            copyButton.style.color = '#111';
            copyButton.style.border = '1px solid #ffa41c';
            copyButton.style.cursor = 'pointer';
            copyButton.style.borderRadius = '20px';
            copyButton.style.display = 'block'; // Ensure the button is on a new line
            copyButton.style.fontSize = '14px';
            copyButton.style.textAlign = 'center';
            copyButton.style.textDecoration = 'none';
            copyButton.style.boxShadow = '0 2px 5px rgba(0, 0, 0, 0.15)';

            // Add click event to the button
            copyButton.addEventListener('click', () => {
                const shortLink = generateShortLink();
                if (shortLink) {
                    copyToClipboard(shortLink);
                } else {
                    const errorText = lang.startsWith('it') ? 'Errore: impossibile generare il link breve.' : 'Error: Unable to generate the short link.';
                    alert(errorText);
                }
            });

            // Insert the button below the product title
            productTitleElement.parentNode.insertBefore(copyButton, productTitleElement.nextSibling);
        }
    }
})();