您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces LEGO color names with LDraw color names on Pick a Brick
// ==UserScript== // @name Pick-A-Brick LDraw Colors // @name:en Pick-A-Brick LDraw Colors // @description Replaces LEGO color names with LDraw color names on Pick a Brick // @namespace Violentmonkey Scripts // @match https://www.lego.com/en-us/pick-and-build/pick-a-brick* // @grant none // @version 1.2.1 // @author The0x539 // @run-at document-start // @license AGPL-3.0 // ==/UserScript== /* jshint esversion: 11 */ const gistUrl = "https://gist.githubusercontent.com/The0x539/d046e6778f38232912c6ca1d840d614e/raw"; const colorMapPromise = fetch(gistUrl).then(resp => resp.json()).then(body => new Map(body)); const actualFetch = window.fetch; window.fetch = async (...args) => { const response = await actualFetch(...args); if (args[0] !== 'https://www.lego.com/api/graphql/PickABrickQuery') { return response; } const body = await response.json(); const colorMap = await colorMapPromise; replaceNames(body, colorMap); // Reconstruct the response because we already consumed the body of the original response object. const { status, statusText, headers } = response; const options = { status, statusText, headers }; return new Response(JSON.stringify(body), options); }; function replaceNames(body, colorMap) { for (const facet of body.data.searchElements.facets) { if (facet.id !== "element.facet.colourFamily") { continue; } for (const label of facet.labels) { for (const child of label.children) { if (colorMap.has(child.key)) { child.name = colorMap.get(child.key); } } } } for (const result of body.data.searchElements.results) { const colorFacet = result.facets.color; if (colorMap.has(colorFacet.key)) { colorFacet.name = colorMap.get(colorFacet.key); } } }