Skip to content

Commit

Permalink
feat: temporarily pause requests if store has stock (#147)
Browse files Browse the repository at this point in the history
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
  • Loading branch information
nacgarg and jef committed Sep 21, 2020
1 parent 133a54f commit 6413144
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 2 deletions.
1 change: 1 addition & 0 deletions .env-example
Expand Up @@ -3,6 +3,7 @@ DISCORD_WEB_HOOK="https://discordapp.com/api/webhooks/23123123123/5dfsdfh3h2j5hd
EMAIL_USERNAME="youremail@gmail.com"
EMAIL_PASSWORD="secretpassword"
HEADLESS="true"
IN_STOCK_WAIT_TIME="30"
LOG_LEVEL="info"
OPEN_BROWSER="true"
PAGE_TIMEOUT="30000"
Expand Down
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -68,6 +68,7 @@ Here is a list of variables that you can use to customize your newly copied `.en
| `EMAIL_USERNAME` | Gmail address | E.g.: `jensen.robbed.us@gmail.com` |
| `EMAIL_PASSWORD` | Gmail password | See below if you have MFA |
| `HEADLESS` | Puppeteer to run headless or not | Debugging related, default: `true` |
| `IN_STOCK_WAIT_TIME` | Time to wait between requests to the same store if it has cards in stock | In seconds, default: `0` |
| `LOG_LEVEL` | [Logging levels](https://github.com/winstonjs/winston#logging-levels) | Debugging related, default: `info` |
| `OPEN_BROWSER` | Toggle for whether or not the browser should open when item is found | Default: `true` |
| `PAGE_TIMEOUT` | Navigation Timeout in milliseconds | `0` for infinite, default: `30000` |
Expand Down
3 changes: 2 additions & 1 deletion src/config.ts
Expand Up @@ -56,7 +56,8 @@ const page = {
width: 1920,
height: 1080,
navigationTimeout: Number(process.env.PAGE_TIMEOUT ?? 30000),
userAgent: process.env.USER_AGENT ?? 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
userAgent: process.env.USER_AGENT ?? 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
inStockWaitTime: Number(process.env.IN_STOCK_WAIT_TIME ?? 0)
};

const store = {
Expand Down
14 changes: 13 additions & 1 deletion src/store/lookup.ts
Expand Up @@ -7,6 +7,8 @@ import {sendNotification} from '../notification';
import {includesLabels} from './includes-labels';
import {closePage, delay, getSleepTime} from '../util';

const inStock: Record<string, boolean> = {};

/**
* Returns true if the brand should be checked for stock
*
Expand Down Expand Up @@ -81,6 +83,12 @@ async function lookup(browser: Browser, store: Store) {
} else {
Logger.info(`🚀🚀🚀 [${store.name}] ${graphicsCard} IN STOCK 🚀🚀🚀`);
Logger.info(link.url);
if (Config.page.inStockWaitTime) {
inStock[store.name] = true;
setTimeout(() => {
inStock[store.name] = false;
}, 1000 * Config.page.inStockWaitTime);
}

if (Config.page.capture) {
Logger.debug('ℹ saving screenshot');
Expand Down Expand Up @@ -109,7 +117,11 @@ async function lookup(browser: Browser, store: Store) {
export async function tryLookupAndLoop(browser: Browser, store: Store) {
Logger.debug(`[${store.name}] Starting lookup...`);
try {
await lookup(browser, store);
if (Config.page.inStockWaitTime && inStock[store.name]) {
Logger.info(`[${store.name}] Has stock, waiting before trying to lookup again...`);
} else {
await lookup(browser, store);
}
} catch (error) {
Logger.error(error);
}
Expand Down

0 comments on commit 6413144

Please sign in to comment.