您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
steam市场 汇率自动转换, 大部分代码用gpt生成的, 能跑就行
// ==UserScript== // @name steam市场 汇率自动转换 // @namespace http://tampermonkey.net/ // @version 0.1.3 // @description steam市场 汇率自动转换, 大部分代码用gpt生成的, 能跑就行 // @author bestcondition.cn // @match https://steamcommunity.com/market/listings/* // @icon https://www.google.com/s2/favicons?sz=64&domain=steamcommunity.com // @grant none // @license Apache-2.0 // ==/UserScript== let ekv = {}; let current_key_str = ''; let cny_str = 'CNY¥' let input = document.createElement('input'); let div = document.createElement('div'); function add_cal_input() { // 创建一个浮动的文本输入框 input.type = 'text'; input.placeholder = '请输入'; // 从 localStorage 中读取初始值 const storedValue = localStorage.getItem('myInputValue'); input.value = storedValue || 'x * 0.85'; // 监听文本框值的改变,并将其持久化到 localStorage 中 input.addEventListener('input', () => { localStorage.setItem('myInputValue', input.value); }); let p = document.createElement('p'); p.innerText = '手续费后价格计算公式, 其中x为原价'; div.appendChild(p); // 将文本框添加到页面中 div.appendChild(input); } function on_change() { let market_buyorder_info_details_tablecontainer = document.querySelector("#market_buyorder_info_details_tablecontainer") if (market_buyorder_info_details_tablecontainer) { market_buyorder_info_details_tablecontainer.style.width = 'auto'; } let td_list = document.querySelectorAll("#market_commodity_buyreqeusts_table > table > tbody > tr > td:nth-child(odd)") td_list.forEach((td) => { let o_text = td.innerText if (!current_key_str) { for (let a in ekv) { if (o_text.includes(a)) { current_key_str = a; break; } } } if (o_text.includes(current_key_str) && !o_text.includes(cny_str)) { let currency_rate = ekv[current_key_str]; if (currency_rate && input.value) { let ars_money = extractNumber(o_text) let cn_money = ars_money / currency_rate let x = cn_money let post_cn_money = eval(input.value) let cn_money_str = cn_money.toFixed(2) let post_cn_money_str = post_cn_money.toFixed(2) td.innerText = `${o_text} ( ${cny_str} ${cn_money_str} | ${post_cn_money_str} )` } } }) } function add_table() { // 大部分代码用gpt生成的, 能跑就行 function sync_ekv(data) { for (let i = 0; i < data.length; i++) { let [key, value] = data[i]; ekv[key] = value; } } // 从 localStorage 中读取数据 let exchangeRates = JSON.parse(localStorage.getItem('exchangeRates')) || [['CNY', 1.00]]; sync_ekv(exchangeRates) // 创建表格元素 let table = document.createElement('table'); // 创建表头行 let thead = document.createElement('thead'); let tr = document.createElement('tr'); let th1 = document.createElement('th'); let th2 = document.createElement('th'); let th3 = document.createElement('th'); th1.textContent = '币种'; th2.textContent = '汇率'; th3.textContent = '操作'; tr.appendChild(th1); tr.appendChild(th2); tr.appendChild(th3); thead.appendChild(tr); // 创建表格数据行 let tbody = document.createElement('tbody'); function create_table_data() { for (let i = 0; i < exchangeRates.length; i++) { let tr = document.createElement('tr'); let td1 = document.createElement('td'); let td2 = document.createElement('td'); let td3 = document.createElement('td'); td1.textContent = exchangeRates[i][0]; td2.textContent = exchangeRates[i][1]; let editButton = document.createElement('button'); editButton.textContent = '修改'; editButton.dataset.index = i; editButton.addEventListener('click', function (e) { let index = e.target.dataset.index; let currency = exchangeRates[index][0]; let rate = exchangeRates[index][1]; let newCurrency = prompt('请输入新的币种', currency); let newRate = prompt('请输入新的汇率', rate); if (newCurrency && newRate) { exchangeRates[index] = [newCurrency, parseFloat(newRate)]; updateTable(); saveExchangeRates(); } }); let deleteButton = document.createElement('button'); deleteButton.textContent = '删除'; deleteButton.dataset.index = i; deleteButton.addEventListener('click', function (e) { let index = e.target.dataset.index; if (confirm('确认删除?')) { exchangeRates.splice(index, 1); updateTable(); saveExchangeRates(); } }); td3.appendChild(editButton); td3.appendChild(deleteButton); tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tbody.appendChild(tr); } } create_table_data() // 将表头和表格数据添加到表格中 table.appendChild(thead); table.appendChild(tbody); // 将表格添加到页面中 div.id = 'exchange-rates'; div.style.position = 'fixed'; div.style.top = '0'; div.style.right = '0'; div.style.backgroundColor = 'white'; div.style.border = '1px solid black'; div.style.padding = '10px'; div.appendChild(table); document.body.appendChild(div); // 添加“新增”按钮 let addButton = document.createElement('button'); addButton.textContent = '新增'; addButton.addEventListener('click', function () { let currency = prompt('请输入币种'); let rate = prompt('请输入汇率'); if (currency && rate) { exchangeRates.push([currency, parseFloat(rate)]); updateTable(); saveExchangeRates(); } }); div.appendChild(addButton); // 添加拖动功能 let isDragging = false; let currentX; let currentY; let initialX; let initialY; let xOffset = 0; let yOffset = 0; div.addEventListener("mousedown", function (e) { isDragging = true; initialX = e.clientX - xOffset; initialY = e.clientY - yOffset; }); div.addEventListener("mouseup", function (e) { isDragging = false; }); div.addEventListener("mousemove", function (e) { if (isDragging) { e.preventDefault(); currentX = e.clientX - initialX; currentY = e.clientY - initialY; xOffset = currentX; yOffset = currentY; div.style.transform = "translate(" + currentX + "px, " + currentY + "px)"; } }); // 更新表格数据 function updateTable() { tbody.innerHTML = ''; for (let i = 0; i < exchangeRates.length; i++) { let tr = document.createElement('tr'); let td1 = document.createElement('td'); let td2 = document.createElement('td'); let td3 = document.createElement('td'); td1.textContent = exchangeRates[i][0]; td2.textContent = exchangeRates[i][1]; let editButton = document.createElement('button'); editButton.textContent = '修改'; editButton.dataset.index = i; editButton.addEventListener('click', function (e) { let index = e.target.dataset.index; let currency = exchangeRates[index][0]; let rate = exchangeRates[index][1]; let newCurrency = prompt('请输入新的币种', currency); let newRate = prompt('请输入新的汇率', rate); if (newCurrency && newRate) { exchangeRates[index] = [newCurrency, parseFloat(newRate)]; updateTable(); saveExchangeRates(); } }); let deleteButton = document.createElement('button'); deleteButton.textContent = '删除'; deleteButton.dataset.index = i; deleteButton.addEventListener('click', function (e) { let index = e.target.dataset.index; if (confirm('确认删除?')) { exchangeRates.splice(index, 1); updateTable(); saveExchangeRates(); } }); td3.appendChild(editButton); td3.appendChild(deleteButton); tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tbody.appendChild(tr); } } // 将数据保存到 localStorage 中 function saveExchangeRates() { localStorage.setItem('exchangeRates', JSON.stringify(exchangeRates)); // 同步内存数据 sync_ekv(exchangeRates); // 修改也要即时改变 on_change(); } add_cal_input(); } function extractNumber(str) { // 将字符串中的所有非数字字符替换为空格 let numStr = str.replace(/[^\d,]/g, ' '); // 将逗号替换为小数点 numStr = numStr.replace(/,/g, '.'); // 将字符串拆分成数字数组 let numArr = numStr.trim().split(' '); // 将最后一个数字前面的空格替换为空字符串 let lastNumIndex = numArr.length - 1; numArr[lastNumIndex] = numArr[lastNumIndex].replace(/^\s+/, ''); // 将数字数组转换为浮点数 return parseFloat(numArr.join('')); } function observe_table() { // 选择要观察的目标节点 let targetNode = document.querySelector('#market_commodity_buyreqeusts_table'); // 创建一个观察器实例并定义回调函数 let observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { //console.log('Mutation type: ' + mutation.type); //console.log('Changed node: ' + mutation.target); on_change(); }); }); // 配置观察选项 let config = {attributes: true, childList: true, subtree: true}; on_change(); // 传入目标节点和观察选项 observer.observe(targetNode, config); // 停止观察 //observer.disconnect(); } (function () { 'use strict'; // 添加汇率展示表格 add_table(); // 先默认转换一次 on_change(); // 监控steam表格变化 observe_table(); // Your code here... })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址