steam-family-bot-core
Version:
一个用于新版 Steam 家庭的库存监控 Bot 插件
85 lines • 3.31 kB
JavaScript
;
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