您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A script to download 3D models in the 3D model viewer on Ikeas product pages.
// ==UserScript== // @name Ikea 3D Model Downloader // @version 1.2 // @include https://www.ikea.com* // @grant none // @author timonsku // @license MIT // @description A script to download 3D models in the 3D model viewer on Ikeas product pages. // @namespace https://greasyfork.org/en/scripts/490780 // ==/UserScript== window.addEventListener('load', function() { let scriptTags = document.body.querySelectorAll('script[type="application/ld+json"]') let modelList = [] for(const script of scriptTags) { scriptJson = JSON.parse(script.innerHTML); if(scriptJson["@type"] == "3DModel"){ console.log("found 3DModel list") modelList = scriptJson.encoding } } console.log(modelList) if(modelList.length == 0){ console.log("Empty model list") return } let favoredURL = "" for(const model of modelList) { let url = model.contentUrl if(model.contentUrl.match(/\/glb\/.*iqp3.*/i) != null){ console.log("found IQP3 without draco") favoredURL = url } } if(favoredURL == ""){ console.log("could not find IQP3 checking for lower quality RQ3") for(const model of modelList) { let url = model.contentUrl if(model.contentUrl.match(/\/glb\/.*rqp3.*/i) != null){ console.log("found RQP3 without draco") favoredURL = url } } } if(favoredURL == ""){ console.log("no suitable model found, using first one in list") favoredURL = modelList[0].contentUrl } let downloadButton = document.createElement("button"); downloadButton.onclick = function() { window.location.href = favoredURL; } downloadButton.classList.add("pip-btn", "pip-btn--emphasised", "pip-btn--fluid"); // add span to button let span = document.createElement("span"); span.classList.add("pip-btn__inner"); // add label to span let label = document.createElement("span"); label.classList.add("pip-btn__label"); label.innerHTML = "Download 3D Model"; span.appendChild(label); downloadButton.appendChild(span); buttonSection = document.querySelector(".js-price-package.pip-price-package") //append after buttonSection buttonSection.parentNode.insertBefore(downloadButton, buttonSection.nextSibling); }, false);