Amazon URL Shortener

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

当前为 2025-02-09 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Amazon URL Shortener
  3. // @namespace https://github.com/Leproide/Amazon_URLShortener/
  4. // @version 1.6.2
  5. // @description:en Adds a button to copy the short link of Amazon products and optionally modifies the URL in the address bar
  6. // @description:it Aggiunge un pulsante per copiare il link corto dei prodotti Amazon, opzionalmente modifica l'URL nella barra degli indirizzi.
  7. // @author Leproide
  8. // @include *://www.amazon.*/*
  9. // @include *amazon.it/*
  10. // @include *amazon.co.jp/*
  11. // @icon data:image/jpeg;base64,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
  12. // @license GPL v2
  13. // @description Adds a button to copy the short link of Amazon products and optionally modifies the URL in the address bar
  14. // ==/UserScript==
  15.  
  16. (function () {
  17. 'use strict';
  18.  
  19. // Configuration: Enable or disable features
  20. const enableButton = true; // true to add the copy button, false to disable it
  21. const modifyUrl = true; // true to modify the browser URL, false to leave it unchanged
  22. const popupDuration = 1500; // Popup duration in milliseconds (1.5 seconds)
  23.  
  24. // Function to generate the short link
  25. function generateShortLink() {
  26. const currentUrl = window.location.href;
  27. let match = currentUrl.match(/\/dp\/([A-Z0-9]{10})/); // Find the ASIN in /dp/
  28. if (!match) {
  29. match = currentUrl.match(/\/gp\/product\/([A-Z0-9]{10})/); // Find the ASIN in /gp/product/
  30. if (match) {
  31. return `${window.location.origin}/dp/${match[1]}`;
  32. }
  33. } else {
  34. return `${window.location.origin}/dp/${match[1]}`;
  35. }
  36. return null;
  37. }
  38.  
  39. // Function to copy text to clipboard
  40. function copyToClipboard(text) {
  41. const tempInput = document.createElement('input');
  42. document.body.appendChild(tempInput);
  43. tempInput.value = text;
  44. tempInput.select();
  45. document.execCommand('copy');
  46. document.body.removeChild(tempInput);
  47. showPopup(text);
  48. }
  49.  
  50. // Function to show popup
  51. function showPopup(text) {
  52. const lang = navigator.language || navigator.userLanguage;
  53. const message = lang.startsWith('it') ? 'Link copiato in clipboard' : 'Link copied to clipboard';
  54.  
  55. const popup = document.createElement('div');
  56. const line1 = document.createElement('div');
  57. const line2 = document.createElement('div');
  58.  
  59. // Line 1: "Link copiato"
  60. line1.textContent = message;
  61. line1.style.marginBottom = '8px';
  62. line1.style.fontWeight = 'bold';
  63.  
  64. // Line 2: Short link
  65. line2.textContent = text;
  66. line2.style.wordBreak = 'break-all'; // Prevent text overflow
  67.  
  68. // Popup container
  69. popup.appendChild(line1);
  70. popup.appendChild(line2);
  71. popup.style.position = 'fixed';
  72. popup.style.top = '50%';
  73. popup.style.left = '50%';
  74. popup.style.transform = 'translate(-50%, -50%)';
  75. popup.style.padding = '20px 40px';
  76. popup.style.backgroundColor = '#ffa41c';
  77. popup.style.color = '#111';
  78. popup.style.borderRadius = '12px';
  79. popup.style.fontSize = '16px';
  80. popup.style.textAlign = 'center';
  81. popup.style.boxShadow = '0 8px 15px rgba(0, 0, 0, 0.3)'; // Shadow around the popup
  82. popup.style.zIndex = '9999';
  83. popup.style.opacity = '0'; // Start hidden
  84. popup.style.transition = 'opacity 0.4s'; // Fade effect
  85.  
  86. document.body.appendChild(popup);
  87.  
  88. // Fade in
  89. setTimeout(() => {
  90. popup.style.opacity = '1';
  91. }, 10);
  92.  
  93. // Fade out and remove
  94. setTimeout(() => {
  95. popup.style.opacity = '0';
  96. setTimeout(() => popup.remove(), 400); // Ensure it is removed after fade-out
  97. }, popupDuration);
  98. }
  99.  
  100. // Modify the URL in the address bar if enabled
  101. if (modifyUrl) {
  102. const shortLink = generateShortLink();
  103. if (shortLink) {
  104. window.history.replaceState(null, '', shortLink);
  105. }
  106. }
  107.  
  108. // Add the copy button if enabled
  109. if (enableButton) {
  110. // Find the product title
  111. const productTitleElement = document.getElementById('productTitle');
  112. if (productTitleElement) {
  113. // Detect browser language
  114. const lang = navigator.language || navigator.userLanguage;
  115. const buttonText = lang.startsWith('it') ? 'Copia Link Breve' : 'Copy Short Link';
  116.  
  117. // Create the button
  118. const copyButton = document.createElement('button');
  119. copyButton.textContent = buttonText;
  120. copyButton.style.marginTop = '10px';
  121. copyButton.style.marginBottom = '4px'; // Add spacing below the button
  122. copyButton.style.padding = '8px 16px';
  123. copyButton.style.backgroundColor = '#ffa41c';
  124. copyButton.style.color = '#111';
  125. copyButton.style.border = '1px solid #ffa41c';
  126. copyButton.style.cursor = 'pointer';
  127. copyButton.style.borderRadius = '20px';
  128. copyButton.style.display = 'block'; // Ensure the button is on a new line
  129. copyButton.style.fontSize = '14px';
  130. copyButton.style.textAlign = 'center';
  131. copyButton.style.textDecoration = 'none';
  132. copyButton.style.boxShadow = '0 2px 5px rgba(0, 0, 0, 0.15)';
  133.  
  134. // Add click event to the button
  135. copyButton.addEventListener('click', () => {
  136. const shortLink = generateShortLink();
  137. if (shortLink) {
  138. copyToClipboard(shortLink);
  139. } else {
  140. const errorText = lang.startsWith('it') ? 'Errore: impossibile generare il link breve.' : 'Error: Unable to generate the short link.';
  141. alert(errorText);
  142. }
  143. });
  144.  
  145. // Insert the button below the product title
  146. productTitleElement.parentNode.insertBefore(copyButton, productTitleElement.nextSibling);
  147. }
  148. }
  149. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址