Files
Surge/Scripts/capture_gamertag.js
2026-04-18 13:18:55 +08:00

57 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Surge 脚本:捕获 peoplehub 响应中的 gamertag
*
* 功能:
* - 维护最新 gamertag 到 $persistentStore.gamertag
* - 每次捕获都追加到 gamertag_records 数组(不去重)
*/
const peoplePattern = /^https:\/\/peoplehub-public\.xboxlive\.com\/people\/gt\(.+\)/;
const url = $request.url;
const MAX_RECORDS = 30; // tag 记录保留最近 30 条
if (peoplePattern.test(url)) {
if (!$response.body) {
console.log("peoplehub triggered but no response body, skip");
} else {
try {
const body = JSON.parse($response.body);
const gamertag = body && body.people && body.people[0] && body.people[0].gamertag;
if (!gamertag) {
console.log("[gamertag] 响应中未找到 gamertag跳过");
} else {
const now = Date.now();
if (gamertag !== $persistentStore.read("gamertag")) {
$persistentStore.write(gamertag, "gamertag");
console.log(`Stored gamertag: ${gamertag}`);
}
appendGamertagRecord({ gamertag, ts: now });
}
} catch (error) {
console.log(`Error (gamertag): ${error}`);
}
}
}
function appendGamertagRecord(entry) {
let records = [];
const raw = $persistentStore.read("gamertag_records");
if (raw) {
try {
const parsed = JSON.parse(raw);
if (Array.isArray(parsed)) records = parsed;
} catch (e) { records = []; }
}
records.push(entry);
if (records.length > MAX_RECORDS) records = records.slice(-MAX_RECORDS);
$persistentStore.write(JSON.stringify(records), "gamertag_records");
console.log(`[gamertag] ✅ 新增记录: ${entry.gamertag}, total=${records.length}`);
}
$done({});