diff --git a/u2_cal_ucoin.user.js b/u2_cal_ucoin.user.js index 19827b9..a55c546 100644 --- a/u2_cal_ucoin.user.js +++ b/u2_cal_ucoin.user.js @@ -1,17 +1,44 @@ // ==UserScript== // @name 计算 UCoin 获取量 // @namespace https://github.com/lifegpc/userscript -// @version 0.0.2 +// @version 0.0.3 // @description 仅支持计算 体积(B)、数量(D) // @author lifegpc // @match https://u2.dmhy.org/userdetails.php?* +// @match https://u2.dmhy.org/mpseed.php?* +// @icon https://u2.dmhy.org/favicon.ico // ==/UserScript== +const u = new URL(document.location.href); +const S0_KEY = "__lifegpc_u2_cal_ucoin_S0"; +const LAST_UPDATED_KEY = "__lifegpc_u2_cal_ucoin_last_updated"; +if (u.pathname == "/userdetails.php") {(async function(){ const ONE_CAT = [15, 16, 30]; const b = 14.5; -const S0 = 35.082; +const S0 = 35.041; const d = 0.3; +const MAX_CACHE_TIME = 1000 * 60 * 60 * 24; let parse_size = (await import("https://esm.sh/filesize-parser@1.5.0?pin=v135")).default; let handled = false; +let default_is_used = false; +function get_S0() { + default_is_used = false; + const cache = localStorage.getItem(S0_KEY); + if (!cache) { + default_is_used = true; + return S0; + } + const re = parseFloat(cache); + if (isNaN(re)) { + default_is_used = true; + return S0; + } + return re; +} +function get_last_updated() { + const cache = localStorage.getItem(LAST_UPDATED_KEY); + if (!cache) return 0; + return parseInt(cache); +} let observer = new MutationObserver((records) => { if (handled) return; for (let i of records) { @@ -19,6 +46,7 @@ let observer = new MutationObserver((records) => { console.log(e); if (e.id == 'ka1') { handled = true; + const S0n = get_S0(); let bsum = 0; let warn = 0; let br = e.querySelector("br"); @@ -26,7 +54,7 @@ let observer = new MutationObserver((records) => { for (let row of rows) { let cells = row.children; let size = parse_size(cells[2].innerText); - const B = b * size / 1_000_000_000 / S0; + const B = b * size / 1_000_000_000 / S0n; const cat = parseInt(new URL(cells[0].querySelector('a').href).searchParams.get("cat")); let Pmin = ONE_CAT.includes(cat) ? 1 : 0.5; const ov = cells[1].querySelector("td.overflow-control"); @@ -71,7 +99,7 @@ let observer = new MutationObserver((records) => { } let dsum = rows.length * d; let sum = bsum + dsum; - let result = `共计 ${sum.toFixed(3)}/h:体积 ${bsum.toFixed(3)}/h,数量 ${dsum.toFixed(1)}/h`; + let result = `共计 ${sum.toFixed(3)}/h (${(sum * 24).toFixed(3)}/d):体积 ${bsum.toFixed(3)}/h (${(bsum * 24).toFixed(3)}/d),数量 ${dsum.toFixed(1)}/h (${(dsum * 24).toFixed(3)}/d)`; if (warn > 0) { result += `(警告:${warn} 个种子计算可能不准确)`; } @@ -80,7 +108,27 @@ let observer = new MutationObserver((records) => { let nbr = document.createElement('br'); e.insertBefore(nbr, br); e.insertBefore(span, br); + const id = u.searchParams.get("id"); + const all_warn = `,做种计算可能不准确,访问这里获取新的S0值`; + const last_updated = get_last_updated(); + if (default_is_used) { + let span2 = document.createElement("span"); + span2.innerHTML = "默认的S0被使用了" + all_warn; + e.insertBefore(document.createElement('br'), br); + e.insertBefore(span2, br); + } else if (Date.now() - last_updated > MAX_CACHE_TIME) { + let span2 = document.createElement("span"); + span2.innerHTML = `S0值已经过期${all_warn}`; + e.insertBefore(document.createElement('br'), br); + e.insertBefore(span2, br); + } } } }) observer.observe(document.body, { childList: true, subtree: true }); +})();} +else if (u.pathname == "/mpseed.php") { + const S0 = parseFloat(document.querySelector(".mainouter tr:nth-child(2) ul > li:nth-child(2)").innerText.match(/(?<=S0\=)[0-9.]+/)[0]); + localStorage.setItem(S0_KEY, S0); + localStorage.setItem(LAST_UPDATED_KEY, Date.now()); +}