UNPKG

steam-family-bot-core

Version:

一个用于新版 Steam 家庭的库存监控 Bot 插件

85 lines 3.31 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useComputedData = void 0; const lodash_1 = __importDefault(require("lodash")); const tag_dict_1 = require("./tag-dict"); const useComputedData = (libs, recentLibDetails, filteredPlayer, players, libsPlaytime) => { const names = players.map((account) => ({ id: account.steamid, name: account.personaName, })); const libPlaytimePlayerSummary = lodash_1.default.keyBy(libsPlaytime, 'appid'); const appsForUse = libs .filter((item) => { return (filteredPlayer.filter((player) => item.ownerSteamids.includes(player.steamid.toString())).length > 0); }) .sort((a, b) => b.rtTimeAcquired - a.rtTimeAcquired) .map((item) => { return { playtime: libPlaytimePlayerSummary[item.appId.toString()], ...item, }; }); const games = appsForUse.flatMap((item) => { return item.ownerSteamids.map((it) => ({ ...item, ownerSteamid: it, })); }); const gameById = lodash_1.default.countBy(games, (game) => game.ownerSteamid.toString()); const cntData = filteredPlayer .map((gamer) => ({ gamer, cnt: gameById[gamer.steamid?.toString()], name: names.find((it) => it.id?.toString() == gamer.steamid?.toString()) ?.name, })) .sort((a, b) => a.cnt - b.cnt); const tags = appsForUse.flatMap((app) => app.mappedTags.map((it) => parseInt(it)).slice(0, 10)); const dict = lodash_1.default.countBy(tags, (it) => it); const dicts = Object.keys(dict) .map((item) => ({ value: dict[item], text: (0, tag_dict_1.convertTag)(item) })) .sort((a, b) => b.value - a.value); const allPlayTimeData = libsPlaytime.flatMap((it) => it.players); const playersPlayData = lodash_1.default.groupBy(allPlayTimeData, 'steamid'); const playtimeData = lodash_1.default.keys(playersPlayData).map((key) => { const it = playersPlayData[key]; const asOwnerLendTime = it .filter((item) => item.isOwner) .reduce((acc, cur) => acc + cur.secondsPlayed, 0); const asPlayerTime = it .filter((item) => !item.isOwner) .reduce((acc, cur) => acc + cur.secondsPlayed, 0); return { asOwnerLendTime, asPlayerTime, steamid: key, }; }); const recentLibs = appsForUse .sort((a, b) => { return (b.rtTimeAcquired ?? 0) - (a.rtTimeAcquired ?? 0); }) .slice(0, 12); const libDetailDict = lodash_1.default.keyBy(recentLibDetails, 'appid'); const mappedRecentLibs = recentLibs.map((it) => { const detail = libDetailDict[it.appId]; return { ...it, owners: it.ownerSteamids.map((it) => players.find((player) => player.steamid.toString() == it)), detail, }; }); return { cntData, dicts, playtimeData, appsForUse, mappedRecentLibs, }; }; exports.useComputedData = useComputedData; //# sourceMappingURL=useComputedData.js.map