diff --git a/README.md b/README.md index b4abfca965..fd8bf014bc 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The purpose of this bot is to get an Nvidia card. It tries multiple things to do |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | **3070**| | | | | | | | | | | | | **3080** | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | `✔` | -| **3090** | | | | | | | | | | | | +| **3090** | | | | | | | | | `✔` | | | ## Installation and prerequisites @@ -123,6 +123,7 @@ Here is a list of variables that you can use to customize your newly copied `.en | Newegg | `newegg`| | Newegg (CA) | `newegg-ca`| | Nvidia | `nvidia`| +| Nvidia (API) | `nvidia-api`| | Office Depot | `officedepot`| | Zotac | `zotac`| diff --git a/src/store/model/helpers/nvidia.ts b/src/store/model/helpers/nvidia.ts index 8fdb44b777..3937f008de 100644 --- a/src/store/model/helpers/nvidia.ts +++ b/src/store/model/helpers/nvidia.ts @@ -1,5 +1,5 @@ import {Browser, Response} from 'puppeteer'; -import {NvidiaRegionInfo, regionInfos} from '../nvidia'; +import {NvidiaRegionInfo, regionInfos} from '../nvidia-api'; import {Config} from '../../../config'; import {Link} from '../store'; import {Logger} from '../../../logger'; diff --git a/src/store/model/index.ts b/src/store/model/index.ts index 6a04a4d0c5..1b09239b4e 100644 --- a/src/store/model/index.ts +++ b/src/store/model/index.ts @@ -13,6 +13,7 @@ import {MicroCenter} from './microcenter'; import {Newegg} from './newegg'; import {NeweggCa} from './newegg-ca'; import {Nvidia} from './nvidia'; +import {NvidiaApi} from './nvidia-api'; import {OfficeDepot} from './officedepot'; import {Store} from './store'; import {Zotac} from './zotac'; @@ -31,6 +32,7 @@ const masterList = new Map([ [Newegg.name, Newegg], [NeweggCa.name, NeweggCa], [Nvidia.name, Nvidia], + [NvidiaApi.name, NvidiaApi], [OfficeDepot.name, OfficeDepot], [Zotac.name, Zotac] ]); diff --git a/src/store/model/nvidia-api.ts b/src/store/model/nvidia-api.ts new file mode 100644 index 0000000000..316a6b1e82 --- /dev/null +++ b/src/store/model/nvidia-api.ts @@ -0,0 +1,46 @@ +import {generateLinks, generateSetupAction} from './helpers/nvidia'; +import {Store} from './store'; + +// Region/country set by config file, silently ignores null / missing values and defaults to usa + +export interface NvidiaRegionInfo { + drLocale: string; + fe3080Id: number | null; + fe3090Id: number | null; + fe2060SuperId: number | null; + nvidiaLocale: string; +} + +export const regionInfos = new Map([ + ['austria', {drLocale: 'de_de', fe2060SuperId: null, fe3080Id: 5440853700, fe3090Id: null, nvidiaLocale: 'de_de'}], + ['belgium', {drLocale: 'fr_fr', fe2060SuperId: 5394902700, fe3080Id: 5438795700, fe3090Id: null, nvidiaLocale: 'fr_fr'}], + ['canada', {drLocale: 'en_us', fe2060SuperId: null, fe3080Id: 5438481700, fe3090Id: null, nvidiaLocale: 'en_ca'}], + ['czechia', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438793800, fe3090Id: null, nvidiaLocale: 'en_gb'}], + ['denmark', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438793300, fe3090Id: null, nvidiaLocale: 'en_gb'}], + ['finland', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438793300, fe3090Id: null, nvidiaLocale: 'en_gb'}], + ['france', {drLocale: 'fr_fr', fe2060SuperId: null, fe3080Id: 5438795200, fe3090Id: null, nvidiaLocale: 'fr_fr'}], + ['germany', {drLocale: 'de_de', fe2060SuperId: null, fe3080Id: 5438792300, fe3090Id: null, nvidiaLocale: 'de_de'}], + ['great_britain', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438792800, fe3090Id: null, nvidiaLocale: 'en_gb'}], + ['ireland', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438792800, fe3090Id: null, nvidiaLocale: 'en_gb'}], + ['italy', {drLocale: 'it_it', fe2060SuperId: null, fe3080Id: 5438796200, fe3090Id: null, nvidiaLocale: 'it_it'}], + ['luxembourg', {drLocale: 'fr_fr', fe2060SuperId: 5394902700, fe3080Id: 5438795700, fe3090Id: null, nvidiaLocale: 'fr_fr'}], + ['netherlands', {drLocale: 'nl_nl', fe2060SuperId: 5394903500, fe3080Id: 5438796700, fe3090Id: null, nvidiaLocale: 'nl_nl'}], + ['poland', {drLocale: 'pl_pl', fe2060SuperId: null, fe3080Id: 5438797700, fe3090Id: null, nvidiaLocale: 'pl_pSl'}], + ['portugal', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438794300, fe3090Id: null, nvidiaLocale: 'en_gb'}], + ['russia', {drLocale: 'ru_ru', fe2060SuperId: null, fe3080Id: null, fe3090Id: null, nvidiaLocale: 'ru_ru'}], + ['spain', {drLocale: 'es_es', fe2060SuperId: null, fe3080Id: 5438794800, fe3090Id: null, nvidiaLocale: 'es_es'}], + ['sweden', {drLocale: 'sv_SE', fe2060SuperId: null, fe3080Id: 5438798100, fe3090Id: null, nvidiaLocale: 'sv_se'}], + ['usa', {drLocale: 'en_us', fe2060SuperId: 5379432500, fe3080Id: 5438481700, fe3090Id: null, nvidiaLocale: 'en_us'}] +]); + +export const NvidiaApi: Store = { + labels: { + inStock: { + container: 'body', + text: ['product_inventory_in_stock'] + } + }, + links: generateLinks(), + name: 'nvidia-api', + setupAction: generateSetupAction() +}; diff --git a/src/store/model/nvidia.ts b/src/store/model/nvidia.ts index f588a26abd..dcdc8bc792 100644 --- a/src/store/model/nvidia.ts +++ b/src/store/model/nvidia.ts @@ -1,46 +1,35 @@ -import {generateLinks, generateSetupAction} from './helpers/nvidia'; import {Store} from './store'; -// Region/country set by config file, silently ignores null / missing values and defaults to usa - -export interface NvidiaRegionInfo { - drLocale: string; - fe3080Id: number | null; - fe3090Id: number | null; - fe2060SuperId: number | null; - nvidiaLocale: string; -} - -export const regionInfos = new Map([ - ['austria', {drLocale: 'de_de', fe2060SuperId: null, fe3080Id: 5440853700, fe3090Id: null, nvidiaLocale: 'de_de'}], - ['belgium', {drLocale: 'fr_fr', fe2060SuperId: 5394902700, fe3080Id: 5438795700, fe3090Id: null, nvidiaLocale: 'fr_fr'}], - ['canada', {drLocale: 'en_us', fe2060SuperId: null, fe3080Id: 5438481700, fe3090Id: null, nvidiaLocale: 'en_ca'}], - ['czechia', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438793800, fe3090Id: null, nvidiaLocale: 'en_gb'}], - ['denmark', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438793300, fe3090Id: null, nvidiaLocale: 'en_gb'}], - ['finland', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438793300, fe3090Id: null, nvidiaLocale: 'en_gb'}], - ['france', {drLocale: 'fr_fr', fe2060SuperId: null, fe3080Id: 5438795200, fe3090Id: null, nvidiaLocale: 'fr_fr'}], - ['germany', {drLocale: 'de_de', fe2060SuperId: null, fe3080Id: 5438792300, fe3090Id: null, nvidiaLocale: 'de_de'}], - ['great_britain', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438792800, fe3090Id: null, nvidiaLocale: 'en_gb'}], - ['ireland', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438792800, fe3090Id: null, nvidiaLocale: 'en_gb'}], - ['italy', {drLocale: 'it_it', fe2060SuperId: null, fe3080Id: 5438796200, fe3090Id: null, nvidiaLocale: 'it_it'}], - ['luxembourg', {drLocale: 'fr_fr', fe2060SuperId: 5394902700, fe3080Id: 5438795700, fe3090Id: null, nvidiaLocale: 'fr_fr'}], - ['netherlands', {drLocale: 'nl_nl', fe2060SuperId: 5394903500, fe3080Id: 5438796700, fe3090Id: null, nvidiaLocale: 'nl_nl'}], - ['poland', {drLocale: 'pl_pl', fe2060SuperId: null, fe3080Id: 5438797700, fe3090Id: null, nvidiaLocale: 'pl_pSl'}], - ['portugal', {drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438794300, fe3090Id: null, nvidiaLocale: 'en_gb'}], - ['russia', {drLocale: 'ru_ru', fe2060SuperId: null, fe3080Id: null, fe3090Id: null, nvidiaLocale: 'ru_ru'}], - ['spain', {drLocale: 'es_es', fe2060SuperId: null, fe3080Id: 5438794800, fe3090Id: null, nvidiaLocale: 'es_es'}], - ['sweden', {drLocale: 'sv_SE', fe2060SuperId: null, fe3080Id: 5438798100, fe3090Id: null, nvidiaLocale: 'sv_se'}], - ['usa', {drLocale: 'en_us', fe2060SuperId: 5379432500, fe3080Id: 5438481700, fe3090Id: null, nvidiaLocale: 'en_us'}] -]); - export const Nvidia: Store = { labels: { - inStock: { + captcha: { container: 'body', - text: ['product_inventory_in_stock'] + text: ['are you a human?'] + }, + inStock: { + container: '.main-container', + text: ['add to cart'] } }, - links: generateLinks(), - name: 'nvidia', - setupAction: generateSetupAction() + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.newegg.com/evga-geforce-rtx-2060-06g-p4-2066-kr/p/N82E16814487488' + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080', + url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&gpu=RTX%203080&category=GPU&manufacturer=NVIDIA&gpu_filter=RTX%203090~1,RTX%203080~1,RTX%203070~0,TITAN%20RTX~0,RTX%202080%20Ti~0,RTX%202070%20SUPER~0,RTX%202060%20SUPER~0,RTX%202060~0,GTX%201660%20Ti~0,GTX%201660%20SUPER~0,GTX%201660~0,GTX%201650%20SUPER~0,GTX%201650~0' + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3090', + url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&gpu=RTX%203090&category=GPU&manufacturer=NVIDIA&gpu_filter=RTX%203090~1,RTX%203080~1,RTX%203070~0,TITAN%20RTX~0,RTX%202080%20Ti~0,RTX%202070%20SUPER~0,RTX%202060%20SUPER~0,RTX%202060~0,GTX%201660%20Ti~0,GTX%201660%20SUPER~0,GTX%201660~0,GTX%201650%20SUPER~0,GTX%201650~0' + } + ], + name: 'nvidia' };