您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a column with tracking links to BrickLink's "Orders Placed" page.
// ==UserScript== // @name BrickLink Tracking Column // @name:en BrickLink Tracking Column // @namespace Violentmonkey Scripts // @match https://www.bricklink.com/orderPlaced.asp* // @grant none // @version 1.0 // @author The0x539 // @description Adds a column with tracking links to BrickLink's "Orders Placed" page. // @license AGPL-3.0 // ==/UserScript== // Customize me! const trackingUrl = code => `//tools.usps.com/go/TrackConfirmAction?qtc_tLabels1=${code}`; function main() { const rows = document.querySelectorAll('table.orders-table > tbody > tr:not(:first-child)'); for (const row of rows) { process(row); } } async function process(row) { if (getStatus(row) !== 'Shipped') { return; } const id = row.firstElementChild.firstElementChild.innerHTML; const doc = await fetchOrderDetail(id); const code = getTrackingNo(doc); if (!code) { return; } addTrackingColumn(); row.lastElementChild.innerHTML = `<a href="${trackingUrl(code)}">${code}</a>`; } function getStatus(row) { const statusEl = row.children[8].firstElementChild; if (statusEl instanceof HTMLSelectElement) { for (const option of statusEl.children) { if (option.selected) { return option.innerHTML; } } return null; } else { return statusEl.innerText; } } async function fetchOrderDetail(id) { const response = await fetch(`/orderDetail.asp?ID=${id}`); const html = await response.text(); const doc = new DOMParser().parseFromString(html, 'text/html'); return doc; } function getTrackingNo(doc) { const fields = doc.querySelectorAll('table._bltLeftTable table:not(.ta) td table tr'); for (const field of fields) { const key = field.children[0].innerText.trim(); if (key === 'Tracking\xA0No:') { return field.children[1].innerText.trim(); } } return null; } function addTrackingColumn() { const rows = document.querySelectorAll('table.orders-table > tbody > tr'); if (rows[0].children.length === 14) { return; // job's already done } for (let i = 0; i < rows.length; i++) { const cell = rows[i].insertCell(); if (i === 0) { cell.innerHTML = 'Tracking'; } } } main();