itch-dl
Version:
Bulk download games from itch.io - TypeScript implementation
56 lines (55 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadKeysAndUrls = loadKeysAndUrls;
exports.getOwnedKeys = getOwnedKeys;
exports.getDownloadKeys = getDownloadKeys;
exports.getOwnedGames = getOwnedGames;
let KEYS_CACHED = false;
const DOWNLOAD_KEYS = {};
const GAME_URLS = [];
async function loadKeysAndUrls(client) {
KEYS_CACHED = false;
let page = 1;
while (true) {
const res = await client.get('/profile/owned-keys', true, {
params: { page },
timeout: 15000,
});
if (res.status !== 200) {
break;
}
const data = res.data;
if (!data.owned_keys) {
break;
}
for (const k of data.owned_keys) {
DOWNLOAD_KEYS[k.game_id] = k.id;
GAME_URLS.push(k.game.url);
}
if (data.owned_keys.length === data.per_page) {
page += 1;
}
else {
break;
}
}
KEYS_CACHED = true;
}
async function getOwnedKeys(client) {
if (!KEYS_CACHED) {
await loadKeysAndUrls(client);
}
return [DOWNLOAD_KEYS, GAME_URLS];
}
async function getDownloadKeys(client) {
if (!KEYS_CACHED) {
await loadKeysAndUrls(client);
}
return DOWNLOAD_KEYS;
}
async function getOwnedGames(client) {
if (!KEYS_CACHED) {
await loadKeysAndUrls(client);
}
return GAME_URLS;
}