mirror of
https://github.com/opelly27/streetmerchant.git
synced 2026-05-20 14:37:41 +00:00
Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0da1621595 | |||
| 5b3e95acdf | |||
| 601742cf2c | |||
| e62eb72056 | |||
| 6cbe72118e | |||
| bb3509f99b | |||
| 430f3ed220 | |||
| e00dafe8ff | |||
| 137c0efdf0 | |||
| ffa2fdc700 | |||
| a9f452f5a7 | |||
| 1d2a33b1d7 | |||
| 493834b526 | |||
| 1918fda5a2 | |||
| 7038be2944 | |||
| 2fc584bdbd | |||
| 191bf8b2ff | |||
| 3085dbcc7f | |||
| 92bb2ef915 | |||
| 2ec5baa37c | |||
| 0fe3db9c99 |
+1
-1
@@ -7,6 +7,6 @@ charset = utf-8
|
|||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
[*.{yml,json}]
|
[*.{yml, json.md}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: GoogleCloudPlatform/release-please-action@v2.5.6
|
- uses: GoogleCloudPlatform/release-please-action@v2.5.7
|
||||||
id: release
|
id: release
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
@@ -1,5 +1,18 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.7.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.6.0...v1.7.0) (2020-11-03)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add deprecation notices ([601742c](https://www.github.com/jef/nvidia-snatcher/commit/601742cf2c0b5ccf0131e4c4e904ad4037d80a8d))
|
||||||
|
* newegg realtime api ([#664](https://www.github.com/jef/nvidia-snatcher/issues/664)) ([5b3e95a](https://www.github.com/jef/nvidia-snatcher/commit/5b3e95acdf2f427a6098f15b9fbe65e88354a678))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **banner:** add version to docker image ([#649](https://www.github.com/jef/nvidia-snatcher/issues/649)) ([1d2a33b](https://www.github.com/jef/nvidia-snatcher/commit/1d2a33b1d765fece9d1c9bf7d548818d1f0c8d92))
|
||||||
|
|
||||||
## [1.6.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.5.0...v1.6.0) (2020-10-29)
|
## [1.6.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.5.0...v1.6.0) (2020-10-29)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,5 +32,6 @@ WORKDIR /app
|
|||||||
|
|
||||||
COPY --from=builder /build/node_modules/ node_modules/
|
COPY --from=builder /build/node_modules/ node_modules/
|
||||||
COPY --from=builder /build/build/ build/
|
COPY --from=builder /build/build/ build/
|
||||||
|
COPY version.txt version.txt
|
||||||
|
|
||||||
CMD [ "node", "./build/index.js" ]
|
CMD [ "node", "./build/index.js" ]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# nvidia-snatcher [](https://github.com/jef/nvidia-snatcher/actions?query=workflow%3Aci)
|
# nvidia-snatcher [](https://github.com/jef/nvidia-snatcher/actions?query=workflow%3Aci) [](https://kiwiirc.com/nextclient/irc.kiwiirc.com/?nick=kiwi_?#streetmerchant)
|
||||||
|
|
||||||
[FAQ](#FAQ) | [Issues](https://github.com/jef/nvidia-snatcher/issues) | [Wiki](https://github.com/jef/nvidia-snatcher/wiki)
|
[FAQ](#FAQ) | [Issues](https://github.com/jef/nvidia-snatcher/issues)
|
||||||
|
| [Wiki](https://github.com/jef/nvidia-snatcher/wiki)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -8,55 +9,34 @@ The purpose of this bot is to get an Nvidia card. It tries multiple things to do
|
|||||||
|
|
||||||
- Currently, `nvidia-snatcher` is not capable of purchasing a card for you
|
- Currently, `nvidia-snatcher` is not capable of purchasing a card for you
|
||||||
- Scrapes multiple websites for patterns of being stocked
|
- Scrapes multiple websites for patterns of being stocked
|
||||||
- API requests are a work in progress (very soon)
|
- API requests are a work in progress (very soon)
|
||||||
- Opens browser when stock is available
|
- Opens browser when stock is available
|
||||||
- Sends an email to you when stock is avaiable (must have Gmail)
|
- Ability to send notifications when stock is available
|
||||||
|
|
||||||
<details>
|
## Installation overview
|
||||||
<summary>What you may see if you're lucky</summary>
|
|
||||||
|
|
||||||
```sh
|
|
||||||
2020-09-18T07:06:28.535Z info :: ✖ [nvidia] nvidia founders edition is still out of stock
|
|
||||||
2020-09-18T07:06:31.241Z info :: ✖ [nvidia] nvidia founders edition is still out of stock
|
|
||||||
2020-09-18T07:06:34.212Z info :: ✖ [bestbuy] nvidia founder edition is still out of stock
|
|
||||||
2020-09-18T07:06:39.878Z info :: ✖ [bandh] gigabyte black is still out of stock
|
|
||||||
2020-09-18T07:06:43.236Z info :: ✖ [bestbuy] gigabyte black is still out of stock
|
|
||||||
2020-09-18T07:06:43.318Z info :: ↗ trying stores again
|
|
||||||
2020-09-18T07:06:43.318Z info :: 🚀🚀🚀 [nvidia] nvidia founders edition IN STOCK 🚀🚀🚀
|
|
||||||
2020-09-18T07:06:43.318Z info :: https://store.nvidia.com/store/nvidia/en_US/buy/productID.5438481700/clearCart.yes/nextPage.QuickBuyCartPage
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
| | Adorama | Amazon | Amazon (CA) | ASUS | B&H | Best Buy | Best Buy (CA) | EVGA | Micro Center | Newegg | Newegg (CA) | Nvidia | Office Depot | PNY | Zotac |
|
|
||||||
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
||||||
| **3070**| | | | | | `✔` | `✔` | | | | `✔` | | | `✔` | |
|
|
||||||
| **3080** | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` |
|
|
||||||
| **3090** | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | | `✔` | `✔` | `✔` | | `✔` | `✔` |
|
|
||||||
|
|
||||||
## Installation and prerequisites
|
|
||||||
|
|
||||||
Linux, macOS, and Windows are all capable operating systems.
|
Linux, macOS, and Windows are all capable operating systems.
|
||||||
|
|
||||||
You do not need any computer skills, smarts, or anything of that nature. You are very capable as you have made it this far. Some basic understanding how a terminal, git, and or Node.js is a bonus, but that does not limit you to getting `nvidia-snatcher` running!
|
You do not need any computer skills, smarts, or anything of that nature. You are very capable as you have made it this
|
||||||
|
far. Some basic understanding how a terminal, git, and or Node.js is a bonus, but that does not limit you to
|
||||||
|
getting `nvidia-snatcher` running!
|
||||||
|
|
||||||
### Quick overview
|
### Installation: native
|
||||||
|
|
||||||
#### Native installation
|
|
||||||
|
|
||||||
- [Node.js 15](https://nodejs.org/en/)
|
- [Node.js 15](https://nodejs.org/en/)
|
||||||
- [git](https://git-scm.com/)
|
- [git](https://git-scm.com/)
|
||||||
- Clone this project `git clone https://github.com/jef/nvidia-snatcher.git`
|
- Clone this project `git clone https://github.com/jef/nvidia-snatcher.git`
|
||||||
- Run `npm install`
|
- Run `npm install`
|
||||||
- Copy `.env-example` to a new file `.env` and edit the `.env` file to your liking using your [favorite text editor](https://code.visualstudio.com/)
|
- Copy `.env-example` to a new file `.env` and edit the `.env` file to your liking using
|
||||||
- More on this in [customization](#Customization)
|
your [favorite text editor](https://code.visualstudio.com/)
|
||||||
|
- More on this in [customization](#Customization)
|
||||||
- Run `npm run start` to start
|
- Run `npm run start` to start
|
||||||
|
|
||||||
At any point you want the program to stop, use <kbd>Ctrl</kbd> + <kbd>C</kbd>.
|
At any point you want the program to stop, use <kbd>Ctrl</kbd> + <kbd>C</kbd>.
|
||||||
|
|
||||||
> :point_right: Please visit the [wiki](https://github.com/jef/nvidia-snatcher/wiki) if you need more help with installation.
|
> :point_right: Please visit the [wiki](https://github.com/jef/nvidia-snatcher/wiki) if you need more help with installation.
|
||||||
|
|
||||||
#### Docker image (To run inside containers)
|
### Installation: Docker
|
||||||
|
|
||||||
Available via GitHub Container Registry.
|
Available via GitHub Container Registry.
|
||||||
|
|
||||||
@@ -69,97 +49,63 @@ Use `docker run --cap-add=SYS_ADMIN -it --rm --env-file ./.env ghcr.io/jef/nvidi
|
|||||||
|
|
||||||
### Developer notes
|
### Developer notes
|
||||||
|
|
||||||
The command `npm run start:dev` can be used instead of `npm run start` to automatically restart the project when filesystem changes are detected in the `src/` folder or `.env` file.
|
The command `npm run start:dev` can be used instead of `npm run start` to automatically restart the project when
|
||||||
|
filesystem changes are detected in the `src/` folder or `.env` file.
|
||||||
|
|
||||||
### Customization
|
## Customization
|
||||||
|
|
||||||
To customize `nvidia-snatcher`, make a copy of `.env-example` as `.env` and make any changes to your liking. _All environment variables are **optional**._
|
To customize `nvidia-snatcher`, make a copy of `.env-example` as `.env` and make any changes to your liking. _All
|
||||||
|
environment variables are **optional**._
|
||||||
|
|
||||||
Here is a list of variables that you can use to customize your newly copied `.env` file:
|
<details>
|
||||||
|
<summary>Expand to see all available options</summary>
|
||||||
|
|
||||||
|
### Application
|
||||||
|
|
||||||
| Environment variable | Description | Notes |
|
| Environment variable | Description | Notes |
|
||||||
|:---:|---|---|
|
|:---:|---|---|
|
||||||
| `BROWSER_TRUSTED` | Skip Chromium Sandbox | Useful for containerized environments, default: `false` |
|
| `BROWSER_TRUSTED` | Skip Chromium Sandbox | Useful for containerized environments, default: `false` |
|
||||||
| `COUNTRY` | [Supported country](#supported-countries) you want to be scraped | Currently only used by Nvidia, default: `usa` |
|
|
||||||
| `DESKTOP_NOTIFICATIONS` | Display desktop notifications using [node-notifier](https://www.npmjs.com/package/node-notifier) | Default: `false` |
|
|
||||||
| `DISCORD_NOTIFY_GROUP` | Discord group you would like to notify | Can be comma separated, use role ID, E.g.: `<@2834729847239842>` |
|
|
||||||
| `DISCORD_WEB_HOOK` | Discord Web Hook URL | Can be comma separated, use whole webhook URL |
|
|
||||||
| `EMAIL_PASSWORD` | Gmail password | See below if you have MFA |
|
|
||||||
| `EMAIL_TO` | Destination Email | Defaults to username if not set. Can be comma separated |
|
|
||||||
| `EMAIL_USERNAME` | Gmail address | E.g.: `jensen.robbed.us@gmail.com` |
|
|
||||||
| `HEADLESS` | Puppeteer to run headless or not | Debugging related, default: `true` |
|
| `HEADLESS` | Puppeteer to run headless or not | Debugging related, default: `true` |
|
||||||
| `INCOGNITO` | Puppeteer to run incognito or not | Debugging related, default: `false` |
|
| `INCOGNITO` | Puppeteer to run incognito or not | Debugging related, default: `false` |
|
||||||
| `IN_STOCK_WAIT_TIME` | Time to wait between requests to the same link if it has that card in stock | In seconds, default: `0` |
|
| `IN_STOCK_WAIT_TIME` | Time to wait between requests to the same link if it has that card in stock | In seconds, default: `0` |
|
||||||
| `LOG_LEVEL` | [Logging levels](https://github.com/winstonjs/winston#logging-levels) | Debugging related, default: `info` |
|
| `LOG_LEVEL` | [Logging levels](https://github.com/winstonjs/winston#logging-levels) | Debugging related, default: `info` |
|
||||||
| `LOW_BANDWIDTH` | Blocks images/fonts to reduce traffic | Disables ad blocker, default: `false` |
|
| `LOW_BANDWIDTH` | Blocks images/fonts to reduce traffic | Disables ad blocker, default: `false` |
|
||||||
| `MAX_PRICE_SERIES_3070` | Maximum price allowed for a match, applies 3070 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | Default: leave empty for no limit, otherwise enter a price (enter whole dollar amounts only, avoid use of: dollar symbols, commas, and periods.) e.g.: `1234` - Cards above `1234` will be skipped. |
|
|
||||||
| `MAX_PRICE_SERIES_3080` | Maximum price allowed for a match, applies 3080 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | Default: leave empty for no limit, otherwise enter a price (enter whole dollar amounts only, avoid use of: dollar symbols, commas, and periods.) e.g.: `1234` - Cards above `1234` will be skipped. |
|
|
||||||
| `MAX_PRICE_SERIES_3090` | Maximum price allowed for a match, applies 3090 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | Default: leave empty for no limit, otherwise enter a price (enter whole dollar amounts only, avoid use of: dollar symbols, commas, and periods.) e.g.: `1234` - Cards above `1234` will be skipped. |
|
|
||||||
| `MICROCENTER_LOCATION` | Specific MicroCenter location(s) to search | Comma separated, e.g.: `marietta,duluth`, default: `web` |
|
|
||||||
| `MQTT_BROKER_ADDRESS` | IP address or URL of MQTT Broker | e.g 192.168.1.xxx or broker.hivemq.com
|
|
||||||
| `MQTT_BROKER_PORT` | Network port of MQTT Broker | Default: 1883
|
|
||||||
| `MQTT_CLIENT_ID` | Unique ClientID (only if required by MQTT Broker), typically not required when only publishing alerts | eg. client-123456
|
|
||||||
| `MQTT_PASSWORD` | MQTT password - only use with MQTT brokers on private networks, if required. Will not be sent over public networks for safety. | e.g mysecret
|
|
||||||
| `MQTT_QOS` | QoS level for published alerts to broker (https://www.npmjs.com/package/mqtt#about-qos) | Default: 0, Can be 0, 1, or 2
|
|
||||||
| `MQTT_TOPIC` | Topic to publish alerts to. Can include %store%, %series%, %brand%, %model% for dynamic topics | Default: nvidia-snatcher/alert e.g nv-alert/%store%/%series%/%brand%/%model%/alert
|
|
||||||
| `MQTT_USERNAME` | MQTT username - (only if required by MQTT Broker) | e.g myusername
|
|
||||||
| `NVIDIA_ADD_TO_CART_ATTEMPTS` | The maximum number of times the `nvidia-api` add to cart feature will be attempted before failing | Default: `10` |
|
|
||||||
| `NVIDIA_SESSION_TTL` | The time in milliseconds to keep the cart active while using `nvidia-api` | Default: `60000` |
|
|
||||||
| `OPEN_BROWSER` | Toggle for whether or not the browser should open when item is found | Default: `true` |
|
| `OPEN_BROWSER` | Toggle for whether or not the browser should open when item is found | Default: `true` |
|
||||||
| `PAGERDUTY_INTEGRATION_KEY` | PagerDuty Events API v2 Integration Key. Obtain one in PagerDuty - <Service you want to use> - Integrations | |
|
|
||||||
| `PAGERDUTY_SEVERITY` | Severity of PagerDuty events | Default: `info` |
|
|
||||||
| `PAGE_BACKOFF_MIN` | Minimum backoff time between retrying requests for the same store when a forbidden response is received | Default: `10000` |
|
| `PAGE_BACKOFF_MIN` | Minimum backoff time between retrying requests for the same store when a forbidden response is received | Default: `10000` |
|
||||||
| `PAGE_BACKOFF_MAX` | Maximum backoff time between retrying requests for the same store when a forbidden response is received | Default: `3600000` |
|
| `PAGE_BACKOFF_MAX` | Maximum backoff time between retrying requests for the same store when a forbidden response is received | Default: `3600000` |
|
||||||
| `PAGE_SLEEP_MIN` | Minimum sleep time between queries of the same product page | In milliseconds, default: `5000` |
|
| `PAGE_SLEEP_MIN` | Minimum sleep time between queries of the same product page | In milliseconds, default: `5000` |
|
||||||
| `PAGE_SLEEP_MAX` | Maximum sleep time between queries of the same product page | In milliseconds, default: `10000` |
|
| `PAGE_SLEEP_MAX` | Maximum sleep time between queries of the same product page | In milliseconds, default: `10000` |
|
||||||
| `PAGE_TIMEOUT` | Navigation Timeout in milliseconds | `0` for infinite, default: `30000` |
|
| `PAGE_TIMEOUT` | Navigation Timeout in milliseconds | `0` for infinite, default: `30000` |
|
||||||
| `PHONE_CARRIER` | [Supported carriers](#supported-carriers) for SMS | Email configuration required |
|
|
||||||
| `PHONE_NUMBER` | 10 digit phone number | E.g.: `1234567890`, email configuration required |
|
|
||||||
| `PLAY_SOUND` | Play this sound notification if a card is found | Relative path accepted, valid formats: wav, mp3, flac, E.g.: `path/to/notification.wav`, [free sounds available](https://notificationsounds.com/) |
|
|
||||||
| `PROXY_ADDRESS` | IP Address or fqdn of proxy server |
|
| `PROXY_ADDRESS` | IP Address or fqdn of proxy server |
|
||||||
| `PROXY_PORT` | TCP Port number on which the proxy is listening for connections | Default: `80` |
|
| `PROXY_PORT` | TCP Port number on which the proxy is listening for connections | Default: `80` |
|
||||||
| `PUSHBULLET` | PushBullet API key | Generate at https://www.pushbullet.com/#settings/account | |
|
|
||||||
| `PUSHOVER_TOKEN` | Pushover access token | Generate at https://pushover.net/apps/build | |
|
|
||||||
| `PUSHOVER_USER` | Pushover username | |
|
|
||||||
| `PUSHOVER_PRIORITY` | Pushover message priority |
|
|
||||||
| `SCREENSHOT` | Capture screenshot of page if a card is found | Default: `true` |
|
| `SCREENSHOT` | Capture screenshot of page if a card is found | Default: `true` |
|
||||||
| `SHOW_ONLY_BRANDS` | Filter to show specified brands | Comma separated, e.g.: `evga,zotac` |
|
|
||||||
| `SHOW_ONLY_MODELS` | Filter to show specified models | Both supported formats are comma separated <br/><br/>1. Standard E.g.: `founders edition,rog strix` <br/><br/> 2. Advanced E.g: `MODEL:SERIES`, E.g: `founders edition:3090,rog strix` |
|
|
||||||
| `SHOW_ONLY_SERIES` | Filter to show specified series | Comma separated, e.g.: `3080` |
|
|
||||||
| `SLACK_CHANNEL` | Slack channel for posting | E.g.: `update`, no need for `#` |
|
|
||||||
| `SLACK_TOKEN` | Slack API token | |
|
|
||||||
| `SMTP_ADDRESS` | IP Address or fqdn of smtp server |
|
|
||||||
| `SMTP_PORT` | TCP Port number on which the smtp server is listening for connections | Default: `25` |
|
|
||||||
| `STORES` | [Supported stores](#supported-stores) you want to be scraped | Both supported formats are comma separated <br/><br/>1. Standard E.g.: `"nvidia"` <br/><br/> 2. Advanced E.g: `STORE:PAGE_SLEEP_MIN:PAGE_SLEEP_MAX`, E.g: `nvidia:10000:30000` <br/><br/>Default: `nvidia` |
|
|
||||||
| `SCREENSHOT` | Capture screenshot of page if a card is found | Default: `true` |
|
|
||||||
| `TELEGRAM_ACCESS_TOKEN` | Telegram access token | |
|
|
||||||
| `TELEGRAM_CHAT_ID` | Telegram chat ID | Comma seperated, e.g.: `123456789`, `123456789,987654321` |
|
|
||||||
| `TWILIO_ACCOUNT_SID` | Twilio Account SID | Can be found on twilio.com/console |
|
|
||||||
| `TWILIO_AUTH_TOKEN` | Twilio Auth Token | Can be found on twilio.com/console |
|
|
||||||
| `TWILIO_FROM_NUMBER` | Twilio provided phone number to send messages from | Include country code e.g +4401234567890 |
|
|
||||||
| `TWILIO_TO_NUMBER` | Mobile number to send SMS to | Include country code e.g +4401234567890 |
|
|
||||||
| `TWITTER_ACCESS_TOKEN_KEY` | Twitter Token Key | |
|
|
||||||
| `TWITTER_ACCESS_TOKEN_SECRET` | Twitter Token Secret | |
|
|
||||||
| `TWITTER_CONSUMER_KEY` | Twitter Consumer Key | Generate all Twitter keys at: https://developer.twitter.com/ |
|
|
||||||
| `TWITTER_CONSUMER_SECRET` | Twitter Consumer Secret | |
|
|
||||||
| `TWITTER_TWEET_TAGS` | Optional list of hashtags to append to the tweet message | E.g.: `#nvidia #nvidiastock` |
|
|
||||||
| `TWITCH_CLIENT_ID` | Twitch client ID | |
|
|
||||||
| `TWITCH_CLIENT_SECRET`| Twitch client secret | |
|
|
||||||
| `TWITCH_ACCESS_TOKEN` | Twitch access token | |
|
|
||||||
| `TWITCH_REFRESH_TOKEN` | Twitch refresh token | |
|
|
||||||
| `TWITCH_CHANNEL` | Twitch channel | |
|
|
||||||
| `USER_AGENT` | Custom User-Agents headers for HTTP requests | Newline separated, e.g.: `USER_AGENT_STRING1 \n USER_AGENT_STRING2` | | Default: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36` |
|
| `USER_AGENT` | Custom User-Agents headers for HTTP requests | Newline separated, e.g.: `USER_AGENT_STRING1 \n USER_AGENT_STRING2` | | Default: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36` |
|
||||||
| `WEB_PORT` | Starts a webserver to be able to control the bot while it is running; optional | Default: disabled |
|
| `WEB_PORT` | Starts a webserver to be able to control the bot while it is running; optional | Default: disabled |
|
||||||
|
|
||||||
> :point_right: If you have multi-factor authentication (MFA), you will need to create an [app password](https://myaccount.google.com/apppasswords) and use this instead of your Gmail password.
|
|
||||||
|
|
||||||
> :point_right: You can find your computer's user agent by [searching google for "my user agent"](http://google.com/search?q=my+user+agent)
|
> :point_right: You can find your computer's user agent by [searching google for "my user agent"](http://google.com/search?q=my+user+agent)
|
||||||
|
|
||||||
> :point_right: You can test your notification configuration by running `npm run test:notification`.
|
|
||||||
|
|
||||||
> :point_right: Data usage is [known to be high](https://github.com/jef/nvidia-snatcher/issues?q=is%3Aissue+sort%3Aupdated-desc+bandwidth). This is expected as the program scrapes many websites in parallel 24/7. To help reduce this, use `LOW_BANDWIDTH="true"`. We are looking into other solutions as well, but is low priority.
|
> :point_right: Data usage is [known to be high](https://github.com/jef/nvidia-snatcher/issues?q=is%3Aissue+sort%3Aupdated-desc+bandwidth). This is expected as the program scrapes many websites in parallel 24/7. To help reduce this, use `LOW_BANDWIDTH="true"`. We are looking into other solutions as well, but is low priority.
|
||||||
|
|
||||||
#### Supported stores
|
### Filters
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `COUNTRY` | [Supported country](#supported-countries) you want to be scraped | Currently only used by Nvidia, default: `usa` |
|
||||||
|
| `MAX_PRICE_SERIES_3070` | Maximum price allowed for a match, applies 3070 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | Default: leave empty for no limit, otherwise enter a price (enter whole dollar amounts only, avoid use of: dollar symbols, commas, and periods.) e.g.: `1234` - Cards above `1234` will be skipped. |
|
||||||
|
| `MAX_PRICE_SERIES_3080` | Maximum price allowed for a match, applies 3080 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | Default: leave empty for no limit, otherwise enter a price (enter whole dollar amounts only, avoid use of: dollar symbols, commas, and periods.) e.g.: `1234` - Cards above `1234` will be skipped. |
|
||||||
|
| `MAX_PRICE_SERIES_3090` | Maximum price allowed for a match, applies 3090 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | Default: leave empty for no limit, otherwise enter a price (enter whole dollar amounts only, avoid use of: dollar symbols, commas, and periods.) e.g.: `1234` - Cards above `1234` will be skipped. |
|
||||||
|
| `MICROCENTER_LOCATION` | Specific MicroCenter location(s) to search | Comma separated, e.g.: `marietta,duluth`, default: `web` |
|
||||||
|
| `NVIDIA_ADD_TO_CART_ATTEMPTS` | The maximum number of times the `nvidia-api` add to cart feature will be attempted before failing | Default: `10` |
|
||||||
|
| `NVIDIA_SESSION_TTL` | The time in milliseconds to keep the cart active while using `nvidia-api` | Default: `60000` |
|
||||||
|
| `SHOW_ONLY_BRANDS` | Filter to show specified brands | Comma separated, e.g.: `evga,zotac` |
|
||||||
|
| `SHOW_ONLY_MODELS` | Filter to show specified models | Both supported formats are comma separated <br/><br/>1. Standard E.g.: `founders edition,rog strix` <br/><br/> 2. Advanced E.g: `MODEL:SERIES`, E.g: `founders edition:3090,rog strix` |
|
||||||
|
| `SHOW_ONLY_SERIES` | Filter to show specified series | Comma separated, e.g.: `3080` |
|
||||||
|
| `STORES` | [Supported stores](#supported-stores) you want to be scraped | Both supported formats are comma separated <br/><br/>1. Standard E.g.: `"nvidia"` <br/><br/> 2. Advanced E.g: `STORE:PAGE_SLEEP_MIN:PAGE_SLEEP_MAX`, E.g: `nvidia:10000:30000` <br/><br/>Default: `nvidia` |
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Supported stores</summary>
|
||||||
|
|
||||||
|
> :point_right: Used with the `STORES` variable.
|
||||||
|
|
||||||
| Stores | Environment variable |
|
| Stores | Environment variable |
|
||||||
|:---:|:---:|
|
|:---:|:---:|
|
||||||
@@ -214,6 +160,8 @@ Here is a list of variables that you can use to customize your newly copied `.en
|
|||||||
<details>
|
<details>
|
||||||
<summary>Micro Center stores</summary>
|
<summary>Micro Center stores</summary>
|
||||||
|
|
||||||
|
> :point_right: Used with the `MICROCENTER_LOCATION` variable.
|
||||||
|
|
||||||
> :point_right: Before using `web`, please review [this issue comment](https://github.com/jef/nvidia-snatcher/issues/442#issuecomment-703297393).
|
> :point_right: Before using `web`, please review [this issue comment](https://github.com/jef/nvidia-snatcher/issues/442#issuecomment-703297393).
|
||||||
|
|
||||||
| Store name |
|
| Store name |
|
||||||
@@ -246,7 +194,12 @@ Here is a list of variables that you can use to customize your newly copied `.en
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
#### Supported Brands and Models
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Supported brands and models</summary>
|
||||||
|
|
||||||
|
> :point_right: Used with the `SHOW_ONLY_BRANDS` and `SHOW_ONLY_MODELS` variables.
|
||||||
|
|
||||||
| Brand | Model |
|
| Brand | Model |
|
||||||
|:---:|---|
|
|:---:|---|
|
||||||
@@ -262,28 +215,12 @@ Here is a list of variables that you can use to customize your newly copied `.en
|
|||||||
| `pny` | `dual fan`, `xlr8`, `xlr8 rgb` |
|
| `pny` | `dual fan`, `xlr8`, `xlr8 rgb` |
|
||||||
| `zotac` | `amp holo`, `amp extreme holo`, `trinity`, `trinity oc`, `twin edge`, `twin edge oc` |
|
| `zotac` | `amp holo`, `amp extreme holo`, `trinity`, `trinity oc`, `twin edge`, `twin edge oc` |
|
||||||
|
|
||||||
#### Supported carriers
|
</details>
|
||||||
|
|
||||||
| Carrier | Environment variable | Notes |
|
<details>
|
||||||
|:---:|:---:|:---:|
|
<summary>Supported countries (used with nvidia and nvidia-api)</summary>
|
||||||
| AT&T | `att` | |
|
|
||||||
| AT&T Prepaid | `attgo` | |
|
|
||||||
| Bell | `bell` | |
|
|
||||||
| Fido | `fido` | |
|
|
||||||
| Google | `google`| |
|
|
||||||
| Koodo | `koodo` | |
|
|
||||||
| Mint | `mint`| |
|
|
||||||
| Rogers | `rogers` | |
|
|
||||||
| Sprint | `sprint`| |
|
|
||||||
| Telus | `telus`| |
|
|
||||||
| T-Mobile | `tmobile`| |
|
|
||||||
| Verizon | `verizon`| Works with Visible |
|
|
||||||
| Virgin | `virgin`| |
|
|
||||||
| Virgin (CA) | `virgin-ca`| |
|
|
||||||
|
|
||||||
#### Supported countries
|
> :point_right: Used with the `COUNTRY` variable.
|
||||||
|
|
||||||
`COUNTRY` is only used by the `nvidia` and `nvidia-api` stores.
|
|
||||||
|
|
||||||
| Country | 3080 FE | 3090 FE | Test Card | Notes |
|
| Country | 3080 FE | 3090 FE | Test Card | Notes |
|
||||||
|:---:|:---:|:---:|:---:|:---:|
|
|:---:|:---:|:---:|:---:|:---:|
|
||||||
@@ -307,9 +244,177 @@ Here is a list of variables that you can use to customize your newly copied `.en
|
|||||||
| sweden | `✔` | `✔` | `✔` | |
|
| sweden | `✔` | `✔` | `✔` | |
|
||||||
| usa | `✔` | `✔` | `✔` | |
|
| usa | `✔` | `✔` | `✔` | |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Notifications
|
||||||
|
|
||||||
|
> :point_right: You can test your notification configuration by running `npm run test:notification`.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Desktop</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `DESKTOP_NOTIFICATIONS` | Display desktop notifications using [node-notifier](https://www.npmjs.com/package/node-notifier) | Default: `false` |
|
||||||
|
| `PLAY_SOUND` | Play this sound notification if a card is found | Relative path accepted, valid formats: wav, mp3, flac, E.g.: `path/to/notification.wav`, [free sounds available](https://notificationsounds.com/) |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Discord</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `DISCORD_NOTIFY_GROUP` | Discord group you would like to notify | Can be comma separated, use role ID, E.g.: `<@2834729847239842>` |
|
||||||
|
| `DISCORD_WEB_HOOK` | Discord Web Hook URL | Can be comma separated, use whole webhook URL |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Email and SMS</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `EMAIL_PASSWORD` | Gmail password | See below if you have MFA |
|
||||||
|
| `EMAIL_TO` | Destination Email | Defaults to username if not set. Can be comma separated |
|
||||||
|
| `EMAIL_USERNAME` | Gmail address | E.g.: `jensen.robbed.us@gmail.com` |
|
||||||
|
| `PHONE_CARRIER` | [Supported carriers](#supported-carriers) for SMS | Email configuration required |
|
||||||
|
| `PHONE_NUMBER` | 10 digit phone number | E.g.: `1234567890`, email configuration required |
|
||||||
|
| `SMTP_ADDRESS` | IP Address or fqdn of smtp server |
|
||||||
|
| `SMTP_PORT` | TCP Port number on which the smtp server is listening for connections | Default: `25` |
|
||||||
|
|
||||||
|
> :point_right: If you have multi-factor authentication (MFA), you will need to create an [app password](https://myaccount.google.com/apppasswords) and use this instead of your Gmail password.
|
||||||
|
|
||||||
|
#### Supported carriers
|
||||||
|
|
||||||
|
| Carrier | Environment variable | Notes |
|
||||||
|
|:---:|:---:|:---:|
|
||||||
|
| AT&T | `att` | |
|
||||||
|
| AT&T Prepaid | `attgo` | |
|
||||||
|
| Bell | `bell` | |
|
||||||
|
| Fido | `fido` | |
|
||||||
|
| Google | `google`| |
|
||||||
|
| Koodo | `koodo` | |
|
||||||
|
| Mint | `mint`| |
|
||||||
|
| Rogers | `rogers` | |
|
||||||
|
| Sprint | `sprint`| |
|
||||||
|
| Telus | `telus`| |
|
||||||
|
| T-Mobile | `tmobile`| |
|
||||||
|
| Verizon | `verizon`| Works with Visible |
|
||||||
|
| Virgin | `virgin`| |
|
||||||
|
| Virgin (CA) | `virgin-ca`| |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>MQTT</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `MQTT_BROKER_ADDRESS` | IP address or URL of MQTT Broker | e.g 192.168.1.xxx or broker.hivemq.com |
|
||||||
|
| `MQTT_BROKER_PORT` | Network port of MQTT Broker | Default: 1883 |
|
||||||
|
| `MQTT_CLIENT_ID` | Unique ClientID (only if required by MQTT Broker), typically not required when only publishing alerts | eg. client-123456 |
|
||||||
|
| `MQTT_PASSWORD` | MQTT password - only use with MQTT brokers on private networks, if required. Will not be sent over public networks for safety. | e.g mysecret |
|
||||||
|
| `MQTT_QOS` | QoS level for published alerts to broker (https://www.npmjs.com/package/mqtt#about-qos) | Default: 0, Can be 0, 1, or 2 |
|
||||||
|
| `MQTT_TOPIC` | Topic to publish alerts to. Can include %store%, %series%, %brand%, %model% for dynamic topics | Default: nvidia-snatcher/alert e.g nv-alert/%store%/%series%/%brand%/%model%/alert |
|
||||||
|
| `MQTT_USERNAME` | MQTT username - (only if required by MQTT Broker) | e.g myusername |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>PagerDuty</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `PAGERDUTY_INTEGRATION_KEY` | PagerDuty Events API v2 Integration Key. Obtain one in PagerDuty - <Service you want to use> - Integrations | |
|
||||||
|
| `PAGERDUTY_SEVERITY` | Severity of PagerDuty events | Default: `info` |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Pushbullet</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `PUSHBULLET` | PushBullet API key | Generate at https://www.pushbullet.com/#settings/account | |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Pushover</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `PUSHOVER_TOKEN` | Pushover access token | Generate at https://pushover.net/apps/build | |
|
||||||
|
| `PUSHOVER_USER` | Pushover username | |
|
||||||
|
| `PUSHOVER_PRIORITY` | Pushover message priority |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Slack</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `SLACK_CHANNEL` | Slack channel for posting | E.g.: `update`, no need for `#` |
|
||||||
|
| `SLACK_TOKEN` | Slack API token | |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Telegram</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `TELEGRAM_ACCESS_TOKEN` | Telegram access token | |
|
||||||
|
| `TELEGRAM_CHAT_ID` | Telegram chat ID | Comma seperated, e.g.: `123456789`, `123456789,987654321` |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Twilio</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `TWILIO_ACCOUNT_SID` | Twilio Account SID | Can be found on twilio.com/console |
|
||||||
|
| `TWILIO_AUTH_TOKEN` | Twilio Auth Token | Can be found on twilio.com/console |
|
||||||
|
| `TWILIO_FROM_NUMBER` | Twilio provided phone number to send messages from | Include country code e.g +4401234567890 |
|
||||||
|
| `TWILIO_TO_NUMBER` | Mobile number to send SMS to | Include country code e.g +4401234567890 |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Twitter</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `TWITTER_ACCESS_TOKEN_KEY` | Twitter Token Key | |
|
||||||
|
| `TWITTER_ACCESS_TOKEN_SECRET` | Twitter Token Secret | |
|
||||||
|
| `TWITTER_CONSUMER_KEY` | Twitter Consumer Key | Generate all Twitter keys at: https://developer.twitter.com/ |
|
||||||
|
| `TWITTER_CONSUMER_SECRET` | Twitter Consumer Secret | |
|
||||||
|
| `TWITTER_TWEET_TAGS` | Optional list of hashtags to append to the tweet message | E.g.: `#nvidia #nvidiastock` |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Twitch</summary>
|
||||||
|
|
||||||
|
| Environment variable | Description | Notes |
|
||||||
|
|:---:|---|---|
|
||||||
|
| `TWITCH_CLIENT_ID` | Twitch client ID | |
|
||||||
|
| `TWITCH_CLIENT_SECRET`| Twitch client secret | |
|
||||||
|
| `TWITCH_ACCESS_TOKEN` | Twitch access token | |
|
||||||
|
| `TWITCH_REFRESH_TOKEN` | Twitch refresh token | |
|
||||||
|
| `TWITCH_CHANNEL` | Twitch channel | |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
**Q: What's Node.js and how do I install it?** Visit [their website](https://nodejs.org/en/) and download and install it. Very straight forward. Otherwise, Google more information related to your system needs.
|
**Q: What's Node.js and how do I install it?** Visit [their website](https://nodejs.org/en/) and download and install
|
||||||
|
it. Very straight forward. Otherwise, Google more information related to your system needs.
|
||||||
|
|
||||||
**Q: Will this harm my computer?** No.
|
**Q: Will this harm my computer?** No.
|
||||||
|
|
||||||
@@ -324,23 +429,19 @@ Here is a list of variables that you can use to customize your newly copied `.en
|
|||||||
|
|
||||||
**Q: Will I get banned from of the stores?** Perhaps, but getting a card is a nice outcome.
|
**Q: Will I get banned from of the stores?** Perhaps, but getting a card is a nice outcome.
|
||||||
|
|
||||||
**Q: I got a problem and need help!** Join the [Discord](https://discord.gg/Cyc7nrz) or file an [issue](https://github.com/jef/nvidia-snatcher/issues/new/choose), I'll do my best to get to you. I work a full time job and this is only a hobby of mine.
|
**Q: I got a problem and need help!** File an [issue](https://github.com/jef/nvidia-snatcher/issues/new/choose). I'll do
|
||||||
|
my best to get to you. I work a full time job and this is only a hobby of mine.
|
||||||
|
|
||||||
**Q: How do I get the latest code?** Take look at this [wiki page](https://github.com/jef/nvidia-snatcher/wiki/Troubleshoot:-General:-Getting-the-latest-code)
|
**Q: How do I get the latest code?** Take look at
|
||||||
|
this [wiki page](https://github.com/jef/nvidia-snatcher/wiki/Troubleshoot:-General:-Getting-the-latest-code).
|
||||||
|
|
||||||
**Q: Why don't my notifications work?** There are probably an [issue](https://github.com/jef/nvidia-snatcher/issues?q=is%3Aissue+sort%3Aupdated-desc+sound+is%3Aclosed) [that] has [already](https://github.com/jef/nvidia-snatcher/issues/182) [been](https://github.com/jef/nvidia-snatcher/issues/116) [resolved](https://github.com/jef/nvidia-snatcher/issues/155)
|
**Q: Why don't my notifications work?** There is probably
|
||||||
|
an [issue](https://github.com/jef/nvidia-snatcher/issues?q=is%3Aissue+sort%3Aupdated-desc+sound+is%3Aclosed) that
|
||||||
|
has [already](https://github.com/jef/nvidia-snatcher/issues/182) [been](https://github.com/jef/nvidia-snatcher/issues/116) [resolved](https://github.com/jef/nvidia-snatcher/issues/155).
|
||||||
|
|
||||||
**Q: I'd love to contribute, how do I do that?** Make a [pull request](https://github.com/jef/nvidia-snatcher/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc)! All contributions are welcome.
|
**Q: I'd love to contribute, how do I do that?** Make
|
||||||
|
a [pull request](https://github.com/jef/nvidia-snatcher/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc)! All
|
||||||
|
contributions are welcome.
|
||||||
|
|
||||||
**Q: Why do I have to download all this stuff just to get this bot working?** Well, I would rather you didn't either. See [#11](https://github.com/jef/nvidia-snatcher/issues/11).
|
**Q: Why do I have to download all this stuff just to get this bot working?** Well, I would rather you didn't either.
|
||||||
|
See [#11](https://github.com/jef/nvidia-snatcher/issues/11).
|
||||||
### Acknowledgements
|
|
||||||
|
|
||||||
Thanks to the great contributors that make this project possible
|
|
||||||
|
|
||||||
Special shout to initial developers:
|
|
||||||
|
|
||||||
- [@andirew](https://github.com/andirew)
|
|
||||||
- [@fuckingrobot](https://github.com/fuckingrobot)
|
|
||||||
- [@ioncaza](https://github.com/IonCaza)
|
|
||||||
- [@malbert69](https://github.com/malbert69)
|
|
||||||
|
|||||||
Generated
+14887
-2102
File diff suppressed because it is too large
Load Diff
+7
-5
@@ -30,17 +30,18 @@
|
|||||||
"discord-webhook-node": "^1.1.8",
|
"discord-webhook-node": "^1.1.8",
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"messaging-api-telegram": "^1.0.1",
|
"messaging-api-telegram": "^1.0.1",
|
||||||
"mqtt": "^4.2.3",
|
"mqtt": "^4.2.4",
|
||||||
|
"node-fetch": "^2.6.1",
|
||||||
"node-notifier": "^8.0.0",
|
"node-notifier": "^8.0.0",
|
||||||
"node-pagerduty": "^1.3.4",
|
"node-pagerduty": "^1.3.5",
|
||||||
"nodemailer": "^6.4.14",
|
"nodemailer": "^6.4.14",
|
||||||
"open": "^7.3.0",
|
"open": "^7.3.0",
|
||||||
"play-sound": "^1.1.3",
|
"play-sound": "^1.1.3",
|
||||||
"puppeteer": "^5.4.1",
|
"puppeteer": "^5.4.1",
|
||||||
"puppeteer-extra": "^3.1.15",
|
"puppeteer-extra": "^3.1.15",
|
||||||
"puppeteer-extra-plugin-adblocker": "^2.11.7",
|
"puppeteer-extra-plugin-adblocker": "^2.11.8",
|
||||||
"puppeteer-extra-plugin-block-resources": "^2.2.7",
|
"puppeteer-extra-plugin-block-resources": "^2.2.7",
|
||||||
"puppeteer-extra-plugin-stealth": "^2.6.3",
|
"puppeteer-extra-plugin-stealth": "^2.6.5",
|
||||||
"pushover-notifications": "^1.2.2",
|
"pushover-notifications": "^1.2.2",
|
||||||
"twilio": "^3.50.0",
|
"twilio": "^3.50.0",
|
||||||
"twitch": "^4.2.7",
|
"twitch": "^4.2.7",
|
||||||
@@ -53,9 +54,10 @@
|
|||||||
"@types/async": "^3.2.3",
|
"@types/async": "^3.2.3",
|
||||||
"@types/cheerio": "^0.22.22",
|
"@types/cheerio": "^0.22.22",
|
||||||
"@types/node": "^14.14.6",
|
"@types/node": "^14.14.6",
|
||||||
|
"@types/node-fetch": "^2.5.7",
|
||||||
"@types/node-notifier": "^8.0.0",
|
"@types/node-notifier": "^8.0.0",
|
||||||
"@types/nodemailer": "^6.4.0",
|
"@types/nodemailer": "^6.4.0",
|
||||||
"@types/puppeteer": "^3.0.2",
|
"@types/puppeteer": "^3.0.4",
|
||||||
"@types/twitter": "^1.7.0",
|
"@types/twitter": "^1.7.0",
|
||||||
"husky": "^4.3.0",
|
"husky": "^4.3.0",
|
||||||
"nodemon": "^2.0.6",
|
"nodemon": "^2.0.6",
|
||||||
|
|||||||
+4
-1
@@ -1,4 +1,7 @@
|
|||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
|
import {readFileSync} from 'fs';
|
||||||
|
|
||||||
|
const version = readFileSync('version.txt', 'utf8');
|
||||||
|
|
||||||
export const banner = chalk.green.bold(`
|
export const banner = chalk.green.bold(`
|
||||||
$$\\ $$\\ $$\\ $$\\ $$\\
|
$$\\ $$\\ $$\\ $$\\ $$\\
|
||||||
@@ -9,4 +12,4 @@ $$ | $$ |\\$$\\$$ / $$ |$$ / $$ |$$ | $$$$$$$ |\\______|\\$$$$$$\\ $$ | $$
|
|||||||
$$ | $$ | \\$$$ / $$ |$$ | $$ |$$ |$$ __$$ | \\____$$\\ $$ | $$ |$$ __$$ | $$ |$$\\ $$ | $$ | $$ |$$ ____|$$ |
|
$$ | $$ | \\$$$ / $$ |$$ | $$ |$$ |$$ __$$ | \\____$$\\ $$ | $$ |$$ __$$ | $$ |$$\\ $$ | $$ | $$ |$$ ____|$$ |
|
||||||
$$ | $$ | \\$ / $$ |\\$$$$$$$ |$$ |\\$$$$$$$ | $$$$$$$ |$$ | $$ |\\$$$$$$$ | \\$$$$ |\\$$$$$$$\\ $$ | $$ |\\$$$$$$$\\ $$ |
|
$$ | $$ | \\$ / $$ |\\$$$$$$$ |$$ |\\$$$$$$$ | $$$$$$$ |$$ | $$ |\\$$$$$$$ | \\$$$$ |\\$$$$$$$\\ $$ | $$ |\\$$$$$$$\\ $$ |
|
||||||
\\__| \\__| \\_/ \\__| \\_______|\\__| \\_______| \\_______/ \\__| \\__| \\_______| \\____/ \\_______|\\__| \\__| \\_______|\\__|
|
\\__| \\__| \\_/ \\__| \\_______|\\__| \\_______| \\_______/ \\__| \\__| \\_______| \\____/ \\_______|\\__| \\__| \\_______|\\__|
|
||||||
`);
|
${version}`);
|
||||||
|
|||||||
@@ -192,6 +192,11 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Do API inventory validation in realtime (no cache) if available
|
||||||
|
if (store.realTimeInventoryLookup !== undefined && link.itemNumber !== undefined) {
|
||||||
|
return store.realTimeInventoryLookup(link.itemNumber);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -250,6 +250,108 @@ export const AmazonDe: Store = {
|
|||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.de/dp/B08HJQ182D'
|
url: 'https://www.amazon.de/dp/B08HJQ182D'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'dual',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08HSJ1622'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'dual oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08KHFZN9P'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'rog strix',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08HT7PR9Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'rog strix oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08L8JNTXQ'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'ventus 2x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08KWPDXJZ'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'ventus 3x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08L6PCZTR'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'gaming x trio',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08KWN2LZG'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'vision oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08M13DXSZ'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'gaming oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08KHL21CV'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'eagle oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08KHL2J5X'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
model: 'xc3 black',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08L3QCZKZ'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
model: 'xc3',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08L3QZP7W'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
model: 'xc3 ultra',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08L3Q41SM'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'zotac',
|
||||||
|
model: 'twin edge',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08HRBR7K9'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'zotac',
|
||||||
|
model: 'twin edge oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08LBVNKT1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'pny',
|
||||||
|
model: 'dual fan',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08HBF5L3K'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'pny',
|
||||||
|
model: 'xlr8 rgb',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.amazon.de/dp/B08HBJB7YD'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'amazon-de'
|
name: 'amazon-de'
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ export const Asus: Store = {
|
|||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://store.asus.com/us/item/202009AM150000003'
|
url: 'https://store.asus.com/us/item/202009AM150000003'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'tuf oc',
|
||||||
|
series: '3090',
|
||||||
|
url: 'https://store.asus.com/us/item/202009AM150000001'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'rog strix oc',
|
||||||
@@ -42,4 +48,3 @@ export const Asus: Store = {
|
|||||||
name: 'asus',
|
name: 'asus',
|
||||||
successStatusCodes: [[0, 399], 404]
|
successStatusCodes: [[0, 399], 404]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ export class NvidiaCart {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public get regionInfo(): NvidiaRegionInfo {
|
public get regionInfo(): NvidiaRegionInfo {
|
||||||
const country = config.store.country;
|
const country = config.store.country.toLowerCase();
|
||||||
const regionInfo = regionInfos.get(country);
|
const regionInfo = regionInfos.get(country);
|
||||||
if (!regionInfo) {
|
if (!regionInfo) {
|
||||||
throw new Error(`Unknown country ${country}`);
|
throw new Error(`Unknown country ${country}`);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {config} from '../../../config';
|
|||||||
import {timestampUrlParameter} from '../../timestamp-url-parameter';
|
import {timestampUrlParameter} from '../../timestamp-url-parameter';
|
||||||
|
|
||||||
function getRegionInfo(): NvidiaRegionInfo {
|
function getRegionInfo(): NvidiaRegionInfo {
|
||||||
let country = config.store.country;
|
let country = config.store.country.toLowerCase();
|
||||||
if (!regionInfos.has(country)) {
|
if (!regionInfos.has(country)) {
|
||||||
country = 'usa';
|
country = 'usa';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,6 +146,19 @@ function printConfig() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function warnIfStoreDeprecated(store: Store) {
|
||||||
|
switch (store.name) {
|
||||||
|
case 'nvidia':
|
||||||
|
case 'nvidia-api':
|
||||||
|
logger.warn(`${store.name} is deprecated in favor of bestbuy`);
|
||||||
|
break;
|
||||||
|
case 'evga':
|
||||||
|
logger.warn(`${store.name} is deprecated since they only support queuing`);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function updateStores() {
|
export function updateStores() {
|
||||||
stores.clear();
|
stores.clear();
|
||||||
|
|
||||||
@@ -153,6 +166,7 @@ export function updateStores() {
|
|||||||
const store = storeList.get(storeData.name);
|
const store = storeList.get(storeData.name);
|
||||||
|
|
||||||
if (store) {
|
if (store) {
|
||||||
|
warnIfStoreDeprecated(store);
|
||||||
stores.set(storeData.name, store);
|
stores.set(storeData.name, store);
|
||||||
store.minPageSleep = storeData.minPageSleep;
|
store.minPageSleep = storeData.minPageSleep;
|
||||||
store.maxPageSleep = storeData.maxPageSleep;
|
store.maxPageSleep = storeData.maxPageSleep;
|
||||||
|
|||||||
@@ -6,10 +6,14 @@ export const Mediamarkt: Store = {
|
|||||||
container: 'span[font-family="price"]',
|
container: 'span[font-family="price"]',
|
||||||
euroFormat: false
|
euroFormat: false
|
||||||
},
|
},
|
||||||
outOfStock: {
|
outOfStock: [{
|
||||||
container: '#root',
|
container: '#root',
|
||||||
text: ['dieser artikel ist aktuell nicht verfügbar.']
|
text: ['dieser artikel ist aktuell nicht verfügbar.']
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
container: '#root',
|
||||||
|
text: ['leider keine Lieferung möglich']
|
||||||
|
}]
|
||||||
},
|
},
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
@@ -18,30 +22,102 @@ export const Mediamarkt: Store = {
|
|||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2592355.html'
|
url: 'https://www.mediamarkt.de/de/product/-2592355.html'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'rog strix',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2691243.html'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'rog strix oc',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2691244.html'
|
url: 'https://www.mediamarkt.de/de/product/-2691244.html'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'dual',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2691245.html'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'dual oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2691246.html'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'tuf oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2691247.html'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2691439.html'
|
url: 'https://www.mediamarkt.de/de/product/-2691439.html'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'eagle oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2691444.html'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'aorus master',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2696163.html'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'vision oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2696164.html'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'gaming x trio',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2694894.html'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'ventus 3x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2694896.html'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'ventus 2x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2694898.html'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'inno3d',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2695942.html'
|
url: 'https://www.mediamarkt.de/de/product/-2695942.html'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'inno3d',
|
||||||
|
model: 'ichill x4',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2695941.html'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
model: 'twin edge',
|
model: 'twin edge',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2691365.html'
|
url: 'https://www.mediamarkt.de/de/product/-2691365.html'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'zotac',
|
||||||
|
model: 'twin edge oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.mediamarkt.de/de/product/-2695671.html'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'rog strix',
|
||||||
|
|||||||
@@ -214,6 +214,12 @@ export const NeweggCa: Store = {
|
|||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360'
|
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'vision oc',
|
||||||
|
series: '3080',
|
||||||
|
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
model: 'twin edge oc',
|
model: 'twin edge oc',
|
||||||
@@ -238,6 +244,12 @@ export const NeweggCa: Store = {
|
|||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
|
url: 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
model: 'ftw3 gaming',
|
||||||
|
series: '3080',
|
||||||
|
url: 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
model: 'aorus',
|
model: 'aorus',
|
||||||
|
|||||||
+191
-10
@@ -1,4 +1,5 @@
|
|||||||
import {Store} from './store';
|
import {Store} from './store';
|
||||||
|
import fetch from 'node-fetch';
|
||||||
|
|
||||||
export const Newegg: Store = {
|
export const Newegg: Store = {
|
||||||
labels: {
|
labels: {
|
||||||
@@ -18,13 +19,15 @@ export const Newegg: Store = {
|
|||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
|
itemNumber: '14-500-495',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-2060-06g-p4-2066-kr/p/N82E16814487488'
|
url: 'https://www.newegg.com/zotac-geforce-rtx-2060-zt-t20600k-10m/p/N82E16814500495'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453',
|
||||||
|
itemNumber: '14-126-453',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
|
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
|
||||||
@@ -32,6 +35,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518',
|
||||||
|
itemNumber: '14-487-518',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518'
|
||||||
@@ -39,6 +43,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519',
|
||||||
|
itemNumber: '14-487-519',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
|
||||||
@@ -46,6 +51,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522',
|
||||||
|
itemNumber: '14-487-522',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
|
||||||
@@ -53,21 +59,15 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521',
|
||||||
|
itemNumber: '14-487-521',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
|
||||||
},
|
},
|
||||||
// Removed from Newegg currently not available in US
|
|
||||||
// {
|
|
||||||
// brand: 'evga',
|
|
||||||
// cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487520',
|
|
||||||
// model: 'xc3 ultra',
|
|
||||||
// series: '3080',
|
|
||||||
// url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3885-kr/p/N82E16814487520'
|
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600',
|
||||||
|
itemNumber: '14-137-600',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600'
|
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600'
|
||||||
@@ -75,6 +75,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598',
|
||||||
|
itemNumber: '14-137-598',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
|
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
|
||||||
@@ -82,6 +83,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597',
|
||||||
|
itemNumber: '14-137-597',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
|
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
|
||||||
@@ -89,6 +91,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329',
|
||||||
|
itemNumber: '149-32-329',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
|
||||||
@@ -96,6 +99,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330',
|
||||||
|
itemNumber: '149-32-330',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
|
||||||
@@ -103,6 +107,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336',
|
||||||
|
itemNumber: '14-932-336',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336'
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336'
|
||||||
@@ -110,6 +115,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502',
|
||||||
|
itemNumber: '14-950-502',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
|
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
|
||||||
@@ -117,6 +123,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457',
|
||||||
|
itemNumber: '14-126-457',
|
||||||
model: 'rog strix',
|
model: 'rog strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
|
url: 'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
|
||||||
@@ -124,6 +131,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452',
|
||||||
|
itemNumber: '14-126-452',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
|
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
|
||||||
@@ -131,6 +139,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504',
|
||||||
|
itemNumber: '14-500-504',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504'
|
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504'
|
||||||
@@ -138,6 +147,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809',
|
||||||
|
itemNumber: '14-133-809',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 rgb',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809'
|
url: 'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809'
|
||||||
@@ -145,6 +155,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455',
|
||||||
|
itemNumber: '14-126-455',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455'
|
url: 'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455'
|
||||||
@@ -152,6 +163,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456',
|
||||||
|
itemNumber: '14-126-456',
|
||||||
model: 'rog strix',
|
model: 'rog strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
|
url: 'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
|
||||||
@@ -159,6 +171,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595',
|
||||||
|
itemNumber: '14-137-595',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
|
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
|
||||||
@@ -166,6 +179,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596',
|
||||||
|
itemNumber: '14-137-596',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
|
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
|
||||||
@@ -173,6 +187,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503',
|
||||||
|
itemNumber: '14-500-503',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
|
url: 'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
|
||||||
@@ -180,6 +195,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599',
|
||||||
|
itemNumber: '14-137-599',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599'
|
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599'
|
||||||
@@ -187,6 +203,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525',
|
||||||
|
itemNumber: '14-487-525',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
|
||||||
@@ -194,6 +211,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524',
|
||||||
|
itemNumber: '14-487-524',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
|
||||||
@@ -201,6 +219,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526',
|
||||||
|
itemNumber: '14-487-526',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
|
||||||
@@ -208,6 +227,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527',
|
||||||
|
itemNumber: '14-487-527',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527'
|
||||||
@@ -215,6 +235,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523',
|
||||||
|
itemNumber: '14-487-523',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
|
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
|
||||||
@@ -222,6 +243,7 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327',
|
||||||
|
itemNumber: '14-932-327',
|
||||||
model: 'gaming',
|
model: 'gaming',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
|
||||||
@@ -229,10 +251,169 @@ export const Newegg: Store = {
|
|||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328',
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328',
|
||||||
|
itemNumber: '14-932-328',
|
||||||
model: 'eagle',
|
model: 'eagle',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328'
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137601',
|
||||||
|
itemNumber: '14-137-601',
|
||||||
|
model: 'ventus 3x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137602',
|
||||||
|
itemNumber: '14-137-602',
|
||||||
|
model: 'ventus 2x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137603',
|
||||||
|
itemNumber: '14-137-603',
|
||||||
|
model: 'gaming x trio',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932360',
|
||||||
|
itemNumber: '14-932-360',
|
||||||
|
model: 'vision oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126459',
|
||||||
|
itemNumber: '14-126-459',
|
||||||
|
model: 'dual oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126458',
|
||||||
|
itemNumber: '14-126-458',
|
||||||
|
model: 'rog strix',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'zotac',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500501',
|
||||||
|
itemNumber: '14-500-501',
|
||||||
|
model: 'twin edge',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'zotac',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500505',
|
||||||
|
itemNumber: '14-500-505',
|
||||||
|
model: 'twin edge oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932342',
|
||||||
|
itemNumber: '14-932-342',
|
||||||
|
model: 'gaming oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487532',
|
||||||
|
itemNumber: '14-487-532',
|
||||||
|
model: 'ftw3 ultra',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487530',
|
||||||
|
itemNumber: '14-487-530',
|
||||||
|
model: 'xc3 ultra',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487528',
|
||||||
|
itemNumber: '14-487-528',
|
||||||
|
model: 'xc3 black',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932343',
|
||||||
|
itemNumber: '14-932-343',
|
||||||
|
model: 'eagle oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932344',
|
||||||
|
itemNumber: '14-932-344',
|
||||||
|
model: 'eagle',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487529',
|
||||||
|
itemNumber: '14-487-529',
|
||||||
|
model: 'xc3',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126460',
|
||||||
|
itemNumber: '14-126-460',
|
||||||
|
model: 'dual',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932359',
|
||||||
|
itemNumber: '14-932-359',
|
||||||
|
model: 'aorus master',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'evga',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487531',
|
||||||
|
itemNumber: '14-487-531',
|
||||||
|
model: 'ftw3',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126461',
|
||||||
|
itemNumber: '14-126-461',
|
||||||
|
model: 'tuf oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.newegg.com/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'newegg'
|
name: 'newegg',
|
||||||
|
realTimeInventoryLookup: async (itemNumber: string) => {
|
||||||
|
const request_url = 'https://www.newegg.com/product/api/ProductRealtime?ItemNumber=' + itemNumber;
|
||||||
|
const response = await fetch(request_url);
|
||||||
|
const response_json = await response.json();
|
||||||
|
return response_json.MainItem !== undefined && response_json.MainItem.Instock === true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ export const Notebooksbilliger: Store = {
|
|||||||
container: '.soldOut',
|
container: '.soldOut',
|
||||||
text: ['dieses produkt ist leider ausverkauft.']
|
text: ['dieses produkt ist leider ausverkauft.']
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
container: '.just_inStore',
|
||||||
|
text: ['dieses Produkt kann nur in unseren unten genannten Stores gekauft werden.']
|
||||||
|
},
|
||||||
{
|
{
|
||||||
container: '#product_error_text',
|
container: '#product_error_text',
|
||||||
text: ['leider ist dieser artikel nicht mehr verfügbar.']
|
text: ['leider ist dieser artikel nicht mehr verfügbar.']
|
||||||
@@ -36,12 +40,66 @@ export const Notebooksbilliger: Store = {
|
|||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+ichill+x3+grafikkarte+684162'
|
url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+ichill+x3+grafikkarte+684162'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'inno3d',
|
||||||
|
model: 'twin x2',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+twin+x2+grafikkarte+685496'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'inno3d',
|
||||||
|
model: 'twin x2 oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+twin+x2+oc+grafikkarte+685500'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'nvidia',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685357'
|
url: 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685357'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'gainward',
|
||||||
|
model: 'phoenix',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3070+phoenix+8gb+gddr6+grafikkarte+685073'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gainward',
|
||||||
|
model: 'phoenix gs',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3070+phoenix+gs+8gb+gddr6+grafikkarte+681575'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'pny',
|
||||||
|
model: 'uprising',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+uprising+dual+fan+edition+grafikkarte+685520'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'pny',
|
||||||
|
model: 'xlr8 rgb',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+xlr8+gaming+revel+epic+x+rgb+685560'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'tuf',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/asus+tuf+gaming+geforce+rtx+3070+8gb+grafikkarte+685524'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'zotac',
|
||||||
|
model: 'twin edge',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3070+twin+edge+8gb+gddr6+grafikkarte+677561'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'zotac',
|
||||||
|
model: 'twin edge oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3070+twin+edge+oc+8gb+gddr6+grafikkarte+684216'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'gainward',
|
brand: 'gainward',
|
||||||
model: 'phoenix gs',
|
model: 'phoenix gs',
|
||||||
|
|||||||
@@ -18,6 +18,108 @@ export const ProshopDE: Store = {
|
|||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.proshop.de/2797958'
|
url: 'https://www.proshop.de/2797958'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'rog strix',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876843'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: ' rog strix oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876845'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'dual',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876851'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'dual oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876853'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'tuf',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876854'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'asus',
|
||||||
|
model: 'tuf oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876856'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'eagle',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2878385'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'eagle oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2878386'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'gaming oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2878390'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'gigabyte',
|
||||||
|
model: 'vision oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2878390'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'inno3d',
|
||||||
|
model: 'ichill x2',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2883916'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'inno3d',
|
||||||
|
model: 'twin x2 oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2883917'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'inno3d',
|
||||||
|
model: 'ichill x3',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2883918'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'inno3d',
|
||||||
|
model: 'ichill x4',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2883919'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'gaming x trio',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876871'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'ventus 2x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876873'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'msi',
|
||||||
|
model: 'ventus 3x oc',
|
||||||
|
series: '3070',
|
||||||
|
url: 'https://www.proshop.de/2876875'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'rog strix',
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ export type Series = 'test:series' | '3070' | '3080' | '3090';
|
|||||||
|
|
||||||
export type Link = {
|
export type Link = {
|
||||||
brand: 'test:brand' | 'asus' | 'evga' | 'gainward' | 'gigabyte' | 'inno3d' | 'kfa2' | 'msi' | 'nvidia' | 'palit' | 'pny' | 'zotac';
|
brand: 'test:brand' | 'asus' | 'evga' | 'gainward' | 'gigabyte' | 'inno3d' | 'kfa2' | 'msi' | 'nvidia' | 'palit' | 'pny' | 'zotac';
|
||||||
|
itemNumber?: string;
|
||||||
series: Series;
|
series: Series;
|
||||||
model: string;
|
model: string;
|
||||||
url: string;
|
url: string;
|
||||||
@@ -36,6 +37,7 @@ export type Labels = {
|
|||||||
export type StatusCodeRangeArray = Array<(number | [number, number])>;
|
export type StatusCodeRangeArray = Array<(number | [number, number])>;
|
||||||
|
|
||||||
export type Store = {
|
export type Store = {
|
||||||
|
realTimeInventoryLookup?: (itemNumber: string) => Promise<boolean>;
|
||||||
/**
|
/**
|
||||||
* The range of status codes which will trigger backoff, i.e. an increasing
|
* The range of status codes which will trigger backoff, i.e. an increasing
|
||||||
* delay between requests. Setting an empty array will disable the feature.
|
* delay between requests. Setting an empty array will disable the feature.
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.6.0
|
1.7.0
|
||||||
|
|||||||
Reference in New Issue
Block a user