Greasy Fork is available in English.

LE英文BD转中文

从lastepochtools模拟器复制BD到踩蘑菇BD模拟器

// ==UserScript==
// @name         LE英文BD转中文
// @namespace    https://space.bilibili.com/36183305
// @version      1.3
// @description  从lastepochtools模拟器复制BD到踩蘑菇BD模拟器
// @author       牛奶来点辣
// @match        https://www.lastepochtools.com/planner/*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @icon         https://i2.hdslb.com/bfs/face/c68d95defb5f33cde509cb46dc44cc3222de0206.jpg@96w_96h_1c_1s_!web-avatar.webp
// ==/UserScript==

(function() {
    'use strict';

    // 在页面加载完成后执行的代码
    window.addEventListener('load', function() {

        // 查找 class="buttons nav my-builds" 的 div 元素
        const myBuildsDiv = document.querySelector('.buttons.nav.my-builds');

        // 如果找到了 div 元素
        if (myBuildsDiv) {
            // 创建包含按钮样式的 <a> 元素
            const buttonContainer = document.createElement('a');
            buttonContainer.id = 'btn-my-builds-add';
            buttonContainer.className = 'btn mybuilds-add';
            buttonContainer.style.cssText = 'cursor: pointer;'; // 添加一些样式,确保鼠标移动到按钮上时显示手型

            // 创建按钮图标
            const iconSpan = document.createElement('span');
            const svgIcon = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
            svgIcon.setAttribute('height', '24');
            svgIcon.setAttribute('width', '24');
            svgIcon.style.fill = '#e3ba6b!important';
            svgIcon.innerHTML = '<path d="M5 21V5q0-.825.588-1.413Q6.175 3 7 3h6v2H7v12.95l5-2.15 5 2.15V11h2v10l-7-3ZM7 5h6-1Zm10 4V7h-2V5h2V3h2v2h2v2h-2v2Z"></path>';
            iconSpan.appendChild(svgIcon);

            // 创建按钮文本
            const buttonTextDiv = document.createElement('div');
            buttonTextDiv.className = 'button-text';
            buttonTextDiv.textContent = '复制到踩蘑菇';

            // 将按钮图标和文本添加到包含按钮样式的 <a> 元素中
            buttonContainer.appendChild(iconSpan);
            buttonContainer.appendChild(buttonTextDiv);

            // 按钮点击事件
            buttonContainer.addEventListener('click', function() {

                console.log('复制');

                // 模拟点击事件,触发任务执行
                buttonClickHandler();
            });

            // 将包含按钮样式的 <a> 元素添加到 div 元素中
            myBuildsDiv.appendChild(buttonContainer);
        }
    });

    // 模拟按钮点击事件的处理程序
    function buttonClickHandler() {
        const c = le_nk()
          , d = le_ok()
          , e = le_mj;
        le_mj = le_nj.Average;
        le_1h();
        const f = {
            data: le_En(),
            ehp: le_Kn(),
            buffs: le_Gn(),
            tags: le_Jn(c, d)
        };
        le_mj = e;
        le_1h();
        le_0h();
        const datastr = JSON.stringify({
            data: JSON.stringify(le_Bd()),
            tags: JSON.stringify([c, d]),
            precalcData: JSON.stringify(f)
        });

        // 发送POST请求
        GM_xmlhttpRequest({
            method: "POST",
            url: "https://lastepoch.caimogu.cc/planner/save_build",
            data: datastr,
            headers: {
                "Content-Type": "application/json"
            },
            onload: function(response) {
                // 使用正则表达式提取所需值
                const matchResult = response.responseText.match(/"id":"([^"]+)"/);
                const extractedValue = matchResult ? matchResult[1] : null;

                // 输出返回值到控制台
                console.log( `https://lastepoch.caimogu.cc/planner.html?id=${extractedValue}`);

                // 提示用户是否跳转或复制到剪切板
                const confirmResult = confirm("任务执行完成,是否跳转到指定页面?取消会复制链接到剪切板");
                if (confirmResult) {
                    // 跳转到指定页面
                    window.location.href = `https://lastepoch.caimogu.cc/planner.html?id=${extractedValue}`;
                } else {
                    // 复制到剪切板
                    GM_setClipboard( `https://lastepoch.caimogu.cc/planner.html?id=${extractedValue}`, "text");
                    alert("返回值已复制到剪切板");
                }
            },
            onerror: function(error) {
                console.error("POST请求失败:", error);
            }
        });
    }
})();