From a737d51839f36ae3692a06563d752f9878ac8404 Mon Sep 17 00:00:00 2001 From: Samuel Elliott Date: Fri, 25 Mar 2022 19:04:08 +0000 Subject: [PATCH] Use the previous updated timestamp from SplatNet 2 to check for updates This prevents redownloading (or missing data) if the local system time is slightly different to SplatNet 2's time. --- src/api/splatnet2.ts | 2 ++ src/cli/splatnet2/dump-records.ts | 8 +++++--- src/cli/splatnet2/monitor.ts | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/api/splatnet2.ts b/src/api/splatnet2.ts index ea80553..57015b2 100644 --- a/src/api/splatnet2.ts +++ b/src/api/splatnet2.ts @@ -272,6 +272,8 @@ ${colour} const mn = body.match(/]*))?)*\s+data-nsa-id=(?:"([^"]*)"|([^\s>]*))/i); const [language, region, user_id, nsa_id] = [ml, mr, mu, mn].map(m => m?.[1] || m?.[2] || null); + debug('SplatNet 2 user', {language, region, user_id, nsa_id}); + return { webserviceToken, url: url.toString(), diff --git a/src/cli/splatnet2/dump-records.ts b/src/cli/splatnet2/dump-records.ts index c307ad4..17005ca 100644 --- a/src/cli/splatnet2/dump-records.ts +++ b/src/cli/splatnet2/dump-records.ts @@ -123,9 +123,9 @@ export async function dumpRecords( if (updated) { try { - const {timestamp} = JSON.parse(await fs.readFile(latest_file, 'utf-8')); + const {sn2_updated_timestamp} = JSON.parse(await fs.readFile(latest_file, 'utf-8')); - if (timestamp > updated.getTime()) { + if ((sn2_updated_timestamp * 1000) >= updated.getTime()) { debug('Skipping user records, not updated'); return; } @@ -133,6 +133,8 @@ export async function dumpRecords( } const timestamp = Date.now(); + const sn2_updated_timestamp = records.records.update_time; + const filename = 'splatnet2-records-' + user_id + '-' + timestamp + '.json'; const file = path.join(directory, filename); const ni_filename = 'splatnet2-ni-' + user_id + '-' + timestamp + '.json'; @@ -144,7 +146,7 @@ export async function dumpRecords( debug('Writing records %s', ni_filename); await fs.writeFile(ni_file, JSON.stringify(nickname_and_icon, null, 4) + '\n', 'utf-8'); - await fs.writeFile(latest_file, JSON.stringify({timestamp}, null, 4) + '\n', 'utf-8'); + await fs.writeFile(latest_file, JSON.stringify({timestamp, sn2_updated_timestamp}, null, 4) + '\n', 'utf-8'); } export async function dumpProfileImage( diff --git a/src/cli/splatnet2/monitor.ts b/src/cli/splatnet2/monitor.ts index cb072e5..ad97e94 100644 --- a/src/cli/splatnet2/monitor.ts +++ b/src/cli/splatnet2/monitor.ts @@ -147,9 +147,9 @@ export class SplatNet2RecordsMonitor extends Loop { const updated = new Date(records.records.update_time * 1000); try { - const {timestamp} = JSON.parse(await fs.readFile(latest_file, 'utf-8')); + const {sn2_updated_timestamp} = JSON.parse(await fs.readFile(latest_file, 'utf-8')); - return timestamp <= updated.getTime(); + return (sn2_updated_timestamp * 1000) < updated.getTime(); } catch (err) {} return true;