快速预览戴森球蓝图
// ==UserScript== // @name DSP2B戴森球蓝图预览工具 // @namespace maxzhang666/dsp-viewer // @version 0.0.4 // @author maxzhang666 // @description 快速预览戴森球蓝图 // @license MIT // @icon https://www.dsp2b.com/favicon.ico // @include https://www.dsp2b.com/* // @include https://www.dsp2b.com/zh-CN/blueprint/* // @include https://www.dysonsphereblueprints.com/* // @include https://www.dysonsphereblueprints.com/blueprints/* // @grant GM_addStyle // @grant GM_openInTab // @grant unsafeWindow // ==/UserScript== (e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const t=document.createElement("style");t.textContent=e,document.head.append(t)})(' .dsp-viewer-cn{padding:1em 2em;border:none;border-radius:5px;font-weight:700;letter-spacing:5px;text-transform:uppercase;cursor:pointer;color:#2c9caf;transition:all 1s;font-size:15px;position:relative;overflow:hidden;outline:2px solid #2c9caf}.dsp-viewer-cn:hover{color:#fff;transform:scale(1.1);outline:2px solid #70bdca;box-shadow:4px 5px 17px -4px #268391}.dsp-viewer-cn:before{content:"";position:absolute;left:-50px;top:0;width:0;height:100%;background-color:#2c9caf;transform:skew(45deg);z-index:-1;transition:width 1s}.dsp-viewer-cn:hover:before{width:250%}.dsp-viewer-box,details{display:flex;justify-content:center;padding-bottom:15px}.dsp-viewer-box button{width:100%}.dsp-viewer-en{position:relative;padding:0 35px;background:#d7265f;font-size:17px;font-weight:500;color:#fff;border:3px solid #d7265f;border-radius:.4rem;box-shadow:0 0 #fec1958c;transition:all .3s ease-in-out;cursor:pointer;margin-bottom:0;line-height:1em}.star-1{position:absolute;top:20%;left:20%;width:25px;height:auto;filter:drop-shadow(0 0 0 #fffdef);z-index:-5;transition:all 1s cubic-bezier(.05,.83,.43,.96)}.star-2{position:absolute;top:45%;left:45%;width:15px;height:auto;filter:drop-shadow(0 0 0 #fffdef);z-index:-5;transition:all 1s cubic-bezier(0,.4,0,1.01)}.star-3{position:absolute;top:40%;left:40%;width:5px;height:auto;filter:drop-shadow(0 0 0 #fffdef);z-index:-5;transition:all 1s cubic-bezier(0,.4,0,1.01)}.star-4{position:absolute;top:20%;left:40%;width:8px;height:auto;filter:drop-shadow(0 0 0 #fffdef);z-index:-5;transition:all .8s cubic-bezier(0,.4,0,1.01)}.star-5{position:absolute;top:25%;left:45%;width:15px;height:auto;filter:drop-shadow(0 0 0 #fffdef);z-index:-5;transition:all .6s cubic-bezier(0,.4,0,1.01)}.star-6{position:absolute;top:5%;left:50%;width:5px;height:auto;filter:drop-shadow(0 0 0 #fffdef);z-index:-5;transition:all .8s ease}.dsp-viewer-en:hover{background:transparent;color:#d7265f;border-color:#d7265f;box-shadow:0 0 25px #fec1958c}.dsp-viewer-en:hover .star-1{position:absolute;top:-80%;left:-30%;width:25px;height:auto;filter:drop-shadow(0 0 10px #fffdef);z-index:2}.dsp-viewer-en:hover .star-2{position:absolute;top:-25%;left:10%;width:15px;height:auto;filter:drop-shadow(0 0 10px #fffdef);z-index:2}.dsp-viewer-en:hover .star-3{position:absolute;top:55%;left:25%;width:5px;height:auto;filter:drop-shadow(0 0 10px #fffdef);z-index:2}.dsp-viewer-en:hover .star-4{position:absolute;top:30%;left:80%;width:8px;height:auto;filter:drop-shadow(0 0 10px #fffdef);z-index:2}.dsp-viewer-en:hover .star-5{position:absolute;top:25%;left:115%;width:15px;height:auto;filter:drop-shadow(0 0 10px #fffdef);z-index:2}.dsp-viewer-en:hover .star-6{position:absolute;top:5%;left:60%;width:5px;height:auto;filter:drop-shadow(0 0 10px #fffdef);z-index:2}.fil0{fill:#fffdef} '); (function () { 'use strict'; var _GM_openInTab = /* @__PURE__ */ (() => "undefined" != typeof GM_openInTab ? GM_openInTab : void 0)(), _unsafeWindow = /* @__PURE__ */ (() => "undefined" != typeof unsafeWindow ? unsafeWindow : void 0)(); _unsafeWindow.addEventListener("popstate", () => { }), setInterval(function process() { let url = _unsafeWindow.location.href; if (currentUrl === url) return; (/dsp2b\.com\/zh-CN(?:\?.*|\/?)$/i.test(url) || /dsp2b\.com\/zh-CN\/collection/i.test(url)) && listInit(); /dsp2b\.com\/zh-CN\/blueprint/i.test(url) && detailInit(); /dysonsphereblueprints\.com\/blueprints/i.test(url) && detailInit("en"); /dysonsphereblueprints\.com(\/(blueprints\?search=[\w&=]*))?\/?$/.test(url) && listInit("en"); currentUrl = url; }, 500); let currentUrl = ""; function listInit(type = "cn") { let cards; cards = "cn" == type ? _unsafeWindow.document.querySelectorAll(".ant-card-cover") : _unsafeWindow.document.querySelectorAll(".o-blueprint-card__cover"), cards.forEach((ele) => { var _a; ele.querySelectorAll(".dsp-viewer").forEach((btn) => { btn.remove(); }), "cn" == type ? ((_a = ele.querySelector(".dsp-viewer-cn")) == null ? void 0 : _a.remove(), ele.append(getBtn("list", type))) : ele.after(getBtn("list", type)); }); } function detailInit(type = "cn") { let desc; "cn" == type ? (desc = _unsafeWindow.document.querySelector(".markdown-body"), desc && desc.before(getBtn("details", type))) : (desc = _unsafeWindow.document.querySelector(".t-blueprint__title"), desc && desc.append(getBtn("details", type))); } function getBtn(suffix = "list", type = "cn") { let btn, div = _unsafeWindow.document.createElement("div"); return div.className = `dsp-viewer-box ${suffix}`, "cn" == type ? (btn = _unsafeWindow.document.createElement("button"), btn.textContent = "蓝图预览") : (btn = _unsafeWindow.document.createElement("button"), btn.innerHTML = '蓝图预览<div class="star-1"><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" viewBox="0 0 784.11 815.53" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs>\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"></metadata>\n <path\n class="fil0"\n d="M392.05 0c-20.9,210.08 -184.06,378.41 -392.05,407.78 207.96,29.37 371.12,197.68 392.05,407.74 20.93,-210.06 184.09,-378.37 392.05,-407.74 -207.98,-29.38 -371.16,-197.69 -392.06,-407.78z"\n ></path>\n </g>\n </svg>\n </div><div class="star-2">\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xml:space="preserve"\n version="1.1"\n style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"\n viewBox="0 0 784.11 815.53"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n >\n <defs></defs>\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"></metadata>\n <path\n class="fil0"\n d="M392.05 0c-20.9,210.08 -184.06,378.41 -392.05,407.78 207.96,29.37 371.12,197.68 392.05,407.74 20.93,-210.06 184.09,-378.37 392.05,-407.74 -207.98,-29.38 -371.16,-197.69 -392.06,-407.78z"\n ></path>\n </g>\n </svg>\n </div><div class="star-3">\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xml:space="preserve"\n version="1.1"\n style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"\n viewBox="0 0 784.11 815.53"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n >\n <defs></defs>\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"></metadata>\n <path\n class="fil0"\n d="M392.05 0c-20.9,210.08 -184.06,378.41 -392.05,407.78 207.96,29.37 371.12,197.68 392.05,407.74 20.93,-210.06 184.09,-378.37 392.05,-407.74 -207.98,-29.38 -371.16,-197.69 -392.06,-407.78z"\n ></path>\n </g>\n </svg>\n </div><div class="star-4">\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xml:space="preserve"\n version="1.1"\n style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"\n viewBox="0 0 784.11 815.53"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n >\n <defs></defs>\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"></metadata>\n <path\n class="fil0"\n d="M392.05 0c-20.9,210.08 -184.06,378.41 -392.05,407.78 207.96,29.37 371.12,197.68 392.05,407.74 20.93,-210.06 184.09,-378.37 392.05,-407.74 -207.98,-29.38 -371.16,-197.69 -392.06,-407.78z"\n ></path>\n </g>\n </svg>\n </div><div class="star-5">\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xml:space="preserve"\n version="1.1"\n style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"\n viewBox="0 0 784.11 815.53"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n >\n <defs></defs>\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"></metadata>\n <path\n class="fil0"\n d="M392.05 0c-20.9,210.08 -184.06,378.41 -392.05,407.78 207.96,29.37 371.12,197.68 392.05,407.74 20.93,-210.06 184.09,-378.37 392.05,-407.74 -207.98,-29.38 -371.16,-197.69 -392.06,-407.78z"\n ></path>\n </g>\n </svg>\n </div><div class="star-6">\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xml:space="preserve"\n version="1.1"\n style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"\n viewBox="0 0 784.11 815.53"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n >\n <defs></defs>\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"></metadata>\n <path\n class="fil0"\n d="M392.05 0c-20.9,210.08 -184.06,378.41 -392.05,407.78 207.96,29.37 371.12,197.68 392.05,407.74 20.93,-210.06 184.09,-378.37 392.05,-407.74 -207.98,-29.38 -371.16,-197.69 -392.06,-407.78z"\n ></path>\n </g>\n </svg>\n </div>'), btn.className = `dsp-viewer-${type}`, btn.onclick = (event) => { !function viewBlueprint(event2, suffix2, type2 = "cn") { var _a, _b, _c; let id, regex, url = ""; if ("list" == suffix2) { let a = (_a = event2.target.parentNode) == null ? void 0 : _a.querySelector("a"); a || (a = (_c = (_b = event2.target.parentNode) == null ? void 0 : _b.parentNode) == null ? void 0 : _c.querySelector("a")), a && (url = a.href); } else url = currentUrl; regex = "cn" == type2 ? /\/blueprint\/([a-f0-9]+)$/ : /\/blueprints\/(.*)$/; const match = url.match(regex); match && match.length > 0 && (id = match[1]); id && _GM_openInTab(`https://dsp.huizhek.com/?bp=${id}&type=${type2}`); }(event, suffix, type); }, "list" == suffix && "cn" == type ? btn : (div.append(btn), div); } })();