Greasy Fork镜像 还支持 简体中文。

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

QingJ © 2025

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