您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a search link for each "Add release" edit barcode
当前为
// ==UserScript== // @name MusicBrainz: Add search link for barcode // @namespace https://musicbrainz.org/user/chaban // @description Adds a search link for each "Add release" edit barcode // @version 1.0 // @tag ai-created // @author chaban // @license MIT // @include https://*musicbrainz.org/edit/* // @include https://*musicbrainz.org/search/edits* // @include https://*musicbrainz.org/*/*/edits // @include https://*musicbrainz.org/*/*/open_edits // @include https://*musicbrainz.org/user/*/edits* // @grant none // ==/UserScript== (function() { 'use strict'; const barcodeRegex = /(\b\d{8,14}\b)/g; const targetSelector = '.add-release'; function processTextNodes(node) { if (node.nodeType === Node.TEXT_NODE) { const originalText = node.textContent; let newHTML = originalText.replace(barcodeRegex, (match) => { const searchUrl = `//musicbrainz.org/search?type=release&method=advanced&query=barcode:${match}`; return `${match} (<a href="${searchUrl}" target="_blank">Search</a>)`; }); if (newHTML !== originalText) { const tempElement = document.createElement('span'); tempElement.innerHTML = newHTML; node.parentNode.insertBefore(tempElement, node); node.remove(); } } else if (node.nodeType === Node.ELEMENT_NODE) { node.childNodes.forEach(processTextNodes); } } function processAddReleaseTables() { const tables = document.querySelectorAll(targetSelector); tables.forEach(table => { table.querySelectorAll('td').forEach(cell => { cell.childNodes.forEach(processTextNodes); }); }); } processAddReleaseTables(); })();