您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays lowest brickmerge® price next to offer price
当前为
// ==UserScript== // @name brickmerge® Prices // @name:de brickmerge® Preise // @namespace https://brickmerge.de/ // @version 1.4 // @license MIT // @description Displays lowest brickmerge® price next to offer price // @description:de Zeigt den bisherigen Bestpreis von brickmerge® parallel zum aktuellen Preis an // @author Philipp Kursawe <[email protected]> // @match https://www.amazon.de/LEGO-* // @match https://www.mytoys.de/lego-* // @match https://www.smythstoys.com/de/de-de/spielzeug/lego/* // @match https://www.toys-for-fun.com/de/lego* // @icon https://www.google.com/s2/favicons?sz=64&domain=brickmerge.de // @homepageURL https://github.com/pke/brickmerge-userscript // @supportURL https://github.com/pke/brickmerge-userscript/discussions // ==/UserScript== (function() { 'use strict'; const resolvers = { "www.amazon.de": { articleSelector: "#productTitle", targetSelector: "#corePriceDisplay_desktop_feature_div,#corePrice_feature_div", }, "www.mytoys.de": { articleSelector: ".prod-info__name", targetSelector: ".prod-info__price-container", }, "www.smythstoys.com": { articleSelector: "h1[itemprop=name]", targetSelector: "#product-info div[itemprop=price]", }, "www.toys-for-fun.com": { articleSelector: "h1.page-title span[itemprop=name]", targetSelector: ".product-info-price", }, }; function renderError(element, error) { if (!element) { return; } const errorElement = document.createElement("div"); errorElement.innerText = error; element.append(errorElement); } function addLowestPrice(element, url, lowestPrice) { if (!element) { return; } const brickmergeBox = document.createElement("div"); const brickmergeLink = `<a href="${url}">${lowestPrice}</a>`; brickmergeBox.innerHTML = `<span>brickmerge Bestpreis: ${brickmergeLink}</span>`; element.append(brickmergeBox); } const resolver = resolvers[document.location.host] if (!resolver) { return; } // Fetch the LEGO set number from the title const title = document.querySelector(resolver.articleSelector)?.textContent; //console.log("title: ", title); const [, setNumber] = /(\d+)/.exec(title) || []; //console.log("set number: ", setNumber); if (setNumber) { fetch(`https://www.brickmerge.de/_app.php?find=${setNumber}&json_token=zNrPtJiFeOoOLpDjAMctsNzOrvi8KipF`) .then(res => res.json(), () => ({ error: "brickmerge® nicht erreichbar" })) .then(({ offers, error, url }) => { //console.log("offers", offers); if (!offers && !error) { return; } const targets = document.querySelectorAll(resolver.targetSelector) if (error) { for (let element of targets) { renderError(element, error); } } else { const lowestPrice = Number(offers?.lowPrice).toLocaleString("de-DE", {style: "currency", currency: offers?.priceCurrency || "EUR" }); if (lowestPrice) { for (let element of targets) { //console.log("target:", element.innerHTML); addLowestPrice(element, url, lowestPrice); } } } }); } })();