// ==UserScript==
// @name 亚马逊Asin提取
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Add a button to the page; clicking it extracts all ASIN values, combines them with Amazon product URL, displays for easy copying, and auto-closes the display on copy.
// @author You
// @match https://www.amazon.com/s?k=*
// @match https://www.amazon.com/gp/bestsellers/*
// @match https://www.amazon.de/*
// @match https://www.amazon.es/*
// @match https://www.amazon.it/*
// @match https://www.amazon.fr/*
// @match https://www.amazon.co.uk/*
// @grant none
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/490998/%E4%BA%9A%E9%A9%AC%E9%80%8AAsin%E6%8F%90%E5%8F%96.user.js
// @updateURL https://update.greasyfork.icu/scripts/490998/%E4%BA%9A%E9%A9%AC%E9%80%8AAsin%E6%8F%90%E5%8F%96.meta.js
// ==/UserScript==
(function() {
'use strict';
// 创建Amazon产品链接、ASIN计数和附加功能的显示元素
function createDisplayElement(asinLinks, asins) {
const container = document.createElement('div');
container.style.position = 'fixed';
container.style.top = '10px';
container.style.right = '10px';
container.style.padding = '10px';
container.style.backgroundColor = 'white';
container.style.border = '1px solid black';
container.style.zIndex = '10000';
container.style.overflow = 'auto';
container.style.maxHeight = '90vh';
container.style.maxWidth = '600px'; // 设置最大宽度
// 显示找到的ASIN数量
const countDisplay = document.createElement('p');
countDisplay.textContent = `找到ASIN: ${asinLinks.length}`;
container.appendChild(countDisplay);
const textArea = document.createElement('textarea');
textArea.value = asinLinks.join('\n');
textArea.rows = '20';
textArea.cols = '50';
textArea.style.marginTop = '10px';
const copyButton = document.createElement('button');
copyButton.textContent = '复制链接';
copyButton.onclick = function() {
textArea.select();
document.execCommand('copy');
};
const copyAsinButton = document.createElement('button');
copyAsinButton.textContent = '复制ASIN';
copyAsinButton.onclick = function() {
const asinTextArea = document.createElement('textarea');
asinTextArea.value = asins.join('\n');
document.body.appendChild(asinTextArea);
asinTextArea.select();
document.execCommand('copy');
document.body.removeChild(asinTextArea);
};
const openButton = document.createElement('button');
openButton.textContent = '打开链接';
openButton.onclick = function() {
asinLinks.forEach(link => window.open(link, '_blank'));
};
const clearButton = document.createElement('button');
clearButton.textContent = '清空数据';
clearButton.onclick = function() {
localStorage.removeItem('asinLinks');
textArea.value = '';
countDisplay.textContent = 'ASINs found: 0';
};
const closeButton = document.createElement('button');
closeButton.textContent = '关闭窗口';
closeButton.onclick = function() {
container.remove();
};
container.appendChild(closeButton);
// Donate button code starts here
const donateButton = document.createElement('button');
donateButton.textContent = '❤️赞赏';
donateButton.style.marginTop = '0px';
donateButton.onclick = function() {
const donationDialog = document.createElement('div');
donationDialog.style.position = 'fixed';
donationDialog.style.top = '50%';
donationDialog.style.left = '50%';
donationDialog.style.transform = 'translate(-50%, -50%)';
donationDialog.style.padding = '20px';
donationDialog.style.backgroundColor = 'white';
donationDialog.style.border = '1px solid black';
donationDialog.style.zIndex = '10001';
const donationText = document.createElement('p');
donationText.innerHTML = '❤️赞赏
工具制作由兴趣和对效率追求驱使.
若分享有助于您,欢迎赞赏与激励:)
可在备注里写上您ID.
weibo:amzASIN'; // 使用innerHTML来解析HTML标签
donationDialog.appendChild(donationText);
const donationImage = document.createElement('img');
donationImage.src = 'https://i.ibb.co/zNbxSVN/20240327171437.jpg'; // 指定图片URL
donationImage.style.maxWidth = '300px'; // 设置最大宽度
donationImage.style.maxHeight = '300px'; // 设置最大高度
donationImage.style.margin = 'auto'; // 图片自动居中
donationDialog.appendChild(donationImage);
// 创建一个新的div用于包裹关闭按钮,以确保它出现在图片下方
const buttonContainer = document.createElement('div');
buttonContainer.style.textAlign = 'center'; // 可以设置为居中
buttonContainer.style.marginTop = '10px'; // 添加一些上边距
// 关闭按钮
const closeDonationDialog = document.createElement('button');
closeDonationDialog.textContent = '下次再来❤️';
closeDonationDialog.onclick = function() {
donationDialog.remove();
};
buttonContainer.appendChild(closeDonationDialog);
// 将按钮容器添加到对话框中
donationDialog.appendChild(buttonContainer);
// 添加捐赠对话框到页面
document.body.appendChild(donationDialog);
};
// 添加捐赠按钮到容器
container.appendChild(textArea);
container.appendChild(copyButton);
container.appendChild(copyAsinButton);
container.appendChild(openButton);
container.appendChild(clearButton);
container.appendChild(closeButton);
document.body.appendChild(container);
container.appendChild(donateButton);
}
// 提取ASIN值,生成Amazon产品链接,支持分页功能的函数
function generateAmazonLinks() {
let gridItemRootElements = document.querySelectorAll('#gridItemRoot');
const asinLinks = JSON.parse(localStorage.getItem('asinLinks') || '[]');
const asins = [];
// 如果 '#gridItemRoot' 未找到任何元素,则使用 '[data-asin]'
if (gridItemRootElements.length === 0) {
gridItemRootElements = document.querySelectorAll('[data-asin]');
}
gridItemRootElements.forEach(root => {
// 选择元素内部的 '[data-asin]' 元素,如果 root 是 '[data-asin]',则直接添加
const targetElements = root.matches('[data-asin]') ? [root] : root.querySelectorAll('[data-asin]');
targetElements.forEach(element => {
const asin = element.getAttribute('data-asin');
if (asin) {
asins.push(asin);
if (!asinLinks.includes(`https://www.amazon.com/gp/product/${asin}`)) {
asinLinks.push(`https://www.amazon.com/gp/product/${asin}`);
}
}
});
});
localStorage.setItem('asinLinks', JSON.stringify(asinLinks));
if (asinLinks.length > 0) {
createDisplayElement(asinLinks, asins);
}
}
// 创建触发Amazon链接生成的按钮
function createExtractionButton() {
const button = document.createElement('button');
button.textContent = '提取Asin和链接';
button.style.position = 'fixed';
button.style.bottom = '10px';
button.style.right = '10px';
button.style.padding = '10px';
button.style.backgroundColor = '#4CAF50';
button.style.color = 'white';
button.style.border = 'none';
button.style.cursor = 'pointer';
button.onclick = generateAmazonLinks;
document.body.appendChild(button);
}
// 向页面添加按钮
createExtractionButton();
})();