diff --git a/hydra.db b/hydra.db index bb2de7ba..600320e4 100644 Binary files a/hydra.db and b/hydra.db differ diff --git a/src/main/services/repack-tracker/xatab.ts b/src/main/services/repack-tracker/xatab.ts index d31a305a..34ebfa4c 100644 --- a/src/main/services/repack-tracker/xatab.ts +++ b/src/main/services/repack-tracker/xatab.ts @@ -12,6 +12,9 @@ import { formatBytes } from "@shared"; import { getFileBuffer } from "@main/helpers"; const worker = createWorker({}); +worker.setMaxListeners(11); + +let totalPages = 1; const formatXatabDate = (str: string) => { const date = new Date(); @@ -69,27 +72,37 @@ export const getNewRepacksFromXatab = async ( const repacks: QueryDeepPartialEntity[] = []; - for (const $a of Array.from( - window.document.querySelectorAll(".entry__title a") - )) { - try { - const repack = await getXatabRepack(($a as HTMLAnchorElement).href); - - if (repack) { - repacks.push({ - title: $a.textContent!, - repacker: "Xatab", - ...repack, - page, - }); - } - } catch (err: unknown) { - logger.error((err as Error).message, { - method: "getNewRepacksFromXatab", - }); - } + if (page === 1) { + totalPages = Number( + window.document.querySelector( + "#bottom-nav > div.pagination > a:nth-child(12)" + )?.textContent + ); } + const repacksFromPage = Array.from( + window.document.querySelectorAll(".entry__title a") + ).map(($a) => { + return getXatabRepack(($a as HTMLAnchorElement).href) + .then((repack) => { + if (repack) { + repacks.push({ + title: $a.textContent!, + repacker: "Xatab", + ...repack, + page, + }); + } + }) + .catch((err: unknown) => { + logger.error((err as Error).message, { + method: "getNewRepacksFromXatab", + }); + }); + }); + + await Promise.all(repacksFromPage); + const newRepacks = repacks.filter( (repack) => !existingRepacks.some( @@ -98,6 +111,7 @@ export const getNewRepacksFromXatab = async ( ); if (!newRepacks.length) return; + if (page === totalPages) return; await savePage(newRepacks);