🏠 Home 

steam消费总额查看

一键查看steam消费总额

// ==UserScript==
// @name                steam消费总额查看
// @name:en             steam total spending
// @namespace           http://tampermonkey.net/
// @version             1.3.1
// @description         一键查看steam消费总额
// @description:en      Used to view the total spending of steam consumption
// @author              liuyubing
// @match               *://steamcommunity.com/*
// @match               *://store.steampowered.com/*
// @match               *://help.steampowered.com/*
// ==/UserScript==
/** 获取元素 */
const dom = (n) => document.querySelector(n);
/** 使用 Id 获取元素 */
const domById = (id) => document.getElementById(id);
/** 获取所有元素 */
const domA = (n) => document.querySelectorAll(n);
/** 创建元素 */
const domC = (name, attrObjs) => {
const element = document.createElement(name);
Object.keys(attrObjs).forEach((key) => {
element[key] = attrObjs[key];
});
return element;
};
(function () {
"use strict";
const ob = {
hrefText: {
"zh-CN": "消费记录",
default: "Expenses record",
},
spending: {
"zh-CN": "查看消费总额",
default: "View total spending",
},
total: {
"zh-CN": "总计消费:",
default: "Total spending:",
},
buy: {
"zh-CN": "购买:",
default: "Buy:",
},
refund: {
"zh-CN": "退款:",
default: "Refund:",
},
choose: function (name) {
const language = navigator.language || navigator.userLanguage;
return this[name][language] || this[name]["default"];
},
};
const globalActions = domById("global_actions");
const globalActionMenu = domById("global_action_menu");
if (globalActions) {
const toAccountHistory = domC("a", {
href: "https://store.steampowered.com/account/history/",
target: "_self",
style: "vertical-align: top;margin-right: 12px;",
innerText: ob.choose("hrefText"),
});
globalActions.insertBefore(toAccountHistory, globalActionMenu);
}
if (/\/account\/history/.test(location.pathname)) {
const accountManagement = dom(".account_management .page_content");
if (accountManagement) {
const totalSpending = domC("a", {
href: "javascript:;",
innerText: ob.choose("spending"),
});
totalSpending.onclick = onTotalSpending;
accountManagement.appendChild(totalSpending);
}
}
function onTotalSpending() {
const haveLoadMore = domById("load_more_button");
this.innerText = "loading...";
if (haveLoadMore && haveLoadMore.style.display !== "none") {
haveLoadMore.click();
setTimeout(() => {
onTotalSpending.call(this);
}, 500);
return;
}
this.innerText = ob.choose("spending");
const { all, less, add } = addSpending();
window.alert(`${ob.choose("total")}${all}\n${ob.choose("buy")}${add}\n${ob.choose("refund")}${less}`);
}
function addSpending() {
let numAll = 0;
let lessSpend = 0;
let addSpend = 0;
const nodesTotal = domA("tbody .wht_total");
const dot = nodesTotal[0].innerText.replace(/(?<=\W)[\w\W]+/, "").trim();
nodesTotal.forEach((item) => {
let doll = +item.innerText.match(/[\d\.]+/)[0];
if (!doll) return;
if (item.className.indexOf("wht_refunded") >= 0) {
numAll -= doll;
lessSpend += doll;
} else {
numAll += doll;
addSpend += doll;
}
});
return {
all: dot + floorMath(numAll),
less: dot + floorMath(lessSpend),
add: dot + floorMath(addSpend),
};
}
function floorMath(num) {
return Math.floor(num * 100) / 100;
}
})();