From c7a716f981976a76afe61a4d985bd6fe4343595b Mon Sep 17 00:00:00 2001 From: Jef LeCompte Date: Fri, 25 Sep 2020 08:25:58 -0400 Subject: [PATCH] feat: in stock wait time per link now Signed-off-by: Jef LeCompte --- src/logger.ts | 9 ++++++++- src/store/lookup.ts | 15 ++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/logger.ts b/src/logger.ts index cbd52ae..9aab48e 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -35,11 +35,18 @@ export const Print = { }, inStock(link: Link, store: Store, color?: boolean): string { if (color) { - return chalk.green.bold(`🚀🚨 ${buildProductString(link, store, true)} :: IN STOCK 🚨🚀`); + return chalk.bgGreen.white.bold(`🚀🚨 ${buildProductString(link, store, false)} :: IN STOCK 🚨🚀`); } return `🚀🚨 ${buildProductString(link, store)} :: IN STOCK 🚨🚀`; }, + inStockWaiting(link: Link, store: Store, color?: boolean): string { + if (color) { + return 'ℹ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow('IN STOCK, WAITING'); + } + + return `ℹ ${buildProductString(link, store)} :: IN STOCK, WAITING`; + }, outOfStock(link: Link, store: Store, color?: boolean): string { if (color) { return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.red('OUT OF STOCK'); diff --git a/src/store/lookup.ts b/src/store/lookup.ts index 9d13e2d..f14a43c 100644 --- a/src/store/lookup.ts +++ b/src/store/lookup.ts @@ -25,6 +25,11 @@ async function lookup(browser: Browser, store: Store) { continue; } + if (Config.page.inStockWaitTime && inStock[store.name]) { + Logger.info(Print.inStockWaiting(link, store, true)); + continue; + } + const page = await browser.newPage(); page.setDefaultNavigationTimeout(Config.page.navigationTimeout); await page.setUserAgent(Config.page.userAgent); @@ -59,10 +64,10 @@ async function lookupCard(browser: Browser, store: Store, page: Page, link: Link sendNotification(link, store); if (Config.page.inStockWaitTime) { - inStock[store.name] = true; + inStock[link.url] = true; setTimeout(() => { - inStock[store.name] = false; + inStock[link.url] = false; }, 1000 * Config.page.inStockWaitTime); } @@ -119,11 +124,7 @@ async function lookupPageHasCaptcha(store: Store, page: Page) { export async function tryLookupAndLoop(browser: Browser, store: Store) { Logger.debug(`[${store.name}] Starting lookup...`); try { - if (Config.page.inStockWaitTime && inStock[store.name]) { - Logger.info(`[${store.name}] Has stock, waiting before trying to lookup again...`); - } else { - await lookup(browser, store); - } + await lookup(browser, store); } catch (error) { Logger.error(error); }