// ==UserScript==
// @name steam消费总额查看
// @name:en steam total spending
// @namespace http://tampermonkey.net/
// @version 1.1.1
// @description 一键查看steam消费总额
// @description:en Used to view the total spending of steam consumption
// @author super pufferFish
// @match *://steamcommunity.com/*
// @match *://store.steampowered.com/*
// @match *://help.steampowered.com/*
// @require https://code.jquery.com/jquery-3.1.1.min.js
// @downloadURL none
// ==/UserScript==
(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 = $('#global_actions')
if (globalActions && globalActions[0]) {
const toAccountHistory = $(`${ob.choose('hrefText')}`)
globalActions.prepend(toAccountHistory)
}
if (/\/account\/history/.test(location.pathname)) {
const accountManagement = $('.account_management .page_content')
if (accountManagement && accountManagement[0]) {
const totalSpending = $(`${ob.choose('spending')}`)
totalSpending[0].onclick = onTotalSpending
accountManagement.append(totalSpending)
}
}
function onTotalSpending() {
const haveLoadMore = document.getElementById('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 evenWhtTotal = document.querySelectorAll('tbody .wht_total')
const dot = evenWhtTotal[0].innerText.replace(/[\d\.]+/, '').trim()
const rep = new RegExp(dot)
evenWhtTotal.forEach((item) => {
let doll = +item.innerText.replace(rep, '').trim()
if (window.isNaN(doll)) {
try {
doll = +item.children[0].innerText.replace(rep, '').trim()
} catch { }
}
if (doll) {
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
}
})()