Compare commits

..

114 Commits

Author SHA1 Message Date
github-actions[bot] c2defe224a chore: release 3.1.0 (#774) 2020-11-22 11:57:58 -05:00
Chris Mendoza e552c9102d feat(store): add corsair sfx PSUs (#881) 2020-11-22 11:57:05 -05:00
Jef LeCompte 292e3603fd fix(store): generate links only for selected stores
Resolves: #694
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-22 11:53:17 -05:00
Jef LeCompte 85bbaf905e chore(xbox): add xbox series x
Closes: #836
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-22 11:34:30 -05:00
Armando D Jagucki 432d38bd5a chore(amazon): add big navi links (#880) 2020-11-22 10:08:22 -05:00
Sebastian 2d01cfddff feat(store): add captcha check to saturn and mediamarkt (#876) 2020-11-21 15:10:21 -05:00
Cristian 53739e05ab feat(store): add vsgamers (#767) 2020-11-21 13:28:01 -05:00
Jef LeCompte 9ad9793dc1 chore: update dependencies (#874)
Additional linting fixes

Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-21 10:55:03 -05:00
dependabot[bot] f6f5c6bfe7 chore(deps): bump twitch-auth from 4.2.7 to 4.3.0 (#853)
Bumps [twitch-auth](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch-auth) from 4.2.7 to 4.3.0.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.3.0/packages/twitch-auth)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-21 10:37:24 -05:00
SolidPIPe 28c965d653 docs: remove duplicated models (#861) 2020-11-21 10:31:56 -05:00
Asier Eguibar 4b689cb94e feat(coolmod): add maxPrice (#862) 2020-11-21 10:31:36 -05:00
Barmaley13 c3f38fb2c9 chore: add more 3070 cards, reorder links (#872) 2020-11-21 10:29:10 -05:00
dependabot[bot] 239b5d3e8a chore(deps): bump twitch-chat-client from 4.2.7 to 4.3.0 (#856)
Bumps [twitch-chat-client](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch-chat-client) from 4.2.7 to 4.3.0.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.3.0/packages/twitch-chat-client)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-21 09:49:05 -05:00
dependabot[bot] 7694829dd6 chore(deps): bump twitch from 4.2.7 to 4.3.0 (#857)
Bumps [twitch](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch) from 4.2.7 to 4.3.0.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.3.0/packages/twitch)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-21 09:45:54 -05:00
Jef LeCompte d7921168cb chore: remove dependencies label 2020-11-19 18:28:51 -05:00
dependabot[bot] 9745190ee4 chore(deps-dev): bump webpack from 5.4.0 to 5.6.0 (#846)
Bumps [webpack](https://github.com/webpack/webpack) from 5.4.0 to 5.6.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.4.0...v5.6.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-19 18:08:50 -05:00
Jef LeCompte b5435643da chore: add quotes to .env-example
Based off #824

Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-19 18:07:16 -05:00
Jef LeCompte af631c86f1 revert: correcting newline split for multiple user agents
Ref: f16a9fb331, #824
2020-11-19 18:05:50 -05:00
dependabot[bot] 5eb36a6cb7 chore(deps): bump node-pagerduty from 1.3.5 to 1.3.6 (#845)
Bumps [node-pagerduty](https://github.com/kmartin-215/node-pagerduty) from 1.3.5 to 1.3.6.
- [Release notes](https://github.com/kmartin-215/node-pagerduty/releases)
- [Commits](https://github.com/kmartin-215/node-pagerduty/compare/1.3.5...1.3.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-19 09:01:03 -05:00
xcaliber93 6f273305df feat(canadacomputers): add ryzen 5000 series (#842) 2020-11-19 09:00:46 -05:00
vmnt 6d292a11cd feat(newegg-ca): add big navi links (#843) 2020-11-19 08:59:37 -05:00
Rich Evans 89a762e2f5 feat(store): add amd rx 6000 series model (#832) 2020-11-18 20:14:27 -05:00
dependabot[bot] f9b617dd69 chore(deps): bump puppeteer from 5.4.1 to 5.5.0 (#819)
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 5.4.1 to 5.5.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/v5.4.1...v5.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-18 10:25:00 -05:00
dependabot[bot] 7fea7d58f0 chore(deps-dev): bump @types/node from 14.14.7 to 14.14.8 (#829)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.7 to 14.14.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-18 10:24:43 -05:00
joslynesser f16a9fb331 fix(config): correcting newline split for multiple user agents (#824) 2020-11-18 10:24:17 -05:00
VictorV 777c31b420 feat(notification): add product link to email and telegram (#816) 2020-11-18 10:23:31 -05:00
Matt Hayward 229daabb34 chore: add amd cpus to uk stores (#833) 2020-11-18 10:22:37 -05:00
Cristian d0ebffd056 feat(store): add 3070 models to pccomponentes & coolmod (#820) 2020-11-17 10:23:14 -05:00
Jef LeCompte 3feda151c5 docs: add cloud provider FAQ
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-16 11:28:53 -05:00
dependabot[bot] d41798ac23 chore(deps): bump dorny/paths-filter from v2.5.2 to v2.5.3 (#814)
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from v2.5.2 to v2.5.3.
- [Release notes](https://github.com/dorny/paths-filter/releases)
- [Changelog](https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dorny/paths-filter/compare/v2.5.2...d599443ba55e103985817f072734ef381431aeb4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-16 11:17:32 -05:00
James Hinton eb314afda5 feat(playstation): add outOfStock label (#812) 2020-11-16 11:12:35 -05:00
Jef LeCompte f377820894 chore: add question to issues template 2020-11-16 11:10:52 -05:00
Jef LeCompte 8933896c5c chore: remove duplicate chips
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-15 12:10:20 -05:00
Garret Picchioni 88a1303f73 chore(amazon): add zen 3 to us, es, and nl (#743) 2020-11-15 12:09:29 -05:00
Michael Vendivel 167713bb14 fix(amazon): add 5800x and 5600x (#802) 2020-11-15 12:05:14 -05:00
James Hinton 7c28c7f72b feat(store): add PlayStation store (#806) 2020-11-15 11:46:32 -05:00
Cristian b21b2440f7 chore(pccomponentes): add ryzen cpus (#756) 2020-11-14 22:05:06 -05:00
Michael Vendivel 63d550ca63 fix(bestbuy-ca): use proper selector (#801) 2020-11-14 22:02:49 -05:00
dependabot[bot] 8e1744c6b1 chore(deps): bump mqtt from 4.2.4 to 4.2.5 (#786)
Bumps [mqtt](https://github.com/mqttjs/MQTT.js) from 4.2.4 to 4.2.5.
- [Release notes](https://github.com/mqttjs/MQTT.js/releases)
- [Commits](https://github.com/mqttjs/MQTT.js/compare/v4.2.4...v4.2.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-13 11:17:47 -05:00
dependabot[bot] 0ed826fb5d chore(deps): bump nodemailer from 6.4.15 to 6.4.16 (#785)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.4.15 to 6.4.16.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.4.15...v6.4.16)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-13 11:14:46 -05:00
dependabot[bot] d47a3e064e chore(deps-dev): bump @types/async from 3.2.3 to 3.2.4 (#787)
Bumps [@types/async](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/async) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/async)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-13 11:14:36 -05:00
Clinton Judy 501ea34a54 feat(asus): add backoff codes (#790) 2020-11-13 11:11:48 -05:00
Clinton Judy b60ad12cf2 chore(newegg): add 3080 vision oc (#791) 2020-11-13 11:10:31 -05:00
rodrigorodrigo ef2036b75d docs: small typo on canadacomputers (#779) 2020-11-12 22:44:59 -05:00
Jef LeCompte c38bebb49d feat(store): add topachat (#776)
Co-authored-by: Oguzhan YAGCI <oyagci@student.42.fr>
2020-11-12 08:50:31 -05:00
Zyde22 02d7c47c40 feat: add amazon-fr to stores. (#766) 2020-11-12 08:39:45 -05:00
Jef LeCompte efe0d64f06 revert: pipeline changes
Ref: 15e4520213
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-12 08:37:37 -05:00
rodrigorodrigo bd69e471f7 feat(store): support for canadacomputers (#772) 2020-11-12 08:24:15 -05:00
github-actions[bot] bdd74e5b16 chore: release 3.0.0 (#770)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-11-11 23:21:08 -05:00
Cristian 32702929a9 feat(coolmod): add zen 3 (#754) 2020-11-11 23:18:47 -05:00
Jef LeCompte b4de369ca8 docs: add checkout help
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-11 23:17:34 -05:00
Vincent ccb207abeb feat(discord): add cart link to embed (#762) 2020-11-11 23:15:10 -05:00
Jaden VanEckhout 841647c06c fix(walmart): ps5 digital url (#763)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-11 23:13:53 -05:00
HeitorLM 23d061b387 feat(store): support for kabum (amd and rtx 30 series) (#727)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-11 22:25:15 -05:00
Nathan Grebowiec a5249ecc7c feat: add option to disable auto add to cart (#759) 2020-11-11 20:56:45 -05:00
Jef LeCompte 0e730f4203 docs: update verbiage 2020-11-10 23:13:04 -05:00
gabriwong bc8c14c88d docs: add amazon error to faq (#760) 2020-11-10 23:11:34 -05:00
dependabot[bot] 5be33d045f chore(deps-dev): bump @types/puppeteer from 3.0.5 to 5.4.0 (#752)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-10 19:31:42 -05:00
Jef LeCompte d19dd5a404 refactor!: removed duplicated Model
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-10 17:50:43 -05:00
Jef LeCompte b1f1ea6ef0 docs: update README to reflect branches
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-10 17:19:39 -05:00
Jef LeCompte 15e4520213 chore: pipeline changes (#753) 2020-11-10 17:12:20 -05:00
Jef LeCompte 0904253cc6 refactor: add more types to Model, extract Brand
This is prep work for normalizing `Model`

Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-10 10:53:24 -05:00
Jef LeCompte 318e626e78 feat: fix metadata in logging, lint prettier, typed Models (#747) 2020-11-10 10:38:14 -05:00
dependabot[bot] 0bf9ba2e18 chore(deps-dev): bump @types/node from 14.14.6 to 14.14.7 (#741)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.6 to 14.14.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-10 09:38:04 -05:00
Ben Wu 9f28fe5803 feat(notification): support for multiple phone numbers (#738) 2020-11-10 09:21:54 -05:00
Michael Vendivel ab1fddf20c feat(target): add additional selector for 'ship it' (#737) 2020-11-10 09:00:06 -05:00
BaelfireNightshd ff79d9e70d docs: add zen3 filter to SHOW_ONLY_SERIES (#742) 2020-11-10 08:59:04 -05:00
dependabot[bot] 050fd9faf6 chore(deps): bump nodemailer from 6.4.14 to 6.4.15 (#726)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.4.14 to 6.4.15.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.4.14...v6.4.15)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-10 08:55:53 -05:00
James Hinton 0128718ba7 feat(store): add game store, add ps5 for uk stores (#736) 2020-11-10 08:55:27 -05:00
dependabot[bot] 037056156e chore(deps): bump dorny/paths-filter from v2.5.1 to v2.5.2 (#725)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-10 08:50:50 -05:00
dependabot[bot] d9692c7bbd chore(deps): bump GoogleCloudPlatform/release-please-action from v2.5.7 to v2.6.0 (#724)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-10 08:50:25 -05:00
Garret Picchioni 0754feccae fix(docker): copy web directory (#745) 2020-11-10 08:48:55 -05:00
SolidPIPe e8fd2f7c5b docs: add amd models (#746) 2020-11-10 08:48:09 -05:00
Vinh Nguyen 314f533f0b feat(store): add xbox series x and s (#732)
Co-authored-by: VictorV <velasquez.victor@gmail.com>
Co-authored-by: vinhnguyen <vinh.nguyen@venmo.com>
2020-11-10 08:47:15 -05:00
hiivin 4e086e9267 feat(galaxus): add zen 3 (#729) 2020-11-09 11:31:51 -05:00
Vincent dde9837829 feat(amazon): add more 3070s (#719)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-09 01:20:01 -05:00
serg06 25700567c5 feat(amazon-ca): add ps5 (#713)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-09 01:19:36 -05:00
Omelette Du Fromage c02241c752 feat: memoryexpress website support (#717)
Adding MemoryExpress website in Canada. Only track the online store
stock for now. Might add the stores stock later like microcenter.
Only track Ryzen 5000-series for now because RTX 3000-series is only
available in store backorder.

Co-authored-by: Omelette Du Fromage <lavrenti.rogoff@gmail.com>
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-09 01:18:49 -05:00
hiivin 38937f6880 feat(store): add arlt and amd-de (#721)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-09 01:16:58 -05:00
Jörg Battermann 0362bf8081 feat(mindfactory): add ryzen 5900x, 5950x (#720) 2020-11-09 01:14:16 -05:00
Jef LeCompte 815822f6f8 chore: add CODE_OF_CONDUCT.md 2020-11-07 13:01:47 -05:00
dependabot[bot] f9a6fd025a chore(deps): bump twilio from 3.50.0 to 3.51.0 (#699)
Bumps [twilio](https://github.com/twilio/twilio-node) from 3.50.0 to 3.51.0.
- [Release notes](https://github.com/twilio/twilio-node/releases)
- [Changelog](https://github.com/twilio/twilio-node/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-node/compare/3.50.0...3.51.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-07 12:56:32 -05:00
hiivin 2291b8eff5 feat(store): add ps5 to german stores (#715) 2020-11-07 12:55:42 -05:00
Andrew O'Brien 8a459056c5 feat(store): Adds AM3 to microcenter (#707)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-07 12:18:48 -05:00
Jef LeCompte 9320918335 docs: update docker notes
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-07 09:29:49 -05:00
Jef LeCompte 0d14500d5d feat: add production scripts and better Dockerfile
Closes: #710
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-07 09:26:17 -05:00
Michael Vendivel 42ef7cfdce feat(ps5): add console and digital edition (#709) 2020-11-06 16:42:05 -05:00
Nathan Grebowiec 0a680e977b feat: bring back ascii banner, but make it configurable (#703) 2020-11-06 16:39:34 -05:00
Jef LeCompte 19fd6895e7 docs: fix broken table
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-06 11:26:16 -05:00
Jef LeCompte e3fcc70bb3 docs: add philips hue video demo
Refs: https://github.com/jef/streetmerchant/pull/681#issuecomment-722716100
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-06 11:24:46 -05:00
hiivin 71d5cb4261 feat(store): add zen 3 to german stores (#702)
Co-authored-by: Florian Dahlmann <florian.dahlmann@gmx.de>
2020-11-06 09:39:37 -05:00
Jef LeCompte deb17d109f chore(philips-hue): remove unset warnings
Fixes #697

Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-06 01:58:52 -05:00
serg06 760ddf5d85 feat(store): add zen 3 to more stores (#698) 2020-11-05 23:27:01 -05:00
Jef LeCompte 5db83484f3 fix: environment variables to match ryzen cpus
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 23:23:35 -05:00
Jef LeCompte 85208c4452 refactor: simplify max price
Ref: https://github.com/jef/streetmerchant/pull/696#issuecomment-722784373
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 23:19:37 -05:00
Nathan Grebowiec df3b10b9a5 feat(amd): add env vars and series filtering (#696)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 22:18:09 -05:00
Matthew c8a9b0ba3e feat(notification): add philips hue (#681)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
Co-authored-by: Nathan Banks <nathantb3@gmail.com>
2020-11-05 18:23:27 -05:00
Jef LeCompte 2955ea70ab fix: revert to 14.15.0 until 15 is stable for tsc
Fixes #691

Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 18:04:48 -05:00
Jef LeCompte 7ec2894147 chore: bump node version
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 17:13:39 -05:00
Jef LeCompte 6924f362ba docs: update gif, change location
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 16:30:14 -05:00
Nathan Grebowiec 31a3d8f7e0 feat(amd): add 5950 config (#685) 2020-11-05 16:16:45 -05:00
Jef LeCompte a293f5e747 docs: update gif (#689)
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 16:13:09 -05:00
Jef LeCompte 2d3ea40a59 docs: update banner and readme
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 16:05:50 -05:00
github-actions[bot] 6861b3d052 chore: release 2.0.0 (#688)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-11-05 15:44:53 -05:00
Jef LeCompte 3f9b3c6017 chore!: update naming to streetmerchant
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 15:39:39 -05:00
Jef LeCompte 30720d3ca6 docs: fix alignment
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 15:28:02 -05:00
Jef LeCompte 0c550312bb chore: fix media (#687) 2020-11-05 15:23:38 -05:00
Jef LeCompte 30eb6a60cd docs: add logo
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-05 15:16:14 -05:00
dependabot[bot] 2737574b03 chore(deps-dev): bump webpack from 5.3.2 to 5.4.0 (#682)
Bumps [webpack](https://github.com/webpack/webpack) from 5.3.2 to 5.4.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.3.2...v5.4.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-04 15:35:02 -05:00
ElegyD d3c1a0233e chore(notebooksbilliger): add more FE links (#672)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-04 15:31:05 -05:00
Mark Dietzer 6ced13e993 fix(filterBrandsSeriesModels): always loop all stores (#680) 2020-11-03 19:42:17 -05:00
Jef LeCompte ec7be28f2e docs: update discord group tag
Resolves #679

Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-11-03 19:30:49 -05:00
Jacob Williams 018784e653 feat(asus): realtime api (#675) 2020-11-03 17:29:06 -05:00
Karlo Delalic 3c5407f5cf feat(newegg-ca): realtime api (#674) 2020-11-03 17:26:57 -05:00
116 changed files with 8680 additions and 16795 deletions
+1 -1
View File
@@ -7,6 +7,6 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.{yml, json.md}]
[*.{yml, json, md}]
indent_style = space
indent_size = 2
+89 -70
View File
@@ -1,73 +1,92 @@
# ** All configuration variables are optional **
# Read https://github.com/jef/nvidia-snatcher#customization for help on customizing this file
# Read https://github.com/jef/streetmerchant#customization for help on customizing this file
#############################################################################################
BROWSER_TRUSTED=
COUNTRY=
DESKTOP_NOTIFICATIONS=
DISCORD_NOTIFY_GROUP=
DISCORD_WEB_HOOK=
EMAIL_PASSWORD=
EMAIL_TO=
EMAIL_USERNAME=
HEADLESS=
IN_STOCK_WAIT_TIME=
LOG_LEVEL=
LOW_BANDWIDTH=
MAX_PRICE_SERIES_3070=
MAX_PRICE_SERIES_3080=
MAX_PRICE_SERIES_3090=
MICROCENTER_LOCATION=
MQTT_BROKER_ADDRESS=
MQTT_BROKER_PORT=
MQTT_CLIENT_ID=
MQTT_PASSWORD=
MQTT_QOS=
MQTT_TOPIC=
MQTT_USERNAME=
NVIDIA_ADD_TO_CART_ATTEMPTS=
NVIDIA_SESSION_TTL=
OPEN_BROWSER=
PAGE_BACKOFF_MIN=
PAGE_BACKOFF_MAX=
PAGE_SLEEP_MIN=
PAGE_SLEEP_MAX=
PAGE_TIMEOUT=
PAGERDUTY_INTEGRATION_KEY=
PAGERDUTY_SEVERITY=
PHONE_CARRIER=
PHONE_NUMBER=
PLAY_SOUND=
PROXY_ADDRESS=
PROXY_PORT=
PUSHBULLET=
PUSHOVER_TOKEN=
PUSHOVER_USER=
PUSHOVER_PRIORITY=
SCREENSHOT=
SHOW_ONLY_BRANDS=
SHOW_ONLY_MODELS=
SHOW_ONLY_SERIES=
SLACK_CHANNEL=
SLACK_TOKEN=
SMTP_ADDRESS=
SMTP_PORT=
STORES=
TELEGRAM_ACCESS_TOKEN=
TELEGRAM_CHAT_ID=
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_FROM_NUMBER=
TWILIO_TO_NUMBER=
TWITCH_ACCESS_TOKEN=
TWITCH_CHANNEL=
TWITCH_CLIENT_ID=
TWITCH_CLIENT_SECRET=
TWITCH_REFRESH_TOKEN=
TWITTER_ACCESS_TOKEN_KEY=
TWITTER_ACCESS_TOKEN_SECRET=
TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET=
TWITTER_TWEET_TAGS=
USER_AGENT=
WEB_PORT=
ASCII_BANNER=""
ASCII_COLOR=""
AUTO_ADD_TO_CART=""
BROWSER_TRUSTED=""
COUNTRY=""
DESKTOP_NOTIFICATIONS=""
DISCORD_NOTIFY_GROUP=""
DISCORD_WEB_HOOK=""
EMAIL_PASSWORD=""
EMAIL_TO=""
EMAIL_USERNAME=""
HEADLESS=""
IN_STOCK_WAIT_TIME=""
LOG_LEVEL=""
LOW_BANDWIDTH=""
MAX_PRICE_SERIES_3070=""
MAX_PRICE_SERIES_3080=""
MAX_PRICE_SERIES_3090=""
MAX_PRICE_SERIES_RX6800=""
MAX_PRICE_SERIES_RX6800XT=""
MAX_PRICE_SERIES_RX6900XT=""
MAX_PRICE_SERIES_RYZEN5600=""
MAX_PRICE_SERIES_RYZEN5800=""
MAX_PRICE_SERIES_RYZEN5900=""
MAX_PRICE_SERIES_RYZEN5950=""
MICROCENTER_LOCATION=""
MQTT_BROKER_ADDRESS=""
MQTT_BROKER_PORT=""
MQTT_CLIENT_ID=""
MQTT_PASSWORD=""
MQTT_QOS=""
MQTT_TOPIC=""
MQTT_USERNAME=""
NVIDIA_ADD_TO_CART_ATTEMPTS=""
NVIDIA_SESSION_TTL=""
OPEN_BROWSER=""
PAGE_BACKOFF_MIN=""
PAGE_BACKOFF_MAX=""
PAGE_SLEEP_MIN=""
PAGE_SLEEP_MAX=""
PAGE_TIMEOUT=""
PAGERDUTY_INTEGRATION_KEY=""
PAGERDUTY_SEVERITY=""
PHILIPS_HUE_API_KEY=""
PHILIPS_HUE_CLOUD_ACCESS_TOKEN=""
PHILIPS_HUE_CLOUD_CLIENT_ID=""
PHILIPS_HUE_CLOUD_CLIENT_SECRET=""
PHILIPS_HUE_CLOUD_REFRESH_TOKEN=""
PHILIPS_HUE_LAN_BRIDGE_IP=""
PHILIPS_HUE_LIGHT_COLOR=""
PHILIPS_HUE_LIGHT_IDS=""
PHILIPS_HUE_LIGHT_PATTERN=""
PHONE_CARRIER=""
PHONE_NUMBER=""
PLAY_SOUND=""
PROXY_ADDRESS=""
PROXY_PORT=""
PUSHBULLET=""
PUSHOVER_TOKEN=""
PUSHOVER_USER=""
PUSHOVER_PRIORITY=""
SCREENSHOT=""
SHOW_ONLY_BRANDS=""
SHOW_ONLY_MODELS=""
SHOW_ONLY_SERIES=""
SLACK_CHANNEL=""
SLACK_TOKEN=""
SMTP_ADDRESS=""
SMTP_PORT=""
STORES=""
TELEGRAM_ACCESS_TOKEN=""
TELEGRAM_CHAT_ID=""
TWILIO_ACCOUNT_SID=""
TWILIO_AUTH_TOKEN=""
TWILIO_FROM_NUMBER=""
TWILIO_TO_NUMBER=""
TWITCH_ACCESS_TOKEN=""
TWITCH_CHANNEL=""
TWITCH_CLIENT_ID=""
TWITCH_CLIENT_SECRET=""
TWITCH_REFRESH_TOKEN=""
TWITTER_ACCESS_TOKEN_KEY=""
TWITTER_ACCESS_TOKEN_SECRET=""
TWITTER_CONSUMER_KEY=""
TWITTER_CONSUMER_SECRET=""
TWITTER_TWEET_TAGS=""
USER_AGENT=""
WEB_PORT=""
+12
View File
@@ -0,0 +1,12 @@
---
name: 🤔 Question
about: Open to all questions
title: ''
labels: 'type: question'
assignees: jef
---
### Description
<!-- Describe the feature here. -->
-6
View File
@@ -4,17 +4,11 @@ updates:
directory: "/"
schedule:
interval: "daily"
labels:
- "dependencies"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
labels:
- "dependencies"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
labels:
- "dependencies"
+4 -15
View File
@@ -3,30 +3,19 @@ on:
push:
branches:
- main
paths-ignore:
- '**.md'
jobs:
cd:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: GoogleCloudPlatform/release-please-action@v2.5.7
- uses: GoogleCloudPlatform/release-please-action@v2.6.0
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
release-type: simple
package-name: nvidia-snatcher
package-name: streetmerchant
- name: login into github package registry
run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
- name: build nightly docker image
if: ${{ ! steps.release.outputs.release_created }}
run: |
docker build \
-t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \
-t "ghcr.io/${GITHUB_REPOSITORY}:nightly" .
- name: publish nightly
if: ${{ ! steps.release.outputs.release_created }}
run: docker push "ghcr.io/${GITHUB_REPOSITORY}"
- name: build latest docker image
if: ${{ steps.release.outputs.release_created }}
run: |
@@ -35,6 +24,6 @@ jobs:
-t "ghcr.io/${GITHUB_REPOSITORY}:latest" .
env:
TAG_NAME: ${{ steps.release.outputs.tag_name }}
- name: publish latest
- name: publish latest image
if: ${{ steps.release.outputs.release_created }}
run: docker push "ghcr.io/${GITHUB_REPOSITORY}"
+3 -5
View File
@@ -3,16 +3,14 @@ on:
pull_request:
branches:
- main
paths-ignore:
- '**.md'
jobs:
build-lint:
build-and-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2.1.2
with:
node-version: 14
node-version: 14.15.0
- uses: actions/cache@v2
with:
path: ~/.npm
@@ -29,7 +27,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: dorny/paths-filter@v2.5.1
- uses: dorny/paths-filter@v2.5.3
id: filter
with:
filters: |
+18
View File
@@ -0,0 +1,18 @@
name: nightly
on:
schedule:
- cron: '0 0 * * *'
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: login into github package registry
run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
- name: build nightly docker image
run: |
docker build \
-t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \
-t "ghcr.io/${GITHUB_REPOSITORY}:nightly" .
- name: publish nightly image
run: docker push "ghcr.io/${GITHUB_REPOSITORY}"
+1 -1
View File
@@ -1 +1 @@
15.0.1
14.15.0
+284 -179
View File
@@ -1,244 +1,349 @@
# Changelog
## [1.7.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.6.0...v1.7.0) (2020-11-03)
## [3.1.0](https://www.github.com/jef/streetmerchant/compare/v3.0.0...v3.1.0) (2020-11-22)
### 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))
* **asus:** add backoff codes ([#790](https://www.github.com/jef/streetmerchant/issues/790)) ([501ea34](https://www.github.com/jef/streetmerchant/commit/501ea34a54e877600050d5a99fd3b71ec799e96a))
* **canadacomputers:** add ryzen 5000 series ([#842](https://www.github.com/jef/streetmerchant/issues/842)) ([6f27330](https://www.github.com/jef/streetmerchant/commit/6f273305df69ac7b420b5446b4c6824866821a7e))
* **coolmod:** add `maxPrice` ([#862](https://www.github.com/jef/streetmerchant/issues/862)) ([4b689cb](https://www.github.com/jef/streetmerchant/commit/4b689cb94e99b83c8829c11d1bfe4cd6db9fbd7a))
* **newegg-ca:** add big navi links ([#843](https://www.github.com/jef/streetmerchant/issues/843)) ([6d292a1](https://www.github.com/jef/streetmerchant/commit/6d292a11cd53bd3893d4a0ff5d13eb2ce3319faa))
* **notification:** add product link to email and telegram ([#816](https://www.github.com/jef/streetmerchant/issues/816)) ([777c31b](https://www.github.com/jef/streetmerchant/commit/777c31b420a38cab860d98bc6bd8b7ba990c55e7))
* **playstation:** add `outOfStock` label ([#812](https://www.github.com/jef/streetmerchant/issues/812)) ([eb314af](https://www.github.com/jef/streetmerchant/commit/eb314afda557369dd27266429ac991c47ecc6375))
* **store:** add `PlayStation` store ([#806](https://www.github.com/jef/streetmerchant/issues/806)) ([7c28c7f](https://www.github.com/jef/streetmerchant/commit/7c28c7f72b171ce914aba770d88e8b1213c41233))
* **store:** add 3070 models to pccomponentes & coolmod ([#820](https://www.github.com/jef/streetmerchant/issues/820)) ([d0ebffd](https://www.github.com/jef/streetmerchant/commit/d0ebffd056dc166e3557ccf694379bf8c10148b5))
* **store:** add amd rx 6000 series model ([#832](https://www.github.com/jef/streetmerchant/issues/832)) ([89a762e](https://www.github.com/jef/streetmerchant/commit/89a762e2f5cd2ebd56c2586b1ebead4171b67153))
* **store:** add captcha check to saturn and mediamarkt ([#876](https://www.github.com/jef/streetmerchant/issues/876)) ([2d01cfd](https://www.github.com/jef/streetmerchant/commit/2d01cfddff557f112c6d53473dad25eb299f2fc0))
* **store:** add corsair sfx PSUs ([#881](https://www.github.com/jef/streetmerchant/issues/881)) ([e552c91](https://www.github.com/jef/streetmerchant/commit/e552c9102dd9801dcfc35652f2aaa0b1eea18ebb))
* **store:** add topachat ([#776](https://www.github.com/jef/streetmerchant/issues/776)) ([c38bebb](https://www.github.com/jef/streetmerchant/commit/c38bebb49dbe8243d0e3f1205150a33f9ce745aa))
* **store:** add vsgamers ([#767](https://www.github.com/jef/streetmerchant/issues/767)) ([53739e0](https://www.github.com/jef/streetmerchant/commit/53739e05abf50bbaddb8079087339c9f353096c8))
* add amazon-fr to stores. ([#766](https://www.github.com/jef/streetmerchant/issues/766)) ([02d7c47](https://www.github.com/jef/streetmerchant/commit/02d7c47c4093ad71dfab31f93a9b1390f4cad8a0))
* **store:** support for canadacomputers ([#772](https://www.github.com/jef/streetmerchant/issues/772)) ([bd69e47](https://www.github.com/jef/streetmerchant/commit/bd69e471f7b47e7faf1d9858992d4157145518aa))
### 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)
### Features
* add series to Discord webhook ([#618](https://www.github.com/jef/nvidia-snatcher/issues/618)) ([273d058](https://www.github.com/jef/nvidia-snatcher/commit/273d05841451ed896f1d505bcd24f2230a143d3a))
* **api:** add rudimentary web control panel ([#183](https://www.github.com/jef/nvidia-snatcher/issues/183)) ([373d1a9](https://www.github.com/jef/nvidia-snatcher/commit/373d1a973865b14b5753517aa70eabf85b136d94))
* **store:** add founders editions to notebooksbilliger.de ([#593](https://www.github.com/jef/nvidia-snatcher/issues/593)) ([2e5db7a](https://www.github.com/jef/nvidia-snatcher/commit/2e5db7af04e6ce79660477d8deb6636ec2e7845e))
* **store:** add max price containers to multiple stores ([#579](https://www.github.com/jef/nvidia-snatcher/issues/579)) ([f9c4c25](https://www.github.com/jef/nvidia-snatcher/commit/f9c4c258748ffd3735f1e7385bde15b6112a1ca7))
* **store:** add new cards to german web shops ([#597](https://www.github.com/jef/nvidia-snatcher/issues/597)) ([699de57](https://www.github.com/jef/nvidia-snatcher/commit/699de573f6579b59ba2c65cc2bf4dd6ccba3c863))
* **store:** Add PCComponentes and Amazon-ES Stores. ([#558](https://www.github.com/jef/nvidia-snatcher/issues/558)) ([062201f](https://www.github.com/jef/nvidia-snatcher/commit/062201f092c7a271202f27e7297b8eb9d7269c02))
* **store:** support for azerty ([#557](https://www.github.com/jef/nvidia-snatcher/issues/557)) ([58416e1](https://www.github.com/jef/nvidia-snatcher/commit/58416e1994006cc2e4055937c675e0f9191f6339))
* **store:** support for coolmod ([#605](https://www.github.com/jef/nvidia-snatcher/issues/605)) ([c1dda4f](https://www.github.com/jef/nvidia-snatcher/commit/c1dda4f9871988fad43d79f3bfe65f7c7860b9f7))
* add `meta` to logger ([#437](https://www.github.com/jef/nvidia-snatcher/issues/437)) ([ae6bc86](https://www.github.com/jef/nvidia-snatcher/commit/ae6bc86bcb75c154a2a68adda324f34f18281700))
* add alternate.nl support ([#552](https://www.github.com/jef/nvidia-snatcher/issues/552)) ([aca6523](https://www.github.com/jef/nvidia-snatcher/commit/aca65233339ddbbcc1dbd06f9011d6d44c6650cf))
* add asus-de store and asus 3080 tuf/oc to amazon-de ([#436](https://www.github.com/jef/nvidia-snatcher/issues/436)) ([b4d8733](https://www.github.com/jef/nvidia-snatcher/commit/b4d8733d1823e2fa5d3a1b80d2d4218bfa737cd7))
* add caseking and proshop-de store ([#521](https://www.github.com/jef/nvidia-snatcher/issues/521)) ([1aaa102](https://www.github.com/jef/nvidia-snatcher/commit/1aaa102c06281b60da593d04ced01f8b20a37a3b))
* add coolblue store ([#482](https://www.github.com/jef/nvidia-snatcher/issues/482)) ([5c61333](https://www.github.com/jef/nvidia-snatcher/commit/5c61333df00c0c30f04e4aced01a498c5816ad58))
* add german stores ([#462](https://www.github.com/jef/nvidia-snatcher/issues/462)) ([85a07dc](https://www.github.com/jef/nvidia-snatcher/commit/85a07dc0dc6a8dfe2aba1d4ea3e4cde6ec083086))
* add incognito mode ([#534](https://www.github.com/jef/nvidia-snatcher/issues/534)) ([2b6457e](https://www.github.com/jef/nvidia-snatcher/commit/2b6457e8409658b843204fa0aeafb00d48f9e53e))
* add link series to error message for better context ([#265](https://www.github.com/jef/nvidia-snatcher/issues/265)) ([332b4a8](https://www.github.com/jef/nvidia-snatcher/commit/332b4a8246320e458729c0b58c310d290df12530))
* Add PagerDuty Integration ([#565](https://www.github.com/jef/nvidia-snatcher/issues/565)) ([11ee0bf](https://www.github.com/jef/nvidia-snatcher/commit/11ee0bf1a3e2d0d550d2731f9de9e178c382ea1f))
* add proshop-dk ([#524](https://www.github.com/jef/nvidia-snatcher/issues/524)) ([dc2fcf5](https://www.github.com/jef/nvidia-snatcher/commit/dc2fcf5ab4dba8be459bd5aa6a41e3e097205d45))
* add support for multiple browser user agents ([#547](https://www.github.com/jef/nvidia-snatcher/issues/547)) ([10a81dc](https://www.github.com/jef/nvidia-snatcher/commit/10a81dcbd54557652537cb641cbbd727d39e34e5))
* add uk stores ([#455](https://www.github.com/jef/nvidia-snatcher/issues/455)) ([b9b6b55](https://www.github.com/jef/nvidia-snatcher/commit/b9b6b55c29d11f48b683816e5b8c1cab127ed5fd))
* allow filtering per model by a specific series ([#595](https://www.github.com/jef/nvidia-snatcher/issues/595)) ([a42418f](https://www.github.com/jef/nvidia-snatcher/commit/a42418f814dcd91354c136288d4c6a24e03a168d))
* optional per store min and max page sleep time ([#576](https://www.github.com/jef/nvidia-snatcher/issues/576)) ([503d76f](https://www.github.com/jef/nvidia-snatcher/commit/503d76f3c7d01368fc978af4ab02924d3d036ac0))
* **notification:** add `to` field for email ([#327](https://www.github.com/jef/nvidia-snatcher/issues/327)) ([8828dd1](https://www.github.com/jef/nvidia-snatcher/commit/8828dd15cd08959cd434bd256e8eac474dd17c49))
* **store:** add ttl for `scan` ([#555](https://www.github.com/jef/nvidia-snatcher/issues/555)) ([4847725](https://www.github.com/jef/nvidia-snatcher/commit/4847725d3a54d2f4dd0c349ff0ad80eb4bc4e9e3))
* add rog strix oc to amazon-de ([#471](https://www.github.com/jef/nvidia-snatcher/issues/471)) ([e5909c5](https://www.github.com/jef/nvidia-snatcher/commit/e5909c532da1c8b731e9835bffd8f31b76550d4d))
* add support for specifying smtp server ([#458](https://www.github.com/jef/nvidia-snatcher/issues/458)) ([160ae37](https://www.github.com/jef/nvidia-snatcher/commit/160ae37d7bee4f0323cb939566d586f1300aece6))
* allow multiple microcenter locations ([#487](https://www.github.com/jef/nvidia-snatcher/issues/487)) ([2b0eab6](https://www.github.com/jef/nvidia-snatcher/commit/2b0eab656d81314ce7d05064662ec138407550c3))
* clear cookies and cache ([#515](https://www.github.com/jef/nvidia-snatcher/issues/515)) ([1f89945](https://www.github.com/jef/nvidia-snatcher/commit/1f89945c5746befb2131381a358efdf8ac530e0c)), closes [#417](https://www.github.com/jef/nvidia-snatcher/issues/417)
* max price per series ([#451](https://www.github.com/jef/nvidia-snatcher/issues/451)) ([8adc07a](https://www.github.com/jef/nvidia-snatcher/commit/8adc07a03e411dd536bebfdc7270db4bbf8ddb34))
* mqtt alerts ([#538](https://www.github.com/jef/nvidia-snatcher/issues/538)) ([68ff5bf](https://www.github.com/jef/nvidia-snatcher/commit/68ff5bf836c63c8e14d02c06777e02e64a6a0f38))
* twitch chat notification, multiple telegram chat ids and german web shop overhaul ([#528](https://www.github.com/jef/nvidia-snatcher/issues/528)) ([675f13a](https://www.github.com/jef/nvidia-snatcher/commit/675f13abb892d1158c92c41e3d57049313a5e0b8))
* **docker:** add docker and publish images to ghcr ([#411](https://www.github.com/jef/nvidia-snatcher/issues/411)) ([c857985](https://www.github.com/jef/nvidia-snatcher/commit/c857985a6d3736287976caf5b173f19046306465))
* **notification:** add at&t prepaid carrier ([#425](https://www.github.com/jef/nvidia-snatcher/issues/425)) ([eb9d082](https://www.github.com/jef/nvidia-snatcher/commit/eb9d082d178a42e35789ba822cfae7b35c0413c1))
* **notification:** add pushover priority setting ([#186](https://www.github.com/jef/nvidia-snatcher/issues/186)) ([f277172](https://www.github.com/jef/nvidia-snatcher/commit/f2771721914a20619833df8ccb2ac44298687b4d))
* **notification:** add Twillio notification provider ([#344](https://www.github.com/jef/nvidia-snatcher/issues/344)) ([f2f8d81](https://www.github.com/jef/nvidia-snatcher/commit/f2f8d81498d1acfb9359f4a690962042ec20d166))
* **store:** add `pny` ([#295](https://www.github.com/jef/nvidia-snatcher/issues/295)) ([f6760d3](https://www.github.com/jef/nvidia-snatcher/commit/f6760d3c65d60eae9e4b1e0fdba34e814f446a4c))
* **store:** add 3090s to amazon-ca ([#274](https://www.github.com/jef/nvidia-snatcher/issues/274)) ([e992cf4](https://www.github.com/jef/nvidia-snatcher/commit/e992cf4db85f045fc8d03c9b93286fb72bad1061))
* **store:** add additional cards to all stores ([#286](https://www.github.com/jef/nvidia-snatcher/issues/286)) ([d25a643](https://www.github.com/jef/nvidia-snatcher/commit/d25a643425020fa3f7cd48972360ede17501afeb))
* **store:** add amazon cards and `cartUrl`s ([#284](https://www.github.com/jef/nvidia-snatcher/issues/284)) ([d69189f](https://www.github.com/jef/nvidia-snatcher/commit/d69189f12c893fb6d88b198d802ff8e36a69bc88))
* **store:** add asus strix oc to asus store ([#385](https://www.github.com/jef/nvidia-snatcher/issues/385)) ([e55398e](https://www.github.com/jef/nvidia-snatcher/commit/e55398e789d52def6e15d1e5e10f56cdf5ea5bea))
* **store:** add evga 3090 to newegg canada ([#396](https://www.github.com/jef/nvidia-snatcher/issues/396)) ([313d176](https://www.github.com/jef/nvidia-snatcher/commit/313d176848a25f183334db8926ac0ec445a2c481))
* **store:** add ftw3 ultra to microcenter ([#448](https://www.github.com/jef/nvidia-snatcher/issues/448)) ([5109227](https://www.github.com/jef/nvidia-snatcher/commit/5109227e8899f57b828b157309a76c397c872559))
* **store:** add gamestop ([#390](https://www.github.com/jef/nvidia-snatcher/issues/390)) ([7148451](https://www.github.com/jef/nvidia-snatcher/commit/7148451b66e97f4f7dcdcc86ce06ba8712211bd5))
* **store:** add models to bestbuy ([#421](https://www.github.com/jef/nvidia-snatcher/issues/421)) ([4085136](https://www.github.com/jef/nvidia-snatcher/commit/4085136269b00f6bc5c8414836de8310dfec4166))
* **store:** add rog-strix-3080 to newegg-ca ([#489](https://www.github.com/jef/nvidia-snatcher/issues/489)) ([207bc41](https://www.github.com/jef/nvidia-snatcher/commit/207bc411ed240cd9150e018b21e735ba08a4d134))
* add `norway` to `nvidia-api` ([#304](https://www.github.com/jef/nvidia-snatcher/issues/304)) ([eda6c85](https://www.github.com/jef/nvidia-snatcher/commit/eda6c85fc03a70c5933308e96c572a480bb6c8a0))
* configurable status code behaviours ([#340](https://www.github.com/jef/nvidia-snatcher/issues/340)) ([3b7487e](https://www.github.com/jef/nvidia-snatcher/commit/3b7487e97ac9d93344403f50153f2de6243b1f0d))
* enhanced lookup behaviour ([#270](https://www.github.com/jef/nvidia-snatcher/issues/270)) ([b868d1a](https://www.github.com/jef/nvidia-snatcher/commit/b868d1a4833a8ec5ac1c79481530d75cd0c4b01e))
* in stock wait time per link now ([c7a716f](https://www.github.com/jef/nvidia-snatcher/commit/c7a716f981976a76afe61a4d985bd6fe4343595b))
* low bandwidth mode ([#294](https://www.github.com/jef/nvidia-snatcher/issues/294)) ([0aa7ab5](https://www.github.com/jef/nvidia-snatcher/commit/0aa7ab596c907ce72c188eb4b1acdee088307437))
* max price filtering ([#383](https://www.github.com/jef/nvidia-snatcher/issues/383)) ([fd294d2](https://www.github.com/jef/nvidia-snatcher/commit/fd294d2baa06a1c0a68852497889a0412dea492e))
* **store:** adds aorus master 3080 to newegg ([#402](https://www.github.com/jef/nvidia-snatcher/issues/402)) ([fddc002](https://www.github.com/jef/nvidia-snatcher/commit/fddc0021d36e4d0a9dacccc546da8260684f0eeb))
* retry logic for nvidia session token and adding to cart ([#347](https://www.github.com/jef/nvidia-snatcher/issues/347)) ([1bac1b9](https://www.github.com/jef/nvidia-snatcher/commit/1bac1b928d401a819698848f3367edf54836b26f))
* support for proxy server ([#352](https://www.github.com/jef/nvidia-snatcher/issues/352)) ([fdcd787](https://www.github.com/jef/nvidia-snatcher/commit/fdcd787f91f26229db23e2291e8922b947007902))
* **store:** nvidia debug card for "product details" page ([#337](https://www.github.com/jef/nvidia-snatcher/issues/337)) ([5b8d774](https://www.github.com/jef/nvidia-snatcher/commit/5b8d774b7c7d31d6ba6fc43be3ea7b16a87d2e49))
### Bug Fixes
* `amazon.{nl,de}` test urls ([#345](https://www.github.com/jef/nvidia-snatcher/issues/345)) ([589fbbc](https://www.github.com/jef/nvidia-snatcher/commit/589fbbcd34393ceb2bd7c0a8ac391c54e14a21be))
* `envOrNumber` behavior ([#364](https://www.github.com/jef/nvidia-snatcher/issues/364)) ([7d8897c](https://www.github.com/jef/nvidia-snatcher/commit/7d8897cd9fb9ae0db796fd85da3f2b9d1a9f73af))
* `nvidia-api` ([#314](https://www.github.com/jef/nvidia-snatcher/issues/314)) ([8d8e5b5](https://www.github.com/jef/nvidia-snatcher/commit/8d8e5b587d2279a95d3e7837a99bea8c5990a477))
* add `amazon-nl`, captcha `amazon-de`, add ftw3 `newegg` ([#293](https://www.github.com/jef/nvidia-snatcher/issues/293)) ([a2983eb](https://www.github.com/jef/nvidia-snatcher/commit/a2983eb54c419ba3a56abf80d316ea136a05e0fa))
* add status code `429` to bandh `backOffStatusCodes` ([#404](https://www.github.com/jef/nvidia-snatcher/issues/404)) ([7a981e7](https://www.github.com/jef/nvidia-snatcher/commit/7a981e745673f2b12d48d7eed71fc34a6e4ba5b2))
* add support for stores label text to have uppercase letters ([#526](https://www.github.com/jef/nvidia-snatcher/issues/526)) ([5ea7cc4](https://www.github.com/jef/nvidia-snatcher/commit/5ea7cc4ca45c506d2b98d4b643b44ca4ede1d7a9))
* asus store links ([#573](https://www.github.com/jef/nvidia-snatcher/issues/573)) ([f6db348](https://www.github.com/jef/nvidia-snatcher/commit/f6db3489b8b8a737dfc425880703928d5bc8916d))
* bestbuy label container selector precision ([#491](https://www.github.com/jef/nvidia-snatcher/issues/491)) ([cbc3b0b](https://www.github.com/jef/nvidia-snatcher/commit/cbc3b0b025469e9882ba8267f18f909c08c6c931))
* corrected norway locales ([#356](https://www.github.com/jef/nvidia-snatcher/issues/356)) ([d2476dd](https://www.github.com/jef/nvidia-snatcher/commit/d2476ddb08606545b32b9676e2d299d57ec5cb6a))
* cyclical dependencies ([ed970fc](https://www.github.com/jef/nvidia-snatcher/commit/ed970fc397210eb6ff684c7e82c79eb685a5d0d9)), closes [#468](https://www.github.com/jef/nvidia-snatcher/issues/468)
* denver `microcenter` name ([#296](https://www.github.com/jef/nvidia-snatcher/issues/296)) ([349f55d](https://www.github.com/jef/nvidia-snatcher/commit/349f55d3603517b5741fce6ac42b29141816ea79))
* dutch stores components ([#513](https://www.github.com/jef/nvidia-snatcher/issues/513)) ([586029c](https://www.github.com/jef/nvidia-snatcher/commit/586029c92aa19bdddcc85b7a837bb7a16bb1d28d))
* gamestop false positives ([#395](https://www.github.com/jef/nvidia-snatcher/issues/395)) ([d3bb507](https://www.github.com/jef/nvidia-snatcher/commit/d3bb507edca112124115ed88fb03cf14440d95ef))
* in stock wait time ([#325](https://www.github.com/jef/nvidia-snatcher/issues/325)) ([07bd246](https://www.github.com/jef/nvidia-snatcher/commit/07bd246e876cd27df1b5019af5ee8613bb5368f0)), closes [#315](https://www.github.com/jef/nvidia-snatcher/issues/315)
* max price getter updated to match .env ([#516](https://www.github.com/jef/nvidia-snatcher/issues/516)) ([32f114b](https://www.github.com/jef/nvidia-snatcher/commit/32f114b23527ee247c84c081a2cd0264de3b4847)), closes [#514](https://www.github.com/jef/nvidia-snatcher/issues/514) [#510](https://www.github.com/jef/nvidia-snatcher/issues/510)
* page sleep ([#586](https://www.github.com/jef/nvidia-snatcher/issues/586)) ([a2af30b](https://www.github.com/jef/nvidia-snatcher/commit/a2af30b70334cdbbfa51140d5de23a2d6b8429c8)), closes [#594](https://www.github.com/jef/nvidia-snatcher/issues/594) [#576](https://www.github.com/jef/nvidia-snatcher/issues/576)
* remove 3090 drid for DK/FI regions ([#361](https://www.github.com/jef/nvidia-snatcher/issues/361)) ([f1d22d1](https://www.github.com/jef/nvidia-snatcher/commit/f1d22d1684c8e70f09acd9978e6ea802d7224c8b))
* trim strings from comma-separated values ([#472](https://www.github.com/jef/nvidia-snatcher/issues/472)) ([f7ed865](https://www.github.com/jef/nvidia-snatcher/commit/f7ed86506b4e76d5bc20787068be83a44ec485b5))
* typo in maxPrice for 3090 ([#496](https://www.github.com/jef/nvidia-snatcher/issues/496)) ([e073590](https://www.github.com/jef/nvidia-snatcher/commit/e0735903b7b4b0d542dbbd76b9a860b1eca24e96))
* update gigabyte model `vision oc` ([#550](https://www.github.com/jef/nvidia-snatcher/issues/550)) ([4fefe22](https://www.github.com/jef/nvidia-snatcher/commit/4fefe22a907094fa39af5b4f2e3f8f3fe6897115))
* update new additions with web panel and sleep operations ([#606](https://www.github.com/jef/nvidia-snatcher/issues/606)) ([61a23fe](https://www.github.com/jef/nvidia-snatcher/commit/61a23fe9782223dc067dbc8251c3b09adbca0a43))
* update pushbullet import to match package ([#637](https://www.github.com/jef/nvidia-snatcher/issues/637)) ([d7360f7](https://www.github.com/jef/nvidia-snatcher/commit/d7360f71ef1a076713246ad2832ca58e7163e492))
* **env:** default `LOG_LEVEL` ([9636572](https://www.github.com/jef/nvidia-snatcher/commit/9636572c7de36f7ac6800ba31ac60fcd7bd2fd03))
* **notification:** discord false triggers ([#346](https://www.github.com/jef/nvidia-snatcher/issues/346)) ([3b90bbb](https://www.github.com/jef/nvidia-snatcher/commit/3b90bbbe5d751003a39823e9113eaee8cbfcf1a2))
* **notification:** sms subject output ([#298](https://www.github.com/jef/nvidia-snatcher/issues/298)) ([03755d5](https://www.github.com/jef/nvidia-snatcher/commit/03755d5eb117ac14797e0180c74f50b401e50cb5))
* **notifications:** twilio client creation ([#349](https://www.github.com/jef/nvidia-snatcher/issues/349)) ([5414b24](https://www.github.com/jef/nvidia-snatcher/commit/5414b249a6f938615cfad02ca22c171a5f86e127))
* **store:** gamestop `label.inStock` ([9e7976d](https://www.github.com/jef/nvidia-snatcher/commit/9e7976df5778a953c4fb6ca7553773655c1f4127))
* **store:** pccomponents model normalization ([#563](https://www.github.com/jef/nvidia-snatcher/issues/563)) ([699e77d](https://www.github.com/jef/nvidia-snatcher/commit/699e77d960b17dcb50378975a1913b0badeabfcc))
* updating amazon test model card to an in stock product ([#492](https://www.github.com/jef/nvidia-snatcher/issues/492)) ([81daa7c](https://www.github.com/jef/nvidia-snatcher/commit/81daa7c5596ab23bd9e6aac29fa63ee09e136827))
* **config:** `MAX_PRICE` quotations ([#426](https://www.github.com/jef/nvidia-snatcher/issues/426)) ([b7e5941](https://www.github.com/jef/nvidia-snatcher/commit/b7e5941a9598a09afabbb79c5636b768345009a3))
* **store:** container names on `nvidia` ([#333](https://www.github.com/jef/nvidia-snatcher/issues/333)) ([772de90](https://www.github.com/jef/nvidia-snatcher/commit/772de900a1386e9635d139e152fe86366404ded4))
* **store:** update `inStock` and `maxPrice` for newegg, newegg-ca ([#433](https://www.github.com/jef/nvidia-snatcher/issues/433)) ([628cab1](https://www.github.com/jef/nvidia-snatcher/commit/628cab1b605e4363c8dd5ad43476292ecb12db74)), closes [#400](https://www.github.com/jef/nvidia-snatcher/issues/400)
* **amazon:** add 5800x and 5600x ([#802](https://www.github.com/jef/streetmerchant/issues/802)) ([167713b](https://www.github.com/jef/streetmerchant/commit/167713bb14080e5e1d2f77c7ee933918b6fd5cfc))
* **bestbuy-ca:** use proper selector ([#801](https://www.github.com/jef/streetmerchant/issues/801)) ([63d550c](https://www.github.com/jef/streetmerchant/commit/63d550ca63b9bfd534f37b7747a1fae057abedb4))
* **config:** correcting newline split for multiple user agents ([#824](https://www.github.com/jef/streetmerchant/issues/824)) ([f16a9fb](https://www.github.com/jef/streetmerchant/commit/f16a9fb331fd38590325f399bde369ffa17dbe10))
* **store:** generate links only for selected stores ([292e360](https://www.github.com/jef/streetmerchant/commit/292e3603fd527a4454639c9abb73bd80a8a95fae)), closes [#694](https://www.github.com/jef/streetmerchant/issues/694)
### Reverts
* reduce false-positive during ci/cd ([79b9bfe](https://www.github.com/jef/nvidia-snatcher/commit/79b9bfe9a83858117f7a58b4b8b1a1569d80c442))
* correcting newline split for multiple user agents ([af631c8](https://www.github.com/jef/streetmerchant/commit/af631c86f1a74d810cabf2d0de1b7bb31d350095)), closes [#824](https://www.github.com/jef/streetmerchant/issues/824)
* pipeline changes ([efe0d64](https://www.github.com/jef/streetmerchant/commit/efe0d64f060e812fd9846073a13837a3f2a27862))
## [1.5.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.4.0...v1.5.0) (2020-09-24)
## [3.0.0](https://www.github.com/jef/streetmerchant/compare/v2.0.0...v3.0.0) (2020-11-12)
### ⚠ BREAKING CHANGES
* removed duplicated `Model`
### Features
* filter models ([#261](https://www.github.com/jef/nvidia-snatcher/issues/261)) ([e1b34a9](https://www.github.com/jef/nvidia-snatcher/commit/e1b34a9ccfa45fa1a11da9af9074059b6084904b))
* **log:** colors for console logs ([#207](https://www.github.com/jef/nvidia-snatcher/issues/207)) ([0ad67fe](https://www.github.com/jef/nvidia-snatcher/commit/0ad67fe20453898ce0a6b5faff00062735411119))
* **notification:** add desktop notifications ([#140](https://www.github.com/jef/nvidia-snatcher/issues/140)) ([722eaf3](https://www.github.com/jef/nvidia-snatcher/commit/722eaf3cd680c4600b79f842c6c5acdb9e51ad71))
* **notification:** add pushbullet, add url with notifications ([#226](https://www.github.com/jef/nvidia-snatcher/issues/226)) ([74490ea](https://www.github.com/jef/nvidia-snatcher/commit/74490eae3ab30de7d7a708d5dd970e070f27f2ea))
* **notification:** twitter integration ([#224](https://www.github.com/jef/nvidia-snatcher/issues/224)) ([908ed35](https://www.github.com/jef/nvidia-snatcher/commit/908ed358826f9de530f5892ded1a54964a304d15))
* **store:** add `bannedSeller` label for stores ([#173](https://www.github.com/jef/nvidia-snatcher/issues/173)) ([71c6774](https://www.github.com/jef/nvidia-snatcher/commit/71c6774511f7ba13d34d2e40b69abf52d06e6225))
* **store:** add amazon-de ([#167](https://www.github.com/jef/nvidia-snatcher/issues/167)) ([8a70f14](https://www.github.com/jef/nvidia-snatcher/commit/8a70f147438584cc334710bc66220d05eb32fcbd))
* **store:** add bestbuy.ca ([#229](https://www.github.com/jef/nvidia-snatcher/issues/229)) ([22fd22f](https://www.github.com/jef/nvidia-snatcher/commit/22fd22fe743d3e286eae3430aecd6e7a0a5de8c0))
* **store:** add evga eu ([#172](https://www.github.com/jef/nvidia-snatcher/issues/172)) ([605bdd7](https://www.github.com/jef/nvidia-snatcher/commit/605bdd7ca73c585734f6c5df1a86f4fbfbff9163))
* **store:** add evga model ([#220](https://www.github.com/jef/nvidia-snatcher/issues/220)) ([190388c](https://www.github.com/jef/nvidia-snatcher/commit/190388cfe4a5e3f19abccd0ff786f654b9a04d2f))
* **store:** add microcenter store location config ([#215](https://www.github.com/jef/nvidia-snatcher/issues/215)) ([d6a27c9](https://www.github.com/jef/nvidia-snatcher/commit/d6a27c988c7b1011c7a10084d8283a60ed8aea5c))
* **stores:** add 3090 for bestbuy, newegg ([#249](https://www.github.com/jef/nvidia-snatcher/issues/249)) ([dd45dba](https://www.github.com/jef/nvidia-snatcher/commit/dd45dba82cb86f7e7664298dd202b93bbbd46d9f))
* **stores:** add 3090s for amazon-ca, bestbuy-ca, newegg-ca ([#258](https://www.github.com/jef/nvidia-snatcher/issues/258)) ([482fb58](https://www.github.com/jef/nvidia-snatcher/commit/482fb58cbfde6f95fb6f77de790d76e6aa2a5926))
* add chromium sandbox skipping ([#209](https://www.github.com/jef/nvidia-snatcher/issues/209)) ([2065680](https://www.github.com/jef/nvidia-snatcher/commit/20656805c1259637bb3a4db465a8d16d4780296a))
* deprecate nvidia (api), add 3080 add 3090 ([9f470f0](https://www.github.com/jef/nvidia-snatcher/commit/9f470f06e9e9fb605d340c0b0f9016d7288e8c0b))
* invert logic ([#141](https://www.github.com/jef/nvidia-snatcher/issues/141)) ([6608a79](https://www.github.com/jef/nvidia-snatcher/commit/6608a79769ff03543ab4ed2f2cead3410d7d7e99))
* multiple discord roles and webhooks, qol for envs ([#260](https://www.github.com/jef/nvidia-snatcher/issues/260)) ([8913879](https://www.github.com/jef/nvidia-snatcher/commit/8913879593252c9c83020b2e2c46bad7537b2a20))
* **store:** add newegg.ca ([#160](https://www.github.com/jef/nvidia-snatcher/issues/160)) ([76f5849](https://www.github.com/jef/nvidia-snatcher/commit/76f584988979a40269fd3641e996800a63b4b163)), closes [#159](https://www.github.com/jef/nvidia-snatcher/issues/159)
* **store:** add office depot ([#157](https://www.github.com/jef/nvidia-snatcher/issues/157)) ([0df2dcf](https://www.github.com/jef/nvidia-snatcher/commit/0df2dcfbd48235fba7126d96cd912634c5b4fdd9))
* **store:** add zotac store ([#214](https://www.github.com/jef/nvidia-snatcher/issues/214)) ([7875855](https://www.github.com/jef/nvidia-snatcher/commit/78758552b22e608dbdf3e76397f5b5efb893fef5))
* add delay on captcha to try and evade faster ([#119](https://www.github.com/jef/nvidia-snatcher/issues/119)) ([4f83b3b](https://www.github.com/jef/nvidia-snatcher/commit/4f83b3b233657841a4068a8ff9dd6c8dbff631c0))
* bestbuy bypass international splash, newegg add to cart ([#153](https://www.github.com/jef/nvidia-snatcher/issues/153)) ([133a54f](https://www.github.com/jef/nvidia-snatcher/commit/133a54fa170bb16dd26b0d72b1a02c56b3851b7f))
* card series filter, fix: newegg `oosLabels` ([#120](https://www.github.com/jef/nvidia-snatcher/issues/120)) ([252459d](https://www.github.com/jef/nvidia-snatcher/commit/252459d5d3de2b8cb25deee9ae318108e3dda2be))
* custom user agent ([#121](https://www.github.com/jef/nvidia-snatcher/issues/121)) ([d9be3fe](https://www.github.com/jef/nvidia-snatcher/commit/d9be3fe6183eaa9694b186c7a75e1f28bb31dace))
* include screenshot for emails + sms notifications ([#144](https://www.github.com/jef/nvidia-snatcher/issues/144)) ([7191e03](https://www.github.com/jef/nvidia-snatcher/commit/7191e03a80e577b59b2861289aa658cfa0ffc0fa))
* load puppeteer faster, run stores in parallel ([#83](https://www.github.com/jef/nvidia-snatcher/issues/83)) ([d1a5aa1](https://www.github.com/jef/nvidia-snatcher/commit/d1a5aa1f02ff0a8f293b93e3c078b5943908a95b))
* set country in config, login to nvidia when starting ([#162](https://www.github.com/jef/nvidia-snatcher/issues/162)) ([ebd6091](https://www.github.com/jef/nvidia-snatcher/commit/ebd6091a09fb5e52a66742767ae4b58323cd7447))
* temporarily pause requests if store has stock ([#147](https://www.github.com/jef/nvidia-snatcher/issues/147)) ([6413144](https://www.github.com/jef/nvidia-snatcher/commit/6413144c1cae89f33f852cc93870b407a784f2bb))
* update for complex add to cart, fix nvidia ([#108](https://www.github.com/jef/nvidia-snatcher/issues/108)) ([3ea146d](https://www.github.com/jef/nvidia-snatcher/commit/3ea146da14ea40d145ccfc05436beeb0a9fed8d9))
* **notification:** discord integration ([#82](https://www.github.com/jef/nvidia-snatcher/issues/82)) ([a3fc07d](https://www.github.com/jef/nvidia-snatcher/commit/a3fc07daf0a3f33f18e03d4cfc13d3477a9c4fa0))
* **scraping:** change lookup impl, add randomize sleep ([#110](https://www.github.com/jef/nvidia-snatcher/issues/110)) ([dc0f710](https://www.github.com/jef/nvidia-snatcher/commit/dc0f7106749b0afa0ff1c91cabb90b65be30e909))
* **store:** add adorama ([#104](https://www.github.com/jef/nvidia-snatcher/issues/104)) ([5b91065](https://www.github.com/jef/nvidia-snatcher/commit/5b910650430ad4806b22722efa9a013e72ea47e7))
* **store:** add asus ([#102](https://www.github.com/jef/nvidia-snatcher/issues/102)) ([a501cf7](https://www.github.com/jef/nvidia-snatcher/commit/a501cf703bb05f47af6240a4b16a3dc4dcf3baf5))
* **amazon:** add more 3070s ([#719](https://www.github.com/jef/streetmerchant/issues/719)) ([dde9837](https://www.github.com/jef/streetmerchant/commit/dde9837829b9d52e43800a2ac826b5dd00f5a744))
* **coolmod:** add zen 3 ([#754](https://www.github.com/jef/streetmerchant/issues/754)) ([3270292](https://www.github.com/jef/streetmerchant/commit/32702929a97236d7dc51aa8f669140bc6d89aa9a))
* **discord:** add cart link to embed ([#762](https://www.github.com/jef/streetmerchant/issues/762)) ([ccb207a](https://www.github.com/jef/streetmerchant/commit/ccb207abeb43b8e85f32c5c0a7a02aa33b5cdd7c))
* **store:** support for kabum (amd and rtx 30 series) ([#727](https://www.github.com/jef/streetmerchant/issues/727)) ([23d061b](https://www.github.com/jef/streetmerchant/commit/23d061b387b540803a81212fee937d4c8c9b17ad))
* add option to disable auto add to cart ([#759](https://www.github.com/jef/streetmerchant/issues/759)) ([a5249ec](https://www.github.com/jef/streetmerchant/commit/a5249ecc7c3acc29a1f9d5285bd77397263cb135))
* fix metadata in logging, lint prettier, typed `Model`s ([#747](https://www.github.com/jef/streetmerchant/issues/747)) ([318e626](https://www.github.com/jef/streetmerchant/commit/318e626e78c18524c4d8624176ccb659c6b6d17c))
* **amazon-ca:** add ps5 ([#713](https://www.github.com/jef/streetmerchant/issues/713)) ([2570056](https://www.github.com/jef/streetmerchant/commit/25700567c57a303a9376351daf015741193350a3))
* **amd:** add 5950 config ([#685](https://www.github.com/jef/streetmerchant/issues/685)) ([31a3d8f](https://www.github.com/jef/streetmerchant/commit/31a3d8f7e068a17c72e0c296e176b93625bf9063))
* **amd:** add env vars and series filtering ([#696](https://www.github.com/jef/streetmerchant/issues/696)) ([df3b10b](https://www.github.com/jef/streetmerchant/commit/df3b10b9a5c2467e00cacb3ab93f818aafc95f02))
* **galaxus:** add zen 3 ([#729](https://www.github.com/jef/streetmerchant/issues/729)) ([4e086e9](https://www.github.com/jef/streetmerchant/commit/4e086e92675df97fe7f94c4e6d51b73d63e7effb))
* **mindfactory:** add ryzen 5900x, 5950x ([#720](https://www.github.com/jef/streetmerchant/issues/720)) ([0362bf8](https://www.github.com/jef/streetmerchant/commit/0362bf808198d47e6aaa4a4838251f870d6dce4a))
* **notification:** add philips hue ([#681](https://www.github.com/jef/streetmerchant/issues/681)) ([c8a9b0b](https://www.github.com/jef/streetmerchant/commit/c8a9b0ba3ed581a9fef7ee2b459b1de84d976ff0))
* **notification:** support for multiple phone numbers ([#738](https://www.github.com/jef/streetmerchant/issues/738)) ([9f28fe5](https://www.github.com/jef/streetmerchant/commit/9f28fe5803fc71bf64d303cd1e7d20d0be8fecac))
* **ps5:** add console and digital edition ([#709](https://www.github.com/jef/streetmerchant/issues/709)) ([42ef7cf](https://www.github.com/jef/streetmerchant/commit/42ef7cfdced8ae3bc4192e245469798324bc42d3))
* **store:** add `arlt` and `amd-de` ([#721](https://www.github.com/jef/streetmerchant/issues/721)) ([38937f6](https://www.github.com/jef/streetmerchant/commit/38937f6880fcffb3a56ef17acd278f7c2f8d251c))
* **store:** add `game` store, add ps5 for uk stores ([#736](https://www.github.com/jef/streetmerchant/issues/736)) ([0128718](https://www.github.com/jef/streetmerchant/commit/0128718ba76b0c431d790cea7dd2183d10a02278))
* **store:** add ps5 to german stores ([#715](https://www.github.com/jef/streetmerchant/issues/715)) ([2291b8e](https://www.github.com/jef/streetmerchant/commit/2291b8eff5b23613d1233cc4c3ead83a42286d85))
* **store:** add xbox series x and s ([#732](https://www.github.com/jef/streetmerchant/issues/732)) ([314f533](https://www.github.com/jef/streetmerchant/commit/314f533f0bab0a466a276c5895d2f00bf86741f4))
* **store:** add zen 3 to german stores ([#702](https://www.github.com/jef/streetmerchant/issues/702)) ([71d5cb4](https://www.github.com/jef/streetmerchant/commit/71d5cb426179f5e587adeba1ec60f9a9233ec7b6))
* **store:** add zen 3 to more stores ([#698](https://www.github.com/jef/streetmerchant/issues/698)) ([760ddf5](https://www.github.com/jef/streetmerchant/commit/760ddf5d8523e28e294146643dda16e105176dff))
* **store:** Adds AM3 to microcenter ([#707](https://www.github.com/jef/streetmerchant/issues/707)) ([8a45905](https://www.github.com/jef/streetmerchant/commit/8a459056c5ba8a5a90de55cfbb08c4c89ccb19d3))
* **target:** add additional selector for 'ship it' ([#737](https://www.github.com/jef/streetmerchant/issues/737)) ([ab1fddf](https://www.github.com/jef/streetmerchant/commit/ab1fddf20c3a735b746befda0e21462701882645))
* add production scripts and better `Dockerfile` ([0d14500](https://www.github.com/jef/streetmerchant/commit/0d14500d5d8b93204bb99baf34dc9de745ae645d)), closes [#710](https://www.github.com/jef/streetmerchant/issues/710)
* bring back ascii banner, but make it configurable ([#703](https://www.github.com/jef/streetmerchant/issues/703)) ([0a680e9](https://www.github.com/jef/streetmerchant/commit/0a680e977b7904e7f62a8c1c0f3d533329b23fb0))
* memoryexpress website support ([#717](https://www.github.com/jef/streetmerchant/issues/717)) ([c02241c](https://www.github.com/jef/streetmerchant/commit/c02241c7528656c2c2fba9befc36628b4db7befb))
### Bug Fixes
* **store:** adorama captcha config ([#234](https://www.github.com/jef/nvidia-snatcher/issues/234)) ([9a53917](https://www.github.com/jef/nvidia-snatcher/commit/9a539175860f98de3b023009f751e59d94f0aaef))
* color logs and notification ([76b28a6](https://www.github.com/jef/nvidia-snatcher/commit/76b28a6dbdf5480c12a8c82b031c3f2880d17b11))
* **notification:** change discord ping visibility ([#168](https://www.github.com/jef/nvidia-snatcher/issues/168)) ([9675c5b](https://www.github.com/jef/nvidia-snatcher/commit/9675c5b8d61226db4652964e7f1e7399bb82d04e))
* **store:** bandh removed cards ([#201](https://www.github.com/jef/nvidia-snatcher/issues/201)) ([6409646](https://www.github.com/jef/nvidia-snatcher/commit/6409646d57bf2b2bb5a4bcf8239740abed8edafb))
* `rateLimitTimeout` not being defaulted ([#106](https://www.github.com/jef/nvidia-snatcher/issues/106)) ([28947be](https://www.github.com/jef/nvidia-snatcher/commit/28947be9bc8981d7a45a5d0e69c18d039fcd9ed3))
* check response for rate limiting ([#58](https://www.github.com/jef/nvidia-snatcher/issues/58)) ([#98](https://www.github.com/jef/nvidia-snatcher/issues/98)) ([b7d9462](https://www.github.com/jef/nvidia-snatcher/commit/b7d9462e794ef3961fb57c79ef8f66e77d25d20a))
* keep single `Store` from draining ([e819e46](https://www.github.com/jef/nvidia-snatcher/commit/e819e46116d4e0b067a59791094b5cfbd2d7cd45))
* memory leak due to adblocker ([#139](https://www.github.com/jef/nvidia-snatcher/issues/139)) ([0f6e570](https://www.github.com/jef/nvidia-snatcher/commit/0f6e570cc817dfc10bcddc5743a0faf3b1489270))
* **nvidia:** false positives ([#132](https://www.github.com/jef/nvidia-snatcher/issues/132)) ([a75d214](https://www.github.com/jef/nvidia-snatcher/commit/a75d214dd555d5e0388cb54b15be324cc25b6a15))
* newegg out-of-stock ([#124](https://www.github.com/jef/nvidia-snatcher/issues/124)) ([770a13a](https://www.github.com/jef/nvidia-snatcher/commit/770a13ac3559401b430547908d1df014582c1e37))
* newegg out-of-stock labels ([#134](https://www.github.com/jef/nvidia-snatcher/issues/134)) ([19c8f18](https://www.github.com/jef/nvidia-snatcher/commit/19c8f188c796258c469c2b4c6461fc5da3907a47))
* **notification:** wrong condition for sounds playing ([#91](https://www.github.com/jef/nvidia-snatcher/issues/91)) ([103d96d](https://www.github.com/jef/nvidia-snatcher/commit/103d96dc81d6fd097fcdbed5bdd7487d7d73bf6e))
* **store:** false positives for nvidia. ([#85](https://www.github.com/jef/nvidia-snatcher/issues/85)) ([c65fa04](https://www.github.com/jef/nvidia-snatcher/commit/c65fa04666775060532e28076a0b4af50f8dd30b))
* **docker:** copy web directory ([#745](https://www.github.com/jef/streetmerchant/issues/745)) ([0754fec](https://www.github.com/jef/streetmerchant/commit/0754feccaea2ce2dd37e7caeed3fa0b53c0cdcb3))
* **walmart:** ps5 digital url ([#763](https://www.github.com/jef/streetmerchant/issues/763)) ([841647c](https://www.github.com/jef/streetmerchant/commit/841647c06c488cf6b9d6d6af3c3eb6c8dbadab7e))
* environment variables to match ryzen cpus ([5db8348](https://www.github.com/jef/streetmerchant/commit/5db83484f301d48509205d9d0b5146c5d7114d26))
* revert to 14.15.0 until 15 is stable for `tsc` ([2955ea7](https://www.github.com/jef/streetmerchant/commit/2955ea70ab59c1b0dd82ec506c7a03952f81ea01)), closes [#691](https://www.github.com/jef/streetmerchant/issues/691)
## [1.4.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.3.0...v1.4.0) (2020-09-19)
### Code Refactoring
* removed duplicated `Model` ([d19dd5a](https://www.github.com/jef/streetmerchant/commit/d19dd5a404f2a585dd80f4d23d0e3af2d435ae85))
## [2.0.0](https://www.github.com/jef/streetmerchant/compare/v1.7.0...v2.0.0) (2020-11-05)
### ⚠ BREAKING CHANGES
* update naming to `streetmerchant`
### Features
* **asus:** realtime api ([#675](https://www.github.com/jef/streetmerchant/issues/675)) ([018784e](https://www.github.com/jef/streetmerchant/commit/018784e653831103465e8278db4929e04c52397c))
* **newegg-ca:** realtime api ([#674](https://www.github.com/jef/streetmerchant/issues/674)) ([3c5407f](https://www.github.com/jef/streetmerchant/commit/3c5407f5cfc635ae989101131188e999faa01d3c))
### Bug Fixes
* **filterBrandsSeriesModels:** always loop all stores ([#680](https://www.github.com/jef/streetmerchant/issues/680)) ([6ced13e](https://www.github.com/jef/streetmerchant/commit/6ced13e993f7b30bbdda5dc7615e895bac3e4f77))
### Miscellaneous Chores
* update naming to `streetmerchant` ([3f9b3c6](https://www.github.com/jef/streetmerchant/commit/3f9b3c6017431074d59550a6cd61c80a8897a9ae))
## [1.7.0](https://www.github.com/jef/streetmerchant/compare/v1.6.0...v1.7.0) (2020-11-03)
### Features
* **notification:** add mint mobile carrier ([#70](https://www.github.com/jef/nvidia-snatcher/issues/70)) ([8aba7ec](https://www.github.com/jef/nvidia-snatcher/commit/8aba7ecbdb0bfce06257b7b9066e8fccbd82e47e))
* **notification:** add pushover ([#55](https://www.github.com/jef/nvidia-snatcher/issues/55)) ([c85658b](https://www.github.com/jef/nvidia-snatcher/commit/c85658bf82fdf360e5e9d8345eaa846f0572e67c))
* **notification:** add telegram ([#71](https://www.github.com/jef/nvidia-snatcher/issues/71)) ([393d5f6](https://www.github.com/jef/nvidia-snatcher/commit/393d5f689887bf1d6f30a37eea163b2e6bbd4efa))
* **notification:** add telus sms ([6be74a1](https://www.github.com/jef/nvidia-snatcher/commit/6be74a19f3d3f999145d17ac8e91c59db2502071))
* **store:** add amazon.ca, fix timeout ([#75](https://www.github.com/jef/nvidia-snatcher/issues/75)) ([d4de1a4](https://www.github.com/jef/nvidia-snatcher/commit/d4de1a4638e903eb9518354ab6fb2f8c4befc347))
* webpage toggle, sound notification, fix evga links ([#52](https://www.github.com/jef/nvidia-snatcher/issues/52)) ([a217409](https://www.github.com/jef/nvidia-snatcher/commit/a21740942bbbbe967948062fa06cfc82c31eb755))
* add deprecation notices ([601742c](https://www.github.com/jef/streetmerchant/commit/601742cf2c0b5ccf0131e4c4e904ad4037d80a8d))
* newegg realtime api ([#664](https://www.github.com/jef/streetmerchant/issues/664)) ([5b3e95a](https://www.github.com/jef/streetmerchant/commit/5b3e95acdf2f427a6098f15b9fbe65e88354a678))
### Bug Fixes
* **banner:** add version to docker image ([#649](https://www.github.com/jef/streetmerchant/issues/649)) ([1d2a33b](https://www.github.com/jef/streetmerchant/commit/1d2a33b1d765fece9d1c9bf7d548818d1f0c8d92))
## [1.6.0](https://www.github.com/jef/streetmerchant/compare/v1.5.0...v1.6.0) (2020-10-29)
### Features
* add series to Discord webhook ([#618](https://www.github.com/jef/streetmerchant/issues/618)) ([273d058](https://www.github.com/jef/streetmerchant/commit/273d05841451ed896f1d505bcd24f2230a143d3a))
* **api:** add rudimentary web control panel ([#183](https://www.github.com/jef/streetmerchant/issues/183)) ([373d1a9](https://www.github.com/jef/streetmerchant/commit/373d1a973865b14b5753517aa70eabf85b136d94))
* **store:** add founders editions to notebooksbilliger.de ([#593](https://www.github.com/jef/streetmerchant/issues/593)) ([2e5db7a](https://www.github.com/jef/streetmerchant/commit/2e5db7af04e6ce79660477d8deb6636ec2e7845e))
* **store:** add max price containers to multiple stores ([#579](https://www.github.com/jef/streetmerchant/issues/579)) ([f9c4c25](https://www.github.com/jef/streetmerchant/commit/f9c4c258748ffd3735f1e7385bde15b6112a1ca7))
* **store:** add new cards to german web shops ([#597](https://www.github.com/jef/streetmerchant/issues/597)) ([699de57](https://www.github.com/jef/streetmerchant/commit/699de573f6579b59ba2c65cc2bf4dd6ccba3c863))
* **store:** Add PCComponentes and Amazon-ES Stores. ([#558](https://www.github.com/jef/streetmerchant/issues/558)) ([062201f](https://www.github.com/jef/streetmerchant/commit/062201f092c7a271202f27e7297b8eb9d7269c02))
* **store:** support for azerty ([#557](https://www.github.com/jef/streetmerchant/issues/557)) ([58416e1](https://www.github.com/jef/streetmerchant/commit/58416e1994006cc2e4055937c675e0f9191f6339))
* **store:** support for coolmod ([#605](https://www.github.com/jef/streetmerchant/issues/605)) ([c1dda4f](https://www.github.com/jef/streetmerchant/commit/c1dda4f9871988fad43d79f3bfe65f7c7860b9f7))
* add `meta` to logger ([#437](https://www.github.com/jef/streetmerchant/issues/437)) ([ae6bc86](https://www.github.com/jef/streetmerchant/commit/ae6bc86bcb75c154a2a68adda324f34f18281700))
* add alternate.nl support ([#552](https://www.github.com/jef/streetmerchant/issues/552)) ([aca6523](https://www.github.com/jef/streetmerchant/commit/aca65233339ddbbcc1dbd06f9011d6d44c6650cf))
* add asus-de store and asus 3080 tuf/oc to amazon-de ([#436](https://www.github.com/jef/streetmerchant/issues/436)) ([b4d8733](https://www.github.com/jef/streetmerchant/commit/b4d8733d1823e2fa5d3a1b80d2d4218bfa737cd7))
* add caseking and proshop-de store ([#521](https://www.github.com/jef/streetmerchant/issues/521)) ([1aaa102](https://www.github.com/jef/streetmerchant/commit/1aaa102c06281b60da593d04ced01f8b20a37a3b))
* add coolblue store ([#482](https://www.github.com/jef/streetmerchant/issues/482)) ([5c61333](https://www.github.com/jef/streetmerchant/commit/5c61333df00c0c30f04e4aced01a498c5816ad58))
* add german stores ([#462](https://www.github.com/jef/streetmerchant/issues/462)) ([85a07dc](https://www.github.com/jef/streetmerchant/commit/85a07dc0dc6a8dfe2aba1d4ea3e4cde6ec083086))
* add incognito mode ([#534](https://www.github.com/jef/streetmerchant/issues/534)) ([2b6457e](https://www.github.com/jef/streetmerchant/commit/2b6457e8409658b843204fa0aeafb00d48f9e53e))
* add link series to error message for better context ([#265](https://www.github.com/jef/streetmerchant/issues/265)) ([332b4a8](https://www.github.com/jef/streetmerchant/commit/332b4a8246320e458729c0b58c310d290df12530))
* Add PagerDuty Integration ([#565](https://www.github.com/jef/streetmerchant/issues/565)) ([11ee0bf](https://www.github.com/jef/streetmerchant/commit/11ee0bf1a3e2d0d550d2731f9de9e178c382ea1f))
* add proshop-dk ([#524](https://www.github.com/jef/streetmerchant/issues/524)) ([dc2fcf5](https://www.github.com/jef/streetmerchant/commit/dc2fcf5ab4dba8be459bd5aa6a41e3e097205d45))
* add support for multiple browser user agents ([#547](https://www.github.com/jef/streetmerchant/issues/547)) ([10a81dc](https://www.github.com/jef/streetmerchant/commit/10a81dcbd54557652537cb641cbbd727d39e34e5))
* add uk stores ([#455](https://www.github.com/jef/streetmerchant/issues/455)) ([b9b6b55](https://www.github.com/jef/streetmerchant/commit/b9b6b55c29d11f48b683816e5b8c1cab127ed5fd))
* allow filtering per model by a specific series ([#595](https://www.github.com/jef/streetmerchant/issues/595)) ([a42418f](https://www.github.com/jef/streetmerchant/commit/a42418f814dcd91354c136288d4c6a24e03a168d))
* optional per store min and max page sleep time ([#576](https://www.github.com/jef/streetmerchant/issues/576)) ([503d76f](https://www.github.com/jef/streetmerchant/commit/503d76f3c7d01368fc978af4ab02924d3d036ac0))
* **notification:** add `to` field for email ([#327](https://www.github.com/jef/streetmerchant/issues/327)) ([8828dd1](https://www.github.com/jef/streetmerchant/commit/8828dd15cd08959cd434bd256e8eac474dd17c49))
* **store:** add ttl for `scan` ([#555](https://www.github.com/jef/streetmerchant/issues/555)) ([4847725](https://www.github.com/jef/streetmerchant/commit/4847725d3a54d2f4dd0c349ff0ad80eb4bc4e9e3))
* add rog strix oc to amazon-de ([#471](https://www.github.com/jef/streetmerchant/issues/471)) ([e5909c5](https://www.github.com/jef/streetmerchant/commit/e5909c532da1c8b731e9835bffd8f31b76550d4d))
* add support for specifying smtp server ([#458](https://www.github.com/jef/streetmerchant/issues/458)) ([160ae37](https://www.github.com/jef/streetmerchant/commit/160ae37d7bee4f0323cb939566d586f1300aece6))
* allow multiple microcenter locations ([#487](https://www.github.com/jef/streetmerchant/issues/487)) ([2b0eab6](https://www.github.com/jef/streetmerchant/commit/2b0eab656d81314ce7d05064662ec138407550c3))
* clear cookies and cache ([#515](https://www.github.com/jef/streetmerchant/issues/515)) ([1f89945](https://www.github.com/jef/streetmerchant/commit/1f89945c5746befb2131381a358efdf8ac530e0c)), closes [#417](https://www.github.com/jef/streetmerchant/issues/417)
* max price per series ([#451](https://www.github.com/jef/streetmerchant/issues/451)) ([8adc07a](https://www.github.com/jef/streetmerchant/commit/8adc07a03e411dd536bebfdc7270db4bbf8ddb34))
* mqtt alerts ([#538](https://www.github.com/jef/streetmerchant/issues/538)) ([68ff5bf](https://www.github.com/jef/streetmerchant/commit/68ff5bf836c63c8e14d02c06777e02e64a6a0f38))
* twitch chat notification, multiple telegram chat ids and german web shop overhaul ([#528](https://www.github.com/jef/streetmerchant/issues/528)) ([675f13a](https://www.github.com/jef/streetmerchant/commit/675f13abb892d1158c92c41e3d57049313a5e0b8))
* **docker:** add docker and publish images to ghcr ([#411](https://www.github.com/jef/streetmerchant/issues/411)) ([c857985](https://www.github.com/jef/streetmerchant/commit/c857985a6d3736287976caf5b173f19046306465))
* **notification:** add at&t prepaid carrier ([#425](https://www.github.com/jef/streetmerchant/issues/425)) ([eb9d082](https://www.github.com/jef/streetmerchant/commit/eb9d082d178a42e35789ba822cfae7b35c0413c1))
* **notification:** add pushover priority setting ([#186](https://www.github.com/jef/streetmerchant/issues/186)) ([f277172](https://www.github.com/jef/streetmerchant/commit/f2771721914a20619833df8ccb2ac44298687b4d))
* **notification:** add Twillio notification provider ([#344](https://www.github.com/jef/streetmerchant/issues/344)) ([f2f8d81](https://www.github.com/jef/streetmerchant/commit/f2f8d81498d1acfb9359f4a690962042ec20d166))
* **store:** add `pny` ([#295](https://www.github.com/jef/streetmerchant/issues/295)) ([f6760d3](https://www.github.com/jef/streetmerchant/commit/f6760d3c65d60eae9e4b1e0fdba34e814f446a4c))
* **store:** add 3090s to amazon-ca ([#274](https://www.github.com/jef/streetmerchant/issues/274)) ([e992cf4](https://www.github.com/jef/streetmerchant/commit/e992cf4db85f045fc8d03c9b93286fb72bad1061))
* **store:** add additional cards to all stores ([#286](https://www.github.com/jef/streetmerchant/issues/286)) ([d25a643](https://www.github.com/jef/streetmerchant/commit/d25a643425020fa3f7cd48972360ede17501afeb))
* **store:** add amazon cards and `cartUrl`s ([#284](https://www.github.com/jef/streetmerchant/issues/284)) ([d69189f](https://www.github.com/jef/streetmerchant/commit/d69189f12c893fb6d88b198d802ff8e36a69bc88))
* **store:** add asus strix oc to asus store ([#385](https://www.github.com/jef/streetmerchant/issues/385)) ([e55398e](https://www.github.com/jef/streetmerchant/commit/e55398e789d52def6e15d1e5e10f56cdf5ea5bea))
* **store:** add evga 3090 to newegg canada ([#396](https://www.github.com/jef/streetmerchant/issues/396)) ([313d176](https://www.github.com/jef/streetmerchant/commit/313d176848a25f183334db8926ac0ec445a2c481))
* **store:** add ftw3 ultra to microcenter ([#448](https://www.github.com/jef/streetmerchant/issues/448)) ([5109227](https://www.github.com/jef/streetmerchant/commit/5109227e8899f57b828b157309a76c397c872559))
* **store:** add gamestop ([#390](https://www.github.com/jef/streetmerchant/issues/390)) ([7148451](https://www.github.com/jef/streetmerchant/commit/7148451b66e97f4f7dcdcc86ce06ba8712211bd5))
* **store:** add models to bestbuy ([#421](https://www.github.com/jef/streetmerchant/issues/421)) ([4085136](https://www.github.com/jef/streetmerchant/commit/4085136269b00f6bc5c8414836de8310dfec4166))
* **store:** add rog-strix-3080 to newegg-ca ([#489](https://www.github.com/jef/streetmerchant/issues/489)) ([207bc41](https://www.github.com/jef/streetmerchant/commit/207bc411ed240cd9150e018b21e735ba08a4d134))
* add `norway` to `nvidia-api` ([#304](https://www.github.com/jef/streetmerchant/issues/304)) ([eda6c85](https://www.github.com/jef/streetmerchant/commit/eda6c85fc03a70c5933308e96c572a480bb6c8a0))
* configurable status code behaviours ([#340](https://www.github.com/jef/streetmerchant/issues/340)) ([3b7487e](https://www.github.com/jef/streetmerchant/commit/3b7487e97ac9d93344403f50153f2de6243b1f0d))
* enhanced lookup behaviour ([#270](https://www.github.com/jef/streetmerchant/issues/270)) ([b868d1a](https://www.github.com/jef/streetmerchant/commit/b868d1a4833a8ec5ac1c79481530d75cd0c4b01e))
* in stock wait time per link now ([c7a716f](https://www.github.com/jef/streetmerchant/commit/c7a716f981976a76afe61a4d985bd6fe4343595b))
* low bandwidth mode ([#294](https://www.github.com/jef/streetmerchant/issues/294)) ([0aa7ab5](https://www.github.com/jef/streetmerchant/commit/0aa7ab596c907ce72c188eb4b1acdee088307437))
* max price filtering ([#383](https://www.github.com/jef/streetmerchant/issues/383)) ([fd294d2](https://www.github.com/jef/streetmerchant/commit/fd294d2baa06a1c0a68852497889a0412dea492e))
* **store:** adds aorus master 3080 to newegg ([#402](https://www.github.com/jef/streetmerchant/issues/402)) ([fddc002](https://www.github.com/jef/streetmerchant/commit/fddc0021d36e4d0a9dacccc546da8260684f0eeb))
* retry logic for nvidia session token and adding to cart ([#347](https://www.github.com/jef/streetmerchant/issues/347)) ([1bac1b9](https://www.github.com/jef/streetmerchant/commit/1bac1b928d401a819698848f3367edf54836b26f))
* support for proxy server ([#352](https://www.github.com/jef/streetmerchant/issues/352)) ([fdcd787](https://www.github.com/jef/streetmerchant/commit/fdcd787f91f26229db23e2291e8922b947007902))
* **store:** nvidia debug card for "product details" page ([#337](https://www.github.com/jef/streetmerchant/issues/337)) ([5b8d774](https://www.github.com/jef/streetmerchant/commit/5b8d774b7c7d31d6ba6fc43be3ea7b16a87d2e49))
### Bug Fixes
* `amazon.{nl,de}` test urls ([#345](https://www.github.com/jef/streetmerchant/issues/345)) ([589fbbc](https://www.github.com/jef/streetmerchant/commit/589fbbcd34393ceb2bd7c0a8ac391c54e14a21be))
* `envOrNumber` behavior ([#364](https://www.github.com/jef/streetmerchant/issues/364)) ([7d8897c](https://www.github.com/jef/streetmerchant/commit/7d8897cd9fb9ae0db796fd85da3f2b9d1a9f73af))
* `nvidia-api` ([#314](https://www.github.com/jef/streetmerchant/issues/314)) ([8d8e5b5](https://www.github.com/jef/streetmerchant/commit/8d8e5b587d2279a95d3e7837a99bea8c5990a477))
* add `amazon-nl`, captcha `amazon-de`, add ftw3 `newegg` ([#293](https://www.github.com/jef/streetmerchant/issues/293)) ([a2983eb](https://www.github.com/jef/streetmerchant/commit/a2983eb54c419ba3a56abf80d316ea136a05e0fa))
* add status code `429` to bandh `backOffStatusCodes` ([#404](https://www.github.com/jef/streetmerchant/issues/404)) ([7a981e7](https://www.github.com/jef/streetmerchant/commit/7a981e745673f2b12d48d7eed71fc34a6e4ba5b2))
* add support for stores label text to have uppercase letters ([#526](https://www.github.com/jef/streetmerchant/issues/526)) ([5ea7cc4](https://www.github.com/jef/streetmerchant/commit/5ea7cc4ca45c506d2b98d4b643b44ca4ede1d7a9))
* asus store links ([#573](https://www.github.com/jef/streetmerchant/issues/573)) ([f6db348](https://www.github.com/jef/streetmerchant/commit/f6db3489b8b8a737dfc425880703928d5bc8916d))
* bestbuy label container selector precision ([#491](https://www.github.com/jef/streetmerchant/issues/491)) ([cbc3b0b](https://www.github.com/jef/streetmerchant/commit/cbc3b0b025469e9882ba8267f18f909c08c6c931))
* corrected norway locales ([#356](https://www.github.com/jef/streetmerchant/issues/356)) ([d2476dd](https://www.github.com/jef/streetmerchant/commit/d2476ddb08606545b32b9676e2d299d57ec5cb6a))
* cyclical dependencies ([ed970fc](https://www.github.com/jef/streetmerchant/commit/ed970fc397210eb6ff684c7e82c79eb685a5d0d9)), closes [#468](https://www.github.com/jef/streetmerchant/issues/468)
* denver `microcenter` name ([#296](https://www.github.com/jef/streetmerchant/issues/296)) ([349f55d](https://www.github.com/jef/streetmerchant/commit/349f55d3603517b5741fce6ac42b29141816ea79))
* dutch stores components ([#513](https://www.github.com/jef/streetmerchant/issues/513)) ([586029c](https://www.github.com/jef/streetmerchant/commit/586029c92aa19bdddcc85b7a837bb7a16bb1d28d))
* gamestop false positives ([#395](https://www.github.com/jef/streetmerchant/issues/395)) ([d3bb507](https://www.github.com/jef/streetmerchant/commit/d3bb507edca112124115ed88fb03cf14440d95ef))
* in stock wait time ([#325](https://www.github.com/jef/streetmerchant/issues/325)) ([07bd246](https://www.github.com/jef/streetmerchant/commit/07bd246e876cd27df1b5019af5ee8613bb5368f0)), closes [#315](https://www.github.com/jef/streetmerchant/issues/315)
* max price getter updated to match .env ([#516](https://www.github.com/jef/streetmerchant/issues/516)) ([32f114b](https://www.github.com/jef/streetmerchant/commit/32f114b23527ee247c84c081a2cd0264de3b4847)), closes [#514](https://www.github.com/jef/streetmerchant/issues/514) [#510](https://www.github.com/jef/streetmerchant/issues/510)
* page sleep ([#586](https://www.github.com/jef/streetmerchant/issues/586)) ([a2af30b](https://www.github.com/jef/streetmerchant/commit/a2af30b70334cdbbfa51140d5de23a2d6b8429c8)), closes [#594](https://www.github.com/jef/streetmerchant/issues/594) [#576](https://www.github.com/jef/streetmerchant/issues/576)
* remove 3090 drid for DK/FI regions ([#361](https://www.github.com/jef/streetmerchant/issues/361)) ([f1d22d1](https://www.github.com/jef/streetmerchant/commit/f1d22d1684c8e70f09acd9978e6ea802d7224c8b))
* trim strings from comma-separated values ([#472](https://www.github.com/jef/streetmerchant/issues/472)) ([f7ed865](https://www.github.com/jef/streetmerchant/commit/f7ed86506b4e76d5bc20787068be83a44ec485b5))
* typo in maxPrice for 3090 ([#496](https://www.github.com/jef/streetmerchant/issues/496)) ([e073590](https://www.github.com/jef/streetmerchant/commit/e0735903b7b4b0d542dbbd76b9a860b1eca24e96))
* update gigabyte model `vision oc` ([#550](https://www.github.com/jef/streetmerchant/issues/550)) ([4fefe22](https://www.github.com/jef/streetmerchant/commit/4fefe22a907094fa39af5b4f2e3f8f3fe6897115))
* update new additions with web panel and sleep operations ([#606](https://www.github.com/jef/streetmerchant/issues/606)) ([61a23fe](https://www.github.com/jef/streetmerchant/commit/61a23fe9782223dc067dbc8251c3b09adbca0a43))
* update pushbullet import to match package ([#637](https://www.github.com/jef/streetmerchant/issues/637)) ([d7360f7](https://www.github.com/jef/streetmerchant/commit/d7360f71ef1a076713246ad2832ca58e7163e492))
* **env:** default `LOG_LEVEL` ([9636572](https://www.github.com/jef/streetmerchant/commit/9636572c7de36f7ac6800ba31ac60fcd7bd2fd03))
* **notification:** discord false triggers ([#346](https://www.github.com/jef/streetmerchant/issues/346)) ([3b90bbb](https://www.github.com/jef/streetmerchant/commit/3b90bbbe5d751003a39823e9113eaee8cbfcf1a2))
* **notification:** sms subject output ([#298](https://www.github.com/jef/streetmerchant/issues/298)) ([03755d5](https://www.github.com/jef/streetmerchant/commit/03755d5eb117ac14797e0180c74f50b401e50cb5))
* **notifications:** twilio client creation ([#349](https://www.github.com/jef/streetmerchant/issues/349)) ([5414b24](https://www.github.com/jef/streetmerchant/commit/5414b249a6f938615cfad02ca22c171a5f86e127))
* **store:** gamestop `label.inStock` ([9e7976d](https://www.github.com/jef/streetmerchant/commit/9e7976df5778a953c4fb6ca7553773655c1f4127))
* **store:** pccomponents model normalization ([#563](https://www.github.com/jef/streetmerchant/issues/563)) ([699e77d](https://www.github.com/jef/streetmerchant/commit/699e77d960b17dcb50378975a1913b0badeabfcc))
* updating amazon test model card to an in stock product ([#492](https://www.github.com/jef/streetmerchant/issues/492)) ([81daa7c](https://www.github.com/jef/streetmerchant/commit/81daa7c5596ab23bd9e6aac29fa63ee09e136827))
* **config:** `MAX_PRICE` quotations ([#426](https://www.github.com/jef/streetmerchant/issues/426)) ([b7e5941](https://www.github.com/jef/streetmerchant/commit/b7e5941a9598a09afabbb79c5636b768345009a3))
* **store:** container names on `nvidia` ([#333](https://www.github.com/jef/streetmerchant/issues/333)) ([772de90](https://www.github.com/jef/streetmerchant/commit/772de900a1386e9635d139e152fe86366404ded4))
* **store:** update `inStock` and `maxPrice` for newegg, newegg-ca ([#433](https://www.github.com/jef/streetmerchant/issues/433)) ([628cab1](https://www.github.com/jef/streetmerchant/commit/628cab1b605e4363c8dd5ad43476292ecb12db74)), closes [#400](https://www.github.com/jef/streetmerchant/issues/400)
### Reverts
* reduce false-positive during ci/cd ([79b9bfe](https://www.github.com/jef/streetmerchant/commit/79b9bfe9a83858117f7a58b4b8b1a1569d80c442))
## [1.5.0](https://www.github.com/jef/streetmerchant/compare/v1.4.0...v1.5.0) (2020-09-24)
### Features
* filter models ([#261](https://www.github.com/jef/streetmerchant/issues/261)) ([e1b34a9](https://www.github.com/jef/streetmerchant/commit/e1b34a9ccfa45fa1a11da9af9074059b6084904b))
* **log:** colors for console logs ([#207](https://www.github.com/jef/streetmerchant/issues/207)) ([0ad67fe](https://www.github.com/jef/streetmerchant/commit/0ad67fe20453898ce0a6b5faff00062735411119))
* **notification:** add desktop notifications ([#140](https://www.github.com/jef/streetmerchant/issues/140)) ([722eaf3](https://www.github.com/jef/streetmerchant/commit/722eaf3cd680c4600b79f842c6c5acdb9e51ad71))
* **notification:** add pushbullet, add url with notifications ([#226](https://www.github.com/jef/streetmerchant/issues/226)) ([74490ea](https://www.github.com/jef/streetmerchant/commit/74490eae3ab30de7d7a708d5dd970e070f27f2ea))
* **notification:** twitter integration ([#224](https://www.github.com/jef/streetmerchant/issues/224)) ([908ed35](https://www.github.com/jef/streetmerchant/commit/908ed358826f9de530f5892ded1a54964a304d15))
* **store:** add `bannedSeller` label for stores ([#173](https://www.github.com/jef/streetmerchant/issues/173)) ([71c6774](https://www.github.com/jef/streetmerchant/commit/71c6774511f7ba13d34d2e40b69abf52d06e6225))
* **store:** add amazon-de ([#167](https://www.github.com/jef/streetmerchant/issues/167)) ([8a70f14](https://www.github.com/jef/streetmerchant/commit/8a70f147438584cc334710bc66220d05eb32fcbd))
* **store:** add bestbuy.ca ([#229](https://www.github.com/jef/streetmerchant/issues/229)) ([22fd22f](https://www.github.com/jef/streetmerchant/commit/22fd22fe743d3e286eae3430aecd6e7a0a5de8c0))
* **store:** add evga eu ([#172](https://www.github.com/jef/streetmerchant/issues/172)) ([605bdd7](https://www.github.com/jef/streetmerchant/commit/605bdd7ca73c585734f6c5df1a86f4fbfbff9163))
* **store:** add evga model ([#220](https://www.github.com/jef/streetmerchant/issues/220)) ([190388c](https://www.github.com/jef/streetmerchant/commit/190388cfe4a5e3f19abccd0ff786f654b9a04d2f))
* **store:** add microcenter store location config ([#215](https://www.github.com/jef/streetmerchant/issues/215)) ([d6a27c9](https://www.github.com/jef/streetmerchant/commit/d6a27c988c7b1011c7a10084d8283a60ed8aea5c))
* **stores:** add 3090 for bestbuy, newegg ([#249](https://www.github.com/jef/streetmerchant/issues/249)) ([dd45dba](https://www.github.com/jef/streetmerchant/commit/dd45dba82cb86f7e7664298dd202b93bbbd46d9f))
* **stores:** add 3090s for amazon-ca, bestbuy-ca, newegg-ca ([#258](https://www.github.com/jef/streetmerchant/issues/258)) ([482fb58](https://www.github.com/jef/streetmerchant/commit/482fb58cbfde6f95fb6f77de790d76e6aa2a5926))
* add chromium sandbox skipping ([#209](https://www.github.com/jef/streetmerchant/issues/209)) ([2065680](https://www.github.com/jef/streetmerchant/commit/20656805c1259637bb3a4db465a8d16d4780296a))
* deprecate nvidia (api), add 3080 add 3090 ([9f470f0](https://www.github.com/jef/streetmerchant/commit/9f470f06e9e9fb605d340c0b0f9016d7288e8c0b))
* invert logic ([#141](https://www.github.com/jef/streetmerchant/issues/141)) ([6608a79](https://www.github.com/jef/streetmerchant/commit/6608a79769ff03543ab4ed2f2cead3410d7d7e99))
* multiple discord roles and webhooks, qol for envs ([#260](https://www.github.com/jef/streetmerchant/issues/260)) ([8913879](https://www.github.com/jef/streetmerchant/commit/8913879593252c9c83020b2e2c46bad7537b2a20))
* **store:** add newegg.ca ([#160](https://www.github.com/jef/streetmerchant/issues/160)) ([76f5849](https://www.github.com/jef/streetmerchant/commit/76f584988979a40269fd3641e996800a63b4b163)), closes [#159](https://www.github.com/jef/streetmerchant/issues/159)
* **store:** add office depot ([#157](https://www.github.com/jef/streetmerchant/issues/157)) ([0df2dcf](https://www.github.com/jef/streetmerchant/commit/0df2dcfbd48235fba7126d96cd912634c5b4fdd9))
* **store:** add zotac store ([#214](https://www.github.com/jef/streetmerchant/issues/214)) ([7875855](https://www.github.com/jef/streetmerchant/commit/78758552b22e608dbdf3e76397f5b5efb893fef5))
* add delay on captcha to try and evade faster ([#119](https://www.github.com/jef/streetmerchant/issues/119)) ([4f83b3b](https://www.github.com/jef/streetmerchant/commit/4f83b3b233657841a4068a8ff9dd6c8dbff631c0))
* bestbuy bypass international splash, newegg add to cart ([#153](https://www.github.com/jef/streetmerchant/issues/153)) ([133a54f](https://www.github.com/jef/streetmerchant/commit/133a54fa170bb16dd26b0d72b1a02c56b3851b7f))
* card series filter, fix: newegg `oosLabels` ([#120](https://www.github.com/jef/streetmerchant/issues/120)) ([252459d](https://www.github.com/jef/streetmerchant/commit/252459d5d3de2b8cb25deee9ae318108e3dda2be))
* custom user agent ([#121](https://www.github.com/jef/streetmerchant/issues/121)) ([d9be3fe](https://www.github.com/jef/streetmerchant/commit/d9be3fe6183eaa9694b186c7a75e1f28bb31dace))
* include screenshot for emails + sms notifications ([#144](https://www.github.com/jef/streetmerchant/issues/144)) ([7191e03](https://www.github.com/jef/streetmerchant/commit/7191e03a80e577b59b2861289aa658cfa0ffc0fa))
* load puppeteer faster, run stores in parallel ([#83](https://www.github.com/jef/streetmerchant/issues/83)) ([d1a5aa1](https://www.github.com/jef/streetmerchant/commit/d1a5aa1f02ff0a8f293b93e3c078b5943908a95b))
* set country in config, login to nvidia when starting ([#162](https://www.github.com/jef/streetmerchant/issues/162)) ([ebd6091](https://www.github.com/jef/streetmerchant/commit/ebd6091a09fb5e52a66742767ae4b58323cd7447))
* temporarily pause requests if store has stock ([#147](https://www.github.com/jef/streetmerchant/issues/147)) ([6413144](https://www.github.com/jef/streetmerchant/commit/6413144c1cae89f33f852cc93870b407a784f2bb))
* update for complex add to cart, fix nvidia ([#108](https://www.github.com/jef/streetmerchant/issues/108)) ([3ea146d](https://www.github.com/jef/streetmerchant/commit/3ea146da14ea40d145ccfc05436beeb0a9fed8d9))
* **notification:** discord integration ([#82](https://www.github.com/jef/streetmerchant/issues/82)) ([a3fc07d](https://www.github.com/jef/streetmerchant/commit/a3fc07daf0a3f33f18e03d4cfc13d3477a9c4fa0))
* **scraping:** change lookup impl, add randomize sleep ([#110](https://www.github.com/jef/streetmerchant/issues/110)) ([dc0f710](https://www.github.com/jef/streetmerchant/commit/dc0f7106749b0afa0ff1c91cabb90b65be30e909))
* **store:** add adorama ([#104](https://www.github.com/jef/streetmerchant/issues/104)) ([5b91065](https://www.github.com/jef/streetmerchant/commit/5b910650430ad4806b22722efa9a013e72ea47e7))
* **store:** add asus ([#102](https://www.github.com/jef/streetmerchant/issues/102)) ([a501cf7](https://www.github.com/jef/streetmerchant/commit/a501cf703bb05f47af6240a4b16a3dc4dcf3baf5))
### Bug Fixes
* **store:** adorama captcha config ([#234](https://www.github.com/jef/streetmerchant/issues/234)) ([9a53917](https://www.github.com/jef/streetmerchant/commit/9a539175860f98de3b023009f751e59d94f0aaef))
* color logs and notification ([76b28a6](https://www.github.com/jef/streetmerchant/commit/76b28a6dbdf5480c12a8c82b031c3f2880d17b11))
* **notification:** change discord ping visibility ([#168](https://www.github.com/jef/streetmerchant/issues/168)) ([9675c5b](https://www.github.com/jef/streetmerchant/commit/9675c5b8d61226db4652964e7f1e7399bb82d04e))
* **store:** bandh removed cards ([#201](https://www.github.com/jef/streetmerchant/issues/201)) ([6409646](https://www.github.com/jef/streetmerchant/commit/6409646d57bf2b2bb5a4bcf8239740abed8edafb))
* `rateLimitTimeout` not being defaulted ([#106](https://www.github.com/jef/streetmerchant/issues/106)) ([28947be](https://www.github.com/jef/streetmerchant/commit/28947be9bc8981d7a45a5d0e69c18d039fcd9ed3))
* check response for rate limiting ([#58](https://www.github.com/jef/streetmerchant/issues/58)) ([#98](https://www.github.com/jef/streetmerchant/issues/98)) ([b7d9462](https://www.github.com/jef/streetmerchant/commit/b7d9462e794ef3961fb57c79ef8f66e77d25d20a))
* keep single `Store` from draining ([e819e46](https://www.github.com/jef/streetmerchant/commit/e819e46116d4e0b067a59791094b5cfbd2d7cd45))
* memory leak due to adblocker ([#139](https://www.github.com/jef/streetmerchant/issues/139)) ([0f6e570](https://www.github.com/jef/streetmerchant/commit/0f6e570cc817dfc10bcddc5743a0faf3b1489270))
* **nvidia:** false positives ([#132](https://www.github.com/jef/streetmerchant/issues/132)) ([a75d214](https://www.github.com/jef/streetmerchant/commit/a75d214dd555d5e0388cb54b15be324cc25b6a15))
* newegg out-of-stock ([#124](https://www.github.com/jef/streetmerchant/issues/124)) ([770a13a](https://www.github.com/jef/streetmerchant/commit/770a13ac3559401b430547908d1df014582c1e37))
* newegg out-of-stock labels ([#134](https://www.github.com/jef/streetmerchant/issues/134)) ([19c8f18](https://www.github.com/jef/streetmerchant/commit/19c8f188c796258c469c2b4c6461fc5da3907a47))
* **notification:** wrong condition for sounds playing ([#91](https://www.github.com/jef/streetmerchant/issues/91)) ([103d96d](https://www.github.com/jef/streetmerchant/commit/103d96dc81d6fd097fcdbed5bdd7487d7d73bf6e))
* **store:** false positives for nvidia. ([#85](https://www.github.com/jef/streetmerchant/issues/85)) ([c65fa04](https://www.github.com/jef/streetmerchant/commit/c65fa04666775060532e28076a0b4af50f8dd30b))
## [1.4.0](https://www.github.com/jef/streetmerchant/compare/v1.3.0...v1.4.0) (2020-09-19)
### Features
* **notification:** add mint mobile carrier ([#70](https://www.github.com/jef/streetmerchant/issues/70)) ([8aba7ec](https://www.github.com/jef/streetmerchant/commit/8aba7ecbdb0bfce06257b7b9066e8fccbd82e47e))
* **notification:** add pushover ([#55](https://www.github.com/jef/streetmerchant/issues/55)) ([c85658b](https://www.github.com/jef/streetmerchant/commit/c85658bf82fdf360e5e9d8345eaa846f0572e67c))
* **notification:** add telegram ([#71](https://www.github.com/jef/streetmerchant/issues/71)) ([393d5f6](https://www.github.com/jef/streetmerchant/commit/393d5f689887bf1d6f30a37eea163b2e6bbd4efa))
* **notification:** add telus sms ([6be74a1](https://www.github.com/jef/streetmerchant/commit/6be74a19f3d3f999145d17ac8e91c59db2502071))
* **store:** add amazon.ca, fix timeout ([#75](https://www.github.com/jef/streetmerchant/issues/75)) ([d4de1a4](https://www.github.com/jef/streetmerchant/commit/d4de1a4638e903eb9518354ab6fb2f8c4befc347))
* webpage toggle, sound notification, fix evga links ([#52](https://www.github.com/jef/streetmerchant/issues/52)) ([a217409](https://www.github.com/jef/streetmerchant/commit/a21740942bbbbe967948062fa06cfc82c31eb755))
### Performance Improvements
* browser abstraction ([#68](https://www.github.com/jef/nvidia-snatcher/issues/68)) ([#81](https://www.github.com/jef/nvidia-snatcher/issues/81)) ([ebbdfe3](https://www.github.com/jef/nvidia-snatcher/commit/ebbdfe3f6378516112f4b6e004bbd6ccf13af685))
* browser abstraction ([#68](https://www.github.com/jef/streetmerchant/issues/68)) ([#81](https://www.github.com/jef/streetmerchant/issues/81)) ([ebbdfe3](https://www.github.com/jef/streetmerchant/commit/ebbdfe3f6378516112f4b6e004bbd6ccf13af685))
## [1.3.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.2.0...v1.3.0) (2020-09-19)
## [1.3.0](https://www.github.com/jef/streetmerchant/compare/v1.2.0...v1.3.0) (2020-09-19)
### Features
* **logging:** add timestamp ([#48](https://www.github.com/jef/nvidia-snatcher/issues/48)) ([6c3cd01](https://www.github.com/jef/nvidia-snatcher/commit/6c3cd016850d03a6c6a894cab24ba2d3781a9af1))
* **logging:** add timestamp ([#48](https://www.github.com/jef/streetmerchant/issues/48)) ([6c3cd01](https://www.github.com/jef/streetmerchant/commit/6c3cd016850d03a6c6a894cab24ba2d3781a9af1))
### Bug Fixes
* **store:** amazon captcha false-positives ([#54](https://www.github.com/jef/nvidia-snatcher/issues/54)) ([5c9e0b6](https://www.github.com/jef/nvidia-snatcher/commit/5c9e0b6d06bd7e1223a7587fec067c8e79c9cfd6))
* evga xc3 ultra link ([#56](https://www.github.com/jef/nvidia-snatcher/issues/56)) ([d907092](https://www.github.com/jef/nvidia-snatcher/commit/d907092b443b056605e09cb2ca3e94e6ca811d9e))
* screenshot size, add screenshot config setting ([#53](https://www.github.com/jef/nvidia-snatcher/issues/53)) ([7cfc7c7](https://www.github.com/jef/nvidia-snatcher/commit/7cfc7c74429c808fa14468cdd497eb9f9aeb922c))
* sms carrier config, add google carrier ([#44](https://www.github.com/jef/nvidia-snatcher/issues/44)) ([971fec2](https://www.github.com/jef/nvidia-snatcher/commit/971fec20e441e2b12a38d5c8d17d2d4cb5e64d6b))
* **store:** amazon captcha false-positives ([#54](https://www.github.com/jef/streetmerchant/issues/54)) ([5c9e0b6](https://www.github.com/jef/streetmerchant/commit/5c9e0b6d06bd7e1223a7587fec067c8e79c9cfd6))
* evga xc3 ultra link ([#56](https://www.github.com/jef/streetmerchant/issues/56)) ([d907092](https://www.github.com/jef/streetmerchant/commit/d907092b443b056605e09cb2ca3e94e6ca811d9e))
* screenshot size, add screenshot config setting ([#53](https://www.github.com/jef/streetmerchant/issues/53)) ([7cfc7c7](https://www.github.com/jef/streetmerchant/commit/7cfc7c74429c808fa14468cdd497eb9f9aeb922c))
* sms carrier config, add google carrier ([#44](https://www.github.com/jef/streetmerchant/issues/44)) ([971fec2](https://www.github.com/jef/streetmerchant/commit/971fec20e441e2b12a38d5c8d17d2d4cb5e64d6b))
## [1.2.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.1.0...v1.2.0) (2020-09-19)
## [1.2.0](https://www.github.com/jef/streetmerchant/compare/v1.1.0...v1.2.0) (2020-09-19)
### Features
* **ci:** add `npm run build` ([faad3e6](https://www.github.com/jef/nvidia-snatcher/commit/faad3e68efafaab135b77080b02af83429b6eca6))
* **store:** microcenter ([#39](https://www.github.com/jef/nvidia-snatcher/issues/39)) ([edf17e9](https://www.github.com/jef/nvidia-snatcher/commit/edf17e926f3d186e7630da2834d78de3e540a956))
* add Amazon links ([#26](https://www.github.com/jef/nvidia-snatcher/issues/26)) ([f0560ce](https://www.github.com/jef/nvidia-snatcher/commit/f0560ce72bfbfdd6360b85e23edaa875d58f228f))
* add email test, fix memory leak ([#24](https://www.github.com/jef/nvidia-snatcher/issues/24)) ([a2fb973](https://www.github.com/jef/nvidia-snatcher/commit/a2fb97333c6eb81250b24ccb6859e9356acded21))
* more Best Buy AIBs ([#41](https://www.github.com/jef/nvidia-snatcher/issues/41)) ([7d7bd18](https://www.github.com/jef/nvidia-snatcher/commit/7d7bd18b4dd656ec01ef2fb2d8519e2a7f34ef70))
* page timeout ([#22](https://www.github.com/jef/nvidia-snatcher/issues/22)) ([643045c](https://www.github.com/jef/nvidia-snatcher/commit/643045c7e0158fb6526bd09427b96cce7958bcea))
* slack integration ([#34](https://www.github.com/jef/nvidia-snatcher/issues/34)) ([c0a881a](https://www.github.com/jef/nvidia-snatcher/commit/c0a881a16ebb573bf35b7f29cb27e5b3c2e1fe78))
* sms notification for usa carriers ([#40](https://www.github.com/jef/nvidia-snatcher/issues/40)) ([5a3636b](https://www.github.com/jef/nvidia-snatcher/commit/5a3636bcb639bb33bc586af96264f5df2f3a8307))
* update to check if FE in-stock via Digital River ([#29](https://www.github.com/jef/nvidia-snatcher/issues/29)) ([00ede13](https://www.github.com/jef/nvidia-snatcher/commit/00ede13501082f530ea672a349816be1d31621a8))
* **ci:** add `npm run build` ([faad3e6](https://www.github.com/jef/streetmerchant/commit/faad3e68efafaab135b77080b02af83429b6eca6))
* **store:** microcenter ([#39](https://www.github.com/jef/streetmerchant/issues/39)) ([edf17e9](https://www.github.com/jef/streetmerchant/commit/edf17e926f3d186e7630da2834d78de3e540a956))
* add Amazon links ([#26](https://www.github.com/jef/streetmerchant/issues/26)) ([f0560ce](https://www.github.com/jef/streetmerchant/commit/f0560ce72bfbfdd6360b85e23edaa875d58f228f))
* add email test, fix memory leak ([#24](https://www.github.com/jef/streetmerchant/issues/24)) ([a2fb973](https://www.github.com/jef/streetmerchant/commit/a2fb97333c6eb81250b24ccb6859e9356acded21))
* more Best Buy AIBs ([#41](https://www.github.com/jef/streetmerchant/issues/41)) ([7d7bd18](https://www.github.com/jef/streetmerchant/commit/7d7bd18b4dd656ec01ef2fb2d8519e2a7f34ef70))
* page timeout ([#22](https://www.github.com/jef/streetmerchant/issues/22)) ([643045c](https://www.github.com/jef/streetmerchant/commit/643045c7e0158fb6526bd09427b96cce7958bcea))
* slack integration ([#34](https://www.github.com/jef/streetmerchant/issues/34)) ([c0a881a](https://www.github.com/jef/streetmerchant/commit/c0a881a16ebb573bf35b7f29cb27e5b3c2e1fe78))
* sms notification for usa carriers ([#40](https://www.github.com/jef/streetmerchant/issues/40)) ([5a3636b](https://www.github.com/jef/streetmerchant/commit/5a3636bcb639bb33bc586af96264f5df2f3a8307))
* update to check if FE in-stock via Digital River ([#29](https://www.github.com/jef/streetmerchant/issues/29)) ([00ede13](https://www.github.com/jef/streetmerchant/commit/00ede13501082f530ea672a349816be1d31621a8))
### Bug Fixes
* small error in `isOutOfStock` logic ([#33](https://www.github.com/jef/nvidia-snatcher/issues/33)) ([c2a210c](https://www.github.com/jef/nvidia-snatcher/commit/c2a210cc815c3aa06f6f14d33954f65577d95954))
* small error in `isOutOfStock` logic ([#33](https://www.github.com/jef/streetmerchant/issues/33)) ([c2a210c](https://www.github.com/jef/streetmerchant/commit/c2a210cc815c3aa06f6f14d33954f65577d95954))
## [1.1.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.0.0...v1.1.0) (2020-09-18)
## [1.1.0](https://www.github.com/jef/streetmerchant/compare/v1.0.0...v1.1.0) (2020-09-18)
### Features
* add conventional commits ([#14](https://www.github.com/jef/nvidia-snatcher/issues/14)) ([eb4f5e0](https://www.github.com/jef/nvidia-snatcher/commit/eb4f5e034176a286eabe381c98ced77cd197d7fb))
* add evga ([#17](https://www.github.com/jef/nvidia-snatcher/issues/17)) ([#18](https://www.github.com/jef/nvidia-snatcher/issues/18)) ([6c65032](https://www.github.com/jef/nvidia-snatcher/commit/6c6503219f7c188783c24a44f7052b276a4b39a3))
* add conventional commits ([#14](https://www.github.com/jef/streetmerchant/issues/14)) ([eb4f5e0](https://www.github.com/jef/streetmerchant/commit/eb4f5e034176a286eabe381c98ced77cd197d7fb))
* add evga ([#17](https://www.github.com/jef/streetmerchant/issues/17)) ([#18](https://www.github.com/jef/streetmerchant/issues/18)) ([6c65032](https://www.github.com/jef/streetmerchant/commit/6c6503219f7c188783c24a44f7052b276a4b39a3))
### Bug Fixes
* exception handling `TimeoutError` ([#20](https://www.github.com/jef/nvidia-snatcher/issues/20)) ([#21](https://www.github.com/jef/nvidia-snatcher/issues/21)) ([00a0687](https://www.github.com/jef/nvidia-snatcher/commit/00a0687d3eba6a8fca871161b447529be00c8896))
* exception handling `TimeoutError` ([#20](https://www.github.com/jef/streetmerchant/issues/20)) ([#21](https://www.github.com/jef/streetmerchant/issues/21)) ([00a0687](https://www.github.com/jef/streetmerchant/commit/00a0687d3eba6a8fca871161b447529be00c8896))
## 1.0.0 (2020-09-18)
### Features
* use ts, update cd, update `README` ([#12](https://www.github.com/jef/nvidia-snatcher/issues/12)) ([e9fc0bf](https://www.github.com/jef/nvidia-snatcher/commit/e9fc0bf5f770481d5e508d8b520e1020624e05d2))
* use ts, update cd, update `README` ([#12](https://www.github.com/jef/streetmerchant/issues/12)) ([e9fc0bf](https://www.github.com/jef/streetmerchant/commit/e9fc0bf5f770481d5e508d8b520e1020624e05d2))
+76
View File
@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at jeffreylec@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
+8 -4
View File
@@ -1,5 +1,6 @@
# Build the source code
FROM node:15.0.1-alpine3.12 AS builder
FROM node:14.15.0-alpine3.12 AS builder
LABEL org.opencontainers.image.source=https://github.com/jef/streetmerchant
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
@@ -14,7 +15,7 @@ COPY src/ src/
RUN npm run build
RUN npm prune --production
FROM node:15.0.1-alpine3.12
FROM node:14.15.0-alpine3.12
RUN apk add --no-cache chromium
@@ -32,6 +33,9 @@ WORKDIR /app
COPY --from=builder /build/node_modules/ node_modules/
COPY --from=builder /build/build/ build/
COPY web/ web/
COPY package.json package.json
COPY version.txt version.txt
CMD [ "node", "./build/index.js" ]
ENTRYPOINT ["npm", "run"]
CMD ["start:production"]
+104 -37
View File
@@ -1,40 +1,51 @@
# nvidia-snatcher [![ci](https://github.com/jef/nvidia-snatcher/workflows/ci/badge.svg)](https://github.com/jef/nvidia-snatcher/actions?query=workflow%3Aci) [![chat on freenode](https://img.shields.io/badge/chat-on%20freenode-blue)](https://kiwiirc.com/nextclient/irc.kiwiirc.com/?nick=kiwi_?#streetmerchant)
<p align="center"><a href="https://github.com/jef/streetmerchant#readme"><img src="https://raw.githubusercontent.com/jef/streetmerchant/main/media/streetmerchant.png" alt="streetmerchant" /></a></p>
<p align="center">The world's easiest, most powerful stock checker
<br/><br/>
<a href="https://github.com/jef/streetmerchant/actions?query=workflow%3Aci"><img src="https://github.com/jef/streetmerchant/workflows/ci/badge.svg" /></a>
<a href="https://discord.gg/gbVY4vB9JF"><img src="https://img.shields.io/discord/773913070665859073.svg?label=chat&logo=discord&logoColor=ffffff&color=7389D8" alt="Tweet" /></a>
<a href="https://twitter.com/intent/tweet?text=Beat%20the%20masses%20with%20streetmerchant&url=https://github.com/jef/streetmerchant&hashtags=typescript,opensource,bot,shopping"><img src="https://img.shields.io/badge/twitter-share-green?logo=twitter&style=social" alt="Tweet" /></a>
<br/><br/>
<a href="https://github.com/jef/streetmerchant#faq">FAQ</a> |
<a href="https://github.com/jef/streetmerchant/issues">Issues</a> |
<a href="https://github.com/jef/streetmerchant/wiki">Wiki</a>
</p>
[FAQ](#FAQ) | [Issues](https://github.com/jef/nvidia-snatcher/issues)
| [Wiki](https://github.com/jef/nvidia-snatcher/wiki)
## Features
![nvidia-snatcher](media/screenshot.png)
The purpose of this bot is to get an Nvidia card. It tries multiple things to do that.
- Currently, `nvidia-snatcher` is not capable of purchasing a card for you
- Scrapes multiple websites for patterns of being stocked
- API requests are a work in progress (very soon)
- Scrapes multiple websites for patterns of being stocked via API and Chromium
- Opens browser when stock is available
- Ability to send notifications when stock is available
> :point_right: The bot _will not_ automatically buy for you
## Installation overview
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!
getting `streetmerchant` running!
### Installation: native
- [Node.js 15](https://nodejs.org/en/)
| Reference | Note |
|:---:|---|
| tag | Example, `v1.0.0`; stable |
| `main` | Latest HEAD; not tagged, could be unstable |
- [Node.js 14](https://nodejs.org/en/)
- [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/streetmerchant.git`
- To checkout a particular ref, use `git checkout <ref name>` after cloning
- 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/)
- More on this in [customization](#Customization)
- More on this in [customization](#Customization)
- Run `npm run start` to start
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/streetmerchant/wiki) if you need more help with installation.
### Installation: Docker
@@ -42,10 +53,20 @@ Available via GitHub Container Registry.
| Tag | Note |
|:---:|---|
| `latest` | Latest stable build |
| `nightly` | Latest HEAD build, could be unstable |
| `latest` | Latest release; stable |
| `nightly` | Latest HEAD each day at midnight UTC; could be unstable |
Use `docker run --cap-add=SYS_ADMIN -it --rm --env-file ./.env ghcr.io/jef/nvidia-snatcher:nightly` to run.
```sh
# to run
docker run --cap-add=SYS_ADMIN \
-it --rm --env-file ./.env \
ghcr.io/jef/streetmerchant:nightly
# to test notifications
docker run --cap-add=SYS_ADMIN \
-it --rm --env-file ./.env \
ghcr.io/jef/streetmerchant:nightly test:notification:production
```
### Developer notes
@@ -54,7 +75,7 @@ filesystem changes are detected in the `src/` folder or `.env` file.
## Customization
To customize `nvidia-snatcher`, make a copy of `.env-example` as `.env` and make any changes to your liking. _All
To customize `streetmerchant`, make a copy of `.env-example` as `.env` and make any changes to your liking. _All
environment variables are **optional**._
<details>
@@ -64,6 +85,7 @@ environment variables are **optional**._
| Environment variable | Description | Notes |
|:---:|---|---|
| `AUTO_ADD_TO_CART` | Enable auto add to cart on support stores | Default: `true` |
| `BROWSER_TRUSTED` | Skip Chromium Sandbox | Useful for containerized environments, default: `false` |
| `HEADLESS` | Puppeteer to run headless or not | Debugging related, default: `true` |
| `INCOGNITO` | Puppeteer to run incognito or not | Debugging related, default: `false` |
@@ -84,7 +106,7 @@ environment variables are **optional**._
> :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: 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/streetmerchant/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.
### Filters
@@ -94,12 +116,16 @@ environment variables are **optional**._
| `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. |
| `MAX_PRICE_SERIES_RYZEN5600` | Maximum price allowed for a match, applies AMD 5600 series cpus | 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` - CPUs above `1234` will be skipped. |
| `MAX_PRICE_SERIES_RYZEN5800` | Maximum price allowed for a match, applies AMD 5800 series cpus | 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` - CPUs above `1234` will be skipped. |
| `MAX_PRICE_SERIES_RYZEN5900` | Maximum price allowed for a match, applies AMD 5900 series cpus | 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` - CPUs above `1234` will be skipped. |
| `MAX_PRICE_SERIES_RYZEN5950` | Maximum price allowed for a match, applies AMD 5950 series cpus | 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` - CPUs 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` |
| `SHOW_ONLY_SERIES` | Filter to show specified series | Comma separated, e.g.: `3080,ryzen5900` |
| `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>
@@ -116,9 +142,13 @@ environment variables are **optional**._
| Amazon (CA) | `amazon-ca`|
| Amazon (DE) | `amazon-de`|
| Amazon (ES) | `amazon-es`|
| Amazon (FR) | `amazon-fr`|
| Amazon (NL) | `amazon-nl`|
| Amazon (UK) | `amazon-uk`|
| AMD | `amd`|
| AMD (DE) | `amd-de`|
| Aria PC (UK) | `aria`|
| ARLT (DE) | `arlt`|
| ASUS | `asus` |
| ASUS (DE) | `asus-de` |
| Azerty (NL) | `azerty`|
@@ -126,6 +156,7 @@ environment variables are **optional**._
| Best Buy | `bestbuy`|
| Best Buy (CA) | `bestbuy-ca`|
| Box (UK) | `box`|
| CanadaComputers (CA) | `canadacomputers` |
| Caseking (DE) | `caseking`|
| CCL (UK) | `ccl`|
| Computeruniverse (DE) | `computeruniverse` |
@@ -136,8 +167,12 @@ environment variables are **optional**._
| eBuyer (UK) | `ebuyer`|
| EVGA | `evga`|
| EVGA (EU) | `evga-eu`|
| Galaxus (DE) | `galaxus`|
| Game (UK) | `game`|
| Gamestop | `gamestop`|
| Kabum (BR) | `kabum`|
| Mediamarkt (DE) | `mediamarkt`|
| MemoryExpress (CA) | `memoryexpress`|
| Micro Center | `microcenter`|
| Mindfactory (DE) | `mindfactory` |
| Newegg | `newegg`|
@@ -149,20 +184,24 @@ environment variables are **optional**._
| Office Depot | `officedepot`|
| Overclockers (UK) | `overclockers`|
| PCComponentes (ES) | `pccomponentes`|
| PlayStation | `playstation`|
| PNY | `pny`|
| Proshop (DE) | `proshop-de`|
| Proshop (DK) | `proshop-dk`|
| Saturn (DE) | `saturn`|
| Scan (UK) | `scan`|
| Target | `target`|
| Very (UK) | `very`|
| Walmart | `walmart`|
| Zotac | `zotac`|
| TopAchat | `topachat`|
<details>
<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/streetmerchant/issues/442#issuecomment-703297393).
| Store name |
|:---:|
@@ -203,16 +242,19 @@ environment variables are **optional**._
| Brand | Model |
|:---:|---|
| `asus` | `dual`, `dual oc`, `rog strix`, `rog strix oc`, `tuf`, `tuf oc` |
| `amd` | `5600x`, `5800x`, `5900x`, `5950x` |
| `asus` | `dual`, `dual oc`, `strix`, `strix oc`, `tuf`, `tuf oc` |
| `evga` | `ftw3`, `ftw3 ultra`, `xc3`, `xc3 black`, `xc3 ultra` |
| `gainward` | `phantom gs`, `phoenix`, `phoenix gs`, `phoenix gs oc` |
| `gigabyte` | `aorus master`, `aorus xtreme`, `eagle`, `eagle oc`, `gaming`, `gaming oc`, `turbo`, `vision`, `vision oc` |
| `inno3d` | `gaming x3`, `ichill x3`, `ichill x4`, `twin x2 oc` |
| `kfa2` | `sg oc` |
| `kfa2` | `sg`, `sg oc` |
| `microsoft` | `xboxsx`, `xboxss` |
| `msi` | `gaming x trio`, `ventus 2x oc`, `ventus 3x`, `ventus 3x oc` |
| `nvidia` | `founders edition` |
| `palit` | `gamerock oc`, `gaming pro`, `gaming pro oc` |
| `pny` | `dual fan`, `xlr8`, `xlr8 rgb` |
| `pny` | `dual fan`, `xlr8 revel`, `xlr8 uprising` |
| `sony` | `ps5 console`, `ps5 digital` |
| `zotac` | `amp holo`, `amp extreme holo`, `trinity`, `trinity oc`, `twin edge`, `twin edge oc` |
</details>
@@ -265,7 +307,7 @@ environment variables are **optional**._
| 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_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>
@@ -278,8 +320,8 @@ environment variables are **optional**._
| `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 |
| `PHONE_CARRIER` | [Supported carriers](#supported-carriers) for SMS | E.g.: `att` or `att,verizon,google`, email configuration required. If multiple phone numbers are listed, enter a carrier for each phone number |
| `PHONE_NUMBER` | 10 digit phone number(s) | E.g.: `1234567890` or `1234567890,0987654321,11112223333`, 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` |
@@ -316,7 +358,7 @@ environment variables are **optional**._
| `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_TOPIC` | Topic to publish alerts to. Can include %store%, %series%, %brand%, %model% for dynamic topics | Default: streetmerchant/alert e.g nv-alert/%store%/%series%/%brand%/%model%/alert |
| `MQTT_USERNAME` | MQTT username - (only if required by MQTT Broker) | e.g myusername |
</details>
@@ -331,6 +373,25 @@ environment variables are **optional**._
</details>
<details>
<summary>Philips Hue</summary>
| Environment variable | Description | Notes |
|:---:|---|---|
| `PHILIPS_HUE_API_KEY` | Hue Bridge API Key | **Required**, generate key using instructions [here](https://developers.meethue.com/develop/get-started-2/). This will be used for both LAN and cloud access over the official Remote Hue API. |
| `PHILIPS_HUE_LAN_BRIDGE_IP` | LAN IP Address of your Hue Bridge | LAN only, e.g. `192.168.x.x`|
| `PHILIPS_HUE_LIGHT_IDS` | Light IDs | Optional (all if not supplied). Comma seperated, e.g.: `1`, `2` |See Hue App → About for IDs |
| `PHILIPS_HUE_LIGHT_COLOR` | Color in RGB Format | Optional (NVIDIA green if not supplied). Comma separated, e.g.: `255`, `255`, `255`|
| `PHILIPS_HUE_LIGHT_PATTERN` | `blink` or empty | Optional - lights will flash for 30 seconds if `blink` is supplied. |
| `PHILIPS_HUE_CLOUD_ACCESS_TOKEN` | Remote Access Token | Cloud only, the access token obtained from Philips's Remote Hue API. Instructions to generate [here](https://developers.meethue.com/develop/hue-api/remote-authentication/). |
| `PHILIPS_HUE_CLOUD_REFRESH_TOKEN` | Remote Refresh Token | Cloud only, the refresh token obtained from Philips's Remote Hue API. |
| `PHILIPS_HUE_CLOUD_CLIENT_ID` | Remote Client ID | Cloud only, the client ID to use when accessing the Remote Hue API. |
| `PHILIPS_HUE_CLOUD_CLIENT_SECRET` | Remote Client Secret | Cloud only, the client secret to use when accessing the Remote Hue API. |
> :point_right: [Video demonstration](https://vimeo.com/476083242)
</details>
<details>
<summary>Pushbullet</summary>
@@ -408,7 +469,6 @@ environment variables are **optional**._
| `TWITCH_CHANNEL` | Twitch channel | |
</details>
</details>
## FAQ
@@ -429,19 +489,26 @@ it. Very straight forward. Otherwise, Google more information related to your sy
**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!** File an [issue](https://github.com/jef/nvidia-snatcher/issues/new/choose). I'll do
**Q: I got a problem and need help!** File an [issue](https://github.com/jef/streetmerchant/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).
this [wiki page](https://github.com/jef/streetmerchant/wiki/Troubleshoot:-General:-Getting-the-latest-code).
**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).
an [issue](https://github.com/jef/streetmerchant/issues?q=is%3Aissue+sort%3Aupdated-desc+sound+is%3Aclosed) that
has [already](https://github.com/jef/streetmerchant/issues/182) [been](https://github.com/jef/streetmerchant/issues/116) [resolved](https://github.com/jef/streetmerchant/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.
a [pull request](https://github.com/jef/streetmerchant/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).
See [#11](https://github.com/jef/streetmerchant/issues/11).
**Q: Why does Amazon show an error page (with a picture of an animal) instead of adding to cart or going to the detail page?** This is intended; see [#733](https://github.com/jef/streetmerchant/issues/733). This indicates that the item is out of stock and only available from a third-party seller (often at a markup).
**Q: I'm using streetmerchant in the cloud and X isn't working.** There is _a lot_ of undefined behavior with using streetmerchant in the cloud. Some sites may block IPs from your cloud provider. It is possible that a VPN will help circumvent these problems.
<p align="center"><a href="https://github.com/jef/streetmerchant#readme"><img src="https://raw.githubusercontent.com/jef/streetmerchant/main/media/terminal.gif" /></a></p>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 KiB

+1220 -15022
View File
File diff suppressed because it is too large Load Diff
+24 -20
View File
@@ -1,5 +1,5 @@
{
"name": "nvidia-snatcher",
"name": "streetmerchant",
"description": "🔮 For all your Nvidia needs",
"main": "src/index.ts",
"scripts": {
@@ -9,19 +9,21 @@
"lint:fix": "xo --fix",
"start": "npm run build && node build/index.js",
"start:dev": "nodemon --config nodemon.json",
"test:notification": "npm run build && node build/__test__/notification-test.js"
"start:production": "node build/index.js",
"test:notification": "npm run build && node build/__test__/notification-test.js",
"test:notification:production": "node build/__test__/notification-test.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/jef/nvidia-snatcher.git"
"url": "git+https://github.com/jef/streetmerchant.git"
},
"keywords": [],
"author": "jef",
"license": "MIT",
"bugs": {
"url": "https://github.com/jef/nvidia-snatcher/issues"
"url": "https://github.com/jef/streetmerchant/issues"
},
"homepage": "https://github.com/jef/nvidia-snatcher#readme",
"homepage": "https://github.com/jef/streetmerchant#readme",
"dependencies": {
"@jef/pushbullet": "^2.4.3",
"@slack/web-api": "^5.13.0",
@@ -30,43 +32,45 @@
"discord-webhook-node": "^1.1.8",
"dotenv": "^8.2.0",
"messaging-api-telegram": "^1.0.1",
"mqtt": "^4.2.4",
"mqtt": "^4.2.5",
"node-fetch": "^2.6.1",
"node-hue-api": "^4.0.9",
"node-notifier": "^8.0.0",
"node-pagerduty": "^1.3.5",
"nodemailer": "^6.4.14",
"node-pagerduty": "^1.3.6",
"nodemailer": "^6.4.16",
"open": "^7.3.0",
"play-sound": "^1.1.3",
"puppeteer": "^5.4.1",
"puppeteer": "^5.5.0",
"puppeteer-extra": "^3.1.15",
"puppeteer-extra-plugin-adblocker": "^2.11.8",
"puppeteer-extra-plugin-adblocker": "^2.11.9",
"puppeteer-extra-plugin-block-resources": "^2.2.7",
"puppeteer-extra-plugin-stealth": "^2.6.5",
"pushover-notifications": "^1.2.2",
"twilio": "^3.50.0",
"twitch": "^4.2.7",
"twitch-auth": "^4.2.7",
"twitch-chat-client": "^4.2.7",
"twilio": "^3.52.0",
"twitch": "^4.3.0",
"twitch-auth": "^4.3.0",
"twitch-chat-client": "^4.3.0",
"twitter": "^1.7.1",
"winston": "^3.3.3"
},
"devDependencies": {
"@types/async": "^3.2.3",
"@types/async": "^3.2.4",
"@types/cheerio": "^0.22.22",
"@types/node": "^14.14.6",
"@types/node": "^14.14.9",
"@types/node-fetch": "^2.5.7",
"@types/node-notifier": "^8.0.0",
"@types/nodemailer": "^6.4.0",
"@types/puppeteer": "^3.0.4",
"@types/puppeteer": "^5.4.0",
"@types/twitter": "^1.7.0",
"husky": "^4.3.0",
"nodemon": "^2.0.6",
"ts-node": "^9.0.0",
"typescript": "^4.0.5",
"webpack": "^5.3.2",
"xo": "^0.33.1"
"typescript": "^4.1.2",
"webpack": "^5.6.0",
"xo": "^0.35.0"
},
"xo": {
"prettier": true,
"rules": {
"sort-imports": "error",
"sort-keys": "error",
+20 -10
View File
@@ -3,13 +3,23 @@ import {readFileSync} from 'fs';
const version = readFileSync('version.txt', 'utf8');
export const banner = chalk.green.bold(`
$$\\ $$\\ $$\\ $$\\ $$\\
\\__| $$ |\\__| $$ | $$ |
$$$$$$$\\ $$\\ $$\\ $$\\ $$$$$$$ |$$\\ $$$$$$\\ $$$$$$$\\ $$$$$$$\\ $$$$$$\\ $$$$$$\\ $$$$$$$\\ $$$$$$$\\ $$$$$$\\ $$$$$$\\
$$ __$$\\\\$$\\ $$ |$$ |$$ __$$ |$$ | \\____$$\\ $$$$$$\\ $$ _____|$$ __$$\\ \\____$$\\\\_$$ _| $$ _____|$$ __$$\\ $$ __$$\\ $$ __$$\\
$$ | $$ |\\$$\\$$ / $$ |$$ / $$ |$$ | $$$$$$$ |\\______|\\$$$$$$\\ $$ | $$ | $$$$$$$ | $$ | $$ / $$ | $$ |$$$$$$$$ |$$ | \\__|
$$ | $$ | \\$$$ / $$ |$$ | $$ |$$ |$$ __$$ | \\____$$\\ $$ | $$ |$$ __$$ | $$ |$$\\ $$ | $$ | $$ |$$ ____|$$ |
$$ | $$ | \\$ / $$ |\\$$$$$$$ |$$ |\\$$$$$$$ | $$$$$$$ |$$ | $$ |\\$$$$$$$ | \\$$$$ |\\$$$$$$$\\ $$ | $$ |\\$$$$$$$\\ $$ |
\\__| \\__| \\_/ \\__| \\_______|\\__| \\_______| \\_______/ \\__| \\__| \\_______| \\____/ \\_______|\\__| \\__| \\_______|\\__|
${version}`);
export const banner = {
asciiVersion: `
██████ ▄▄▄█████▓ ██▀███ ▓█████ ▓█████▄▄▄█████▓ ███▄ ▄███▓▓█████ ██▀███ ▄████▄ ██░ ██ ▄▄▄ ███▄ █ ▄▄▄█████▓
▒██ ▒ ▓ ██▒ ▓▒▓██ ▒ ██▒▓█ ▀ ▓█ ▀▓ ██▒ ▓▒▓██▒▀█▀ ██▒▓█ ▀ ▓██ ▒ ██▒▒██▀ ▀█ ▓██░ ██▒▒████▄ ██ ▀█ █ ▓ ██▒ ▓▒
░ ▓██▄ ▒ ▓██░ ▒░▓██ ░▄█ ▒▒███ ▒███ ▒ ▓██░ ▒░▓██ ▓██░▒███ ▓██ ░▄█ ▒▒▓█ ▄ ▒██▀▀██░▒██ ▀█▄ ▓██ ▀█ ██▒▒ ▓██░ ▒░
▒ ██▒░ ▓██▓ ░ ▒██▀▀█▄ ▒▓█ ▄ ▒▓█ ▄░ ▓██▓ ░ ▒██ ▒██ ▒▓█ ▄ ▒██▀▀█▄ ▒▓▓▄ ▄██▒░▓█ ░██ ░██▄▄▄▄██ ▓██▒ ▐▌██▒░ ▓██▓ ░
▒██████▒▒ ▒██▒ ░ ░██▓ ▒██▒░▒████▒░▒████▒ ▒██▒ ░ ▒██▒ ░██▒░▒████▒░██▓ ▒██▒▒ ▓███▀ ░░▓█▒░██▓ ▓█ ▓██▒▒██░ ▓██░ ▒██▒ ░
▒ ▒▓▒ ▒ ░ ▒ ░░ ░ ▒▓ ░▒▓░░░ ▒░ ░░░ ▒░ ░ ▒ ░░ ░ ▒░ ░ ░░░ ▒░ ░░ ▒▓ ░▒▓░░ ░▒ ▒ ░ ▒ ░░▒░▒ ▒▒ ▓▒█░░ ▒░ ▒ ▒ ▒ ░░
░ ░▒ ░ ░ ░ ░▒ ░ ▒░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒ ░▒░ ░ ▒ ▒▒ ░░ ░░ ░ ▒░ ░
░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
${version}`,
render(ascii: boolean, hexColor: string) {
return chalk
.hex(hexColor)
.bold(ascii ? this.asciiVersion : this.stringVersion);
},
stringVersion: `STREETMERCHANT
${version}`
};
+138 -32
View File
@@ -1,22 +1,33 @@
import {banner} from './banner';
console.info(banner);
import {config as config_} from 'dotenv';
import path from 'path';
config_({path: path.resolve(__dirname, '../.env')});
console.info(
banner.render(
envOrBoolean(process.env.ASCII_BANNER, false),
envOrString(process.env.BANNER_COLOR, '#808080')
)
);
/**
* Returns environment variable, given array, or default array.
*
* @param environment Interested environment variable.
* @param array Default array. If not set, is `[]`.
*/
function envOrArray(environment: string | undefined, array?: string[]): string[] {
return (environment ? (
environment.includes('\n') ? environment.split('\n') : environment.split(',')
) : (array ?? [])).map(s => s.trim());
function envOrArray(
environment: string | undefined,
array?: string[]
): string[] {
return (environment
? environment.includes('\n')
? environment.split('\n')
: environment.split(',')
: array ?? []
).map((s) => s.trim());
}
/**
@@ -25,8 +36,11 @@ function envOrArray(environment: string | undefined, array?: string[]): string[]
* @param environment Interested environment variable.
* @param boolean Default boolean. If not set, is `true`.
*/
function envOrBoolean(environment: string | undefined, boolean?: boolean): boolean {
return environment ? environment === 'true' : (boolean ?? true);
function envOrBoolean(
environment: string | undefined,
boolean?: boolean
): boolean {
return environment ? environment === 'true' : boolean ?? true;
}
/**
@@ -36,7 +50,7 @@ function envOrBoolean(environment: string | undefined, boolean?: boolean): boole
* @param string Default string. If not set, is `''`.
*/
function envOrString(environment: string | undefined, string?: string): string {
return environment ? environment : (string ?? '');
return environment ? environment : string ?? '';
}
/**
@@ -46,7 +60,7 @@ function envOrString(environment: string | undefined, string?: string): string {
* @param number Default number. If not set, is `0`.
*/
function envOrNumber(environment: string | undefined, number?: number): number {
return environment ? Number(environment) : (number ?? 0);
return environment ? Number(environment) : number ?? 0;
}
/**
@@ -61,14 +75,24 @@ function envOrNumber(environment: string | undefined, number?: number): number {
* @param environmentMax Max environment variable of Min/Max pair.
* @param number Default number. If not set, is `0`.
*/
function envOrNumberMin(environmentMin: string | undefined, environmentMax: string | undefined, number?: number) {
function envOrNumberMin(
environmentMin: string | undefined,
environmentMax: string | undefined,
number?: number
) {
if (environmentMin || environmentMax) {
if (environmentMin && environmentMax) {
return Number(Number(environmentMin) < Number(environmentMax) ? environmentMin : environmentMax);
return Number(
Number(environmentMin) < Number(environmentMax)
? environmentMin
: environmentMax
);
}
if (environmentMax) {
return Number(environmentMax) < (number ?? 0) ? Number(environmentMax) : (number ?? 0);
return Number(environmentMax) < (number ?? 0)
? Number(environmentMax)
: number ?? 0;
}
if (environmentMin) {
@@ -91,14 +115,24 @@ function envOrNumberMin(environmentMin: string | undefined, environmentMax: stri
* @param environmentMax Max environment variable of Min/Max pair.
* @param number Default number. If not set, is `0`.
*/
function envOrNumberMax(environmentMin: string | undefined, environmentMax: string | undefined, number?: number) {
function envOrNumberMax(
environmentMin: string | undefined,
environmentMax: string | undefined,
number?: number
) {
if (environmentMin || environmentMax) {
if (environmentMin && environmentMax) {
return Number(Number(environmentMin) < Number(environmentMax) ? environmentMax : environmentMax);
return Number(
Number(environmentMin) < Number(environmentMax)
? environmentMax
: environmentMax
);
}
if (environmentMin) {
return Number(environmentMin) > (number ?? 0) ? Number(environmentMin) : (number ?? 0);
return Number(environmentMin) > (number ?? 0)
? Number(environmentMin)
: number ?? 0;
}
if (environmentMax) {
@@ -114,10 +148,26 @@ const browser = {
isIncognito: envOrBoolean(process.env.INCOGNITO, false),
isTrusted: envOrBoolean(process.env.BROWSER_TRUSTED, false),
lowBandwidth: envOrBoolean(process.env.LOW_BANDWIDTH, false),
maxBackoff: envOrNumberMax(process.env.PAGE_BACKOFF_MIN, process.env.PAGE_BACKOFF_MAX, 3600000),
maxSleep: envOrNumberMax(process.env.PAGE_SLEEP_MIN, process.env.PAGE_SLEEP_MAX, 10000),
minBackoff: envOrNumberMin(process.env.PAGE_BACKOFF_MIN, process.env.PAGE_BACKOFF_MAX, 10000),
minSleep: envOrNumberMin(process.env.PAGE_SLEEP_MIN, process.env.PAGE_SLEEP_MAX, 5000),
maxBackoff: envOrNumberMax(
process.env.PAGE_BACKOFF_MIN,
process.env.PAGE_BACKOFF_MAX,
3600000
),
maxSleep: envOrNumberMax(
process.env.PAGE_SLEEP_MIN,
process.env.PAGE_SLEEP_MAX,
10000
),
minBackoff: envOrNumberMin(
process.env.PAGE_BACKOFF_MIN,
process.env.PAGE_BACKOFF_MAX,
10000
),
minSleep: envOrNumberMin(
process.env.PAGE_SLEEP_MIN,
process.env.PAGE_SLEEP_MAX,
5000
),
open: envOrBoolean(process.env.OPEN_BROWSER)
};
@@ -135,7 +185,10 @@ const notifications = {
password: envOrString(process.env.EMAIL_PASSWORD),
smtpAddress: envOrString(process.env.SMTP_ADDRESS),
smtpPort: envOrNumber(process.env.SMTP_PORT, 25),
to: envOrString(process.env.EMAIL_TO, envOrString(process.env.EMAIL_USERNAME)),
to: envOrString(
process.env.EMAIL_TO,
envOrString(process.env.EMAIL_USERNAME)
),
username: envOrString(process.env.EMAIL_USERNAME)
},
mqtt: {
@@ -144,13 +197,25 @@ const notifications = {
password: envOrString(process.env.MQTT_PASSWORD),
port: envOrNumber(process.env.MQTT_BROKER_PORT, 1883),
qos: envOrNumber(process.env.MQTT_QOS, 0),
topic: envOrString(process.env.MQTT_TOPIC, 'nvidia-snatcher/alert'),
topic: envOrString(process.env.MQTT_TOPIC, 'streetmerchant/alert'),
username: envOrString(process.env.MQTT_USERNAME)
},
pagerduty: {
integrationKey: envOrString(process.env.PAGERDUTY_INTEGRATION_KEY),
severity: envOrString(process.env.PAGERDUTY_SEVERITY, 'info')
},
philips_hue: {
accessToken: envOrString(process.env.PHILIPS_HUE_CLOUD_ACCESS_TOKEN),
apiKey: envOrString(process.env.PHILIPS_HUE_API_KEY),
bridgeIp: envOrString(process.env.PHILIPS_HUE_LAN_BRIDGE_IP),
clientId: envOrString(process.env.PHILIPS_HUE_CLOUD_CLIENT_ID),
clientSecret: envOrString(process.env.PHILIPS_HUE_CLOUD_CLIENT_SECRET),
lightColor: envOrString(process.env.PHILIPS_HUE_LIGHT_COLOR),
lightIds: envOrString(process.env.PHILIPS_HUE_LIGHT_IDS),
lightPattern: envOrString(process.env.PHILIPS_HUE_LIGHT_PATTERN),
refreshToken: envOrString(process.env.PHILIPS_HUE_CLOUD_REFRESH_TOKEN),
remoteApiUsername: envOrString(process.env.PHILIPS_HUE_API_KEY)
},
phone: {
availableCarriers: new Map([
['att', 'txt.att.net'],
@@ -168,8 +233,8 @@ const notifications = {
['virgin', 'vmobl.com'],
['virgin-ca', 'vmobile.ca']
]),
carrier: envOrString(process.env.PHONE_CARRIER),
number: envOrString(process.env.PHONE_NUMBER)
carrier: envOrArray(process.env.PHONE_CARRIER),
number: envOrArray(process.env.PHONE_NUMBER)
},
playSound: envOrString(process.env.PLAY_SOUND),
pushbullet: envOrString(process.env.PUSHBULLET),
@@ -218,7 +283,9 @@ const page = {
inStockWaitTime: envOrNumber(process.env.IN_STOCK_WAIT_TIME),
screenshot: envOrBoolean(process.env.SCREENSHOT),
timeout: envOrNumber(process.env.PAGE_TIMEOUT, 30000),
userAgents: envOrArray(process.env.USER_AGENT, ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36']),
userAgents: envOrArray(process.env.USER_AGENT, [
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
]),
width: 1920
};
@@ -229,33 +296,72 @@ const proxy = {
// Check for deprecated configuration values
if (process.env.MAX_PRICE) {
console.warn(' MAX_PRICE is deprecated, please use MAX_PRICE_SERIES_{{series}}');
console.warn(
' MAX_PRICE is deprecated, please use MAX_PRICE_SERIES_{{series}}'
);
}
const store = {
autoAddToCart: envOrBoolean(process.env.AUTO_ADD_TO_CART, true),
country: envOrString(process.env.COUNTRY, 'usa'),
maxPrice: {
series: {
3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070),
3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080),
3090: envOrNumber(process.env.MAX_PRICE_SERIES_3090)
3090: envOrNumber(process.env.MAX_PRICE_SERIES_3090),
rx6800: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800),
rx6800xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800XT),
rx6900xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6900XT),
ryzen5600: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5600),
ryzen5800: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5800),
ryzen5900: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5900),
ryzen5950: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5950),
sf: envOrNumber(process.env.MAX_PRICE_SERIES_CORSAIR_SF),
sonyps5c: -1,
sonyps5de: -1,
'test:series': -1,
xboxss: -1,
xboxsx: -1
}
},
microCenterLocation: envOrArray(process.env.MICROCENTER_LOCATION, ['web']),
showOnlyBrands: envOrArray(process.env.SHOW_ONLY_BRANDS),
showOnlyModels: envOrArray(process.env.SHOW_ONLY_MODELS).map(entry => {
showOnlyModels: envOrArray(process.env.SHOW_ONLY_MODELS).map((entry) => {
const [name, series] = entry.match(/[^:]+/g) ?? [];
return {
name: envOrString(name),
series: envOrString(series)
};
}),
showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, ['3070', '3080', '3090']),
stores: envOrArray(process.env.STORES, ['nvidia']).map(entry => {
showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, [
'3070',
'3080',
'3090',
'rx6800',
'rx6800xt',
'rx6900xt',
'ryzen5600',
'ryzen5800',
'ryzen5900',
'ryzen5950',
'sonyps5c',
'sonyps5de',
'xboxss',
'xboxsx'
]),
stores: envOrArray(process.env.STORES, ['nvidia']).map((entry) => {
const [name, minPageSleep, maxPageSleep] = entry.match(/[^:]+/g) ?? [];
return {
maxPageSleep: envOrNumberMax(minPageSleep, maxPageSleep, browser.maxSleep),
minPageSleep: envOrNumberMin(minPageSleep, maxPageSleep, browser.minSleep),
maxPageSleep: envOrNumberMax(
minPageSleep,
maxPageSleep,
browser.maxSleep
),
minPageSleep: envOrNumberMin(
minPageSleep,
maxPageSleep,
browser.minSleep
),
name: envOrString(name)
};
})
+13 -6
View File
@@ -12,9 +12,11 @@ import {tryLookupAndLoop} from './store';
puppeteer.use(stealthPlugin());
if (config.browser.lowBandwidth) {
puppeteer.use(resourceBlock({
blockedTypes: new Set(['image', 'font'] as const)
}));
puppeteer.use(
resourceBlock({
blockedTypes: new Set(['image', 'font'] as const)
})
);
} else {
puppeteer.use(adBlocker);
}
@@ -41,7 +43,9 @@ async function main() {
// Add the address of the proxy server if defined
if (config.proxy.address) {
args.push(`--proxy-server=http://${config.proxy.address}:${config.proxy.port}`);
args.push(
`--proxy-server=http://${config.proxy.address}:${config.proxy.port}`
);
}
await stop();
@@ -90,8 +94,11 @@ async function stopAndExit() {
async function loopMain() {
try {
await main();
} catch (error) {
logger.error('✖ something bad happened, resetting nvidia-snatcher in 5 seconds', error);
} catch (error: unknown) {
logger.error(
'✖ something bad happened, resetting streetmerchant in 5 seconds',
error
);
setTimeout(loopMain, 5000);
}
}
+122 -30
View File
@@ -3,26 +3,24 @@ import chalk from 'chalk';
import {config} from './config';
import winston from 'winston';
const prettyJson = winston.format.printf(info => {
const prettyJson = winston.format.printf((info) => {
const timestamp = new Date().toLocaleTimeString();
if (typeof info.message === 'object') {
info.message = JSON.stringify(info.message, null, 4);
let out = `${chalk.grey(`[${timestamp}]`)} ${info.level} ${chalk.grey(
'::'
)} ${info.message}`;
if (Object.keys(info.metadata).length > 0) {
out = `${out} ${chalk.magenta(JSON.stringify(info.metadata, null, 2))}`;
}
if (info.meta) {
return chalk.grey(`[${timestamp}]`) + ` ${info.level} ` + chalk.grey('::') + ` ${info.message} ${chalk.magenta(JSON.stringify(info.meta, null, 2))}`;
}
return chalk.grey(`[${timestamp}]`) + ` ${info.level} ` + chalk.grey('::') + ` ${info.message}`;
return out;
});
export const logger = winston.createLogger({
format: winston.format.combine(
winston.format.colorize(),
winston.format.prettyPrint(),
winston.format.splat(),
winston.format.simple(),
winston.format.metadata({fillExcept: ['level', 'message', 'timestamp']}),
prettyJson
),
level: config.logLevel,
@@ -30,30 +28,67 @@ export const logger = winston.createLogger({
});
export const Print = {
backoff(link: Link, store: Store, parameters: {delay: number; statusCode: number}, color?: boolean): string {
backoff(
link: Link,
store: Store,
parameters: {delay: number; statusCode: number},
color?: boolean
): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow(`BACKOFF DELAY status=${parameters.statusCode} delay=${parameters.delay}`);
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow(
`BACKOFF DELAY status=${parameters.statusCode} delay=${parameters.delay}`
)
);
}
return `${buildProductString(link, store)} :: BACKOFF DELAY status=${parameters.statusCode} delay=${parameters.delay}`;
return `${buildProductString(link, store)} :: BACKOFF DELAY status=${
parameters.statusCode
} delay=${parameters.delay}`;
},
badStatusCode(link: Link, store: Store, statusCode: number, color?: boolean): string {
badStatusCode(
link: Link,
store: Store,
statusCode: number,
color?: boolean
): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow(`STATUS CODE ERROR ${statusCode}`);
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow(`STATUS CODE ERROR ${statusCode}`)
);
}
return `${buildProductString(link, store)} :: STATUS CODE ERROR ${statusCode}`;
return `${buildProductString(
link,
store
)} :: STATUS CODE ERROR ${statusCode}`;
},
bannedSeller(link: Link, store: Store, color?: boolean): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow('BANNED SELLER');
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow('BANNED SELLER')
);
}
return `${buildProductString(link, store)} :: BANNED SELLER`;
},
captcha(link: Link, store: Store, color?: boolean): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow('CAPTCHA');
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow('CAPTCHA')
);
}
return `${buildProductString(link, store)} :: CAPTCHA`;
@@ -73,49 +108,103 @@ export const Print = {
},
inStockWaiting(link: Link, store: Store, color?: boolean): string {
if (color) {
return ' ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow('IN STOCK, WAITING');
return (
' ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow('IN STOCK, WAITING')
);
}
return ` ${buildProductString(link, store)} :: IN STOCK, WAITING`;
},
maxPrice(link: Link, store: Store, price: number, maxPrice: number, color?: boolean): string {
maxPrice(
link: Link,
store: Store,
price: number,
maxPrice: number,
color?: boolean
): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow(`PRICE ${price} EXCEEDS LIMIT ${maxPrice}`);
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow(`PRICE ${price} EXCEEDS LIMIT ${maxPrice}`)
);
}
return `${buildProductString(link, store)} :: PRICE ${price} EXCEEDS LIMIT ${maxPrice}`;
return `${buildProductString(
link,
store
)} :: PRICE ${price} EXCEEDS LIMIT ${maxPrice}`;
},
message(message: string, topic: string, store: Store, color?: boolean): string {
message(
message: string,
topic: string,
store: Store,
color?: boolean
): string {
if (color) {
return '✖ ' + buildSetupString(topic, store, true) + ' :: ' + chalk.yellow(message);
return (
'✖ ' +
buildSetupString(topic, store, true) +
' :: ' +
chalk.yellow(message)
);
}
return `${buildSetupString(topic, store)} :: ${message}`;
},
noResponse(link: Link, store: Store, color?: boolean): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow('NO RESPONSE');
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow('NO RESPONSE')
);
}
return `${buildProductString(link, store)} :: NO RESPONSE`;
},
outOfStock(link: Link, store: Store, color?: boolean): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.red('OUT OF STOCK');
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.red('OUT OF STOCK')
);
}
return `${buildProductString(link, store)} :: OUT OF STOCK`;
},
productInStock(link: Link): string {
let productString = `Product Page: ${link.url}`;
if (link.cartUrl) productString += `\nAdd To Cart Link: ${link.cartUrl}`;
return productString;
},
rateLimit(link: Link, store: Store, color?: boolean): string {
if (color) {
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow('RATE LIMIT EXCEEDED');
return (
'✖ ' +
buildProductString(link, store, true) +
' :: ' +
chalk.yellow('RATE LIMIT EXCEEDED')
);
}
return `${buildProductString(link, store)} :: RATE LIMIT EXCEEDED`;
}
};
function buildSetupString(topic: string, store: Store, color?: boolean): string {
function buildSetupString(
topic: string,
store: Store,
color?: boolean
): string {
if (color) {
return chalk.cyan(`[${store.name}]`) + chalk.grey(` [setup (${topic})]`);
}
@@ -125,7 +214,10 @@ function buildSetupString(topic: string, store: Store, color?: boolean): string
function buildProductString(link: Link, store: Store, color?: boolean): string {
if (color) {
return chalk.cyan(`[${store.name}]`) + chalk.grey(` [${link.brand} (${link.series})] ${link.model}`);
return (
chalk.cyan(`[${store.name}]`) +
chalk.grey(` [${link.brand} (${link.series})] ${link.model}`)
);
}
return `[${store.name}] [${link.brand} (${link.series})] ${link.model}`;
+6 -4
View File
@@ -15,7 +15,9 @@ export function sendDiscordMessage(link: Link, store: Store) {
try {
const embed = new MessageBuilder();
embed.setTitle('Stock Notification');
embed.addField('URL', link.cartUrl ? link.cartUrl : link.url, true);
if (link.cartUrl)
embed.addField('Add To Cart Link', link.cartUrl, true);
embed.addField('Product Page', link.url, true);
embed.addField('Store', store.name, true);
embed.addField('Brand', link.brand, true);
embed.addField('Series', link.series, true);
@@ -25,7 +27,7 @@ export function sendDiscordMessage(link: Link, store: Store) {
embed.setText(notifyGroup.join(' '));
}
embed.setColor(0x76B900);
embed.setColor(0x76b900);
embed.setTimestamp();
const promises = [];
@@ -36,8 +38,8 @@ export function sendDiscordMessage(link: Link, store: Store) {
await Promise.all(promises);
logger.info('✔ discord message sent');
} catch (error) {
logger.error('✖ couldn\'t send discord message', error);
} catch (error: unknown) {
logger.error("✖ couldn't send discord message", error);
}
})();
}
+11 -9
View File
@@ -30,21 +30,23 @@ export function sendEmail(link: Link, store: Store) {
logger.debug('↗ sending email');
const mailOptions: Mail.Options = {
attachments: link.screenshot ? [
{
filename: link.screenshot,
path: `./${link.screenshot}`
}
] : undefined,
attachments: link.screenshot
? [
{
filename: link.screenshot,
path: `./${link.screenshot}`
}
]
: undefined,
from: email.username,
subject: Print.inStock(link, store),
text: link.cartUrl ? link.cartUrl : link.url,
text: Print.productInStock(link),
to: email.to
};
transporter.sendMail(mailOptions, error => {
transporter.sendMail(mailOptions, (error) => {
if (error) {
logger.error('✖ couldn\'t send email', error);
logger.error("✖ couldn't send email", error);
} else {
logger.info('✔ email sent');
}
+21 -14
View File
@@ -8,15 +8,20 @@ let client: MqttClient.Client;
if (mqtt.broker) {
if (checkInsecureUsage(mqtt.password, mqtt.broker)) {
logger.warn('✖ Insecure transport of password - Only use credentials with MQTT brokers on private networks.');
logger.warn(
'✖ Insecure transport of password - Only use credentials with MQTT brokers on private networks.'
);
} else {
const clientOptions: IClientOptions = {
clean: (mqtt.clientId === ''),
clean: mqtt.clientId === '',
clientId: mqtt.clientId === '' ? undefined : mqtt.clientId,
password: mqtt.password === '' ? undefined : mqtt.password,
username: mqtt.username === '' ? undefined : mqtt.username
};
client = MqttClient.connect(`mqtt://${mqtt.broker}:${mqtt.port}`, clientOptions);
client = MqttClient.connect(
`mqtt://${mqtt.broker}:${mqtt.port}`,
clientOptions
);
}
}
@@ -26,7 +31,10 @@ export function sendMqttMessage(link: Link, store: Store) {
(async () => {
const givenUrl = link.cartUrl ? link.cartUrl : link.url;
const message = `{"msg":"${Print.inStock(link, store)}", "url":"${givenUrl}"}`;
const message = `{"msg":"${Print.inStock(
link,
store
)}", "url":"${givenUrl}"}`;
const topic = generateTopic(link, store, mqtt.topic);
const pubOptions: IClientPublishOptions = {
qos: mqtt.qos as 0 | 1 | 2,
@@ -34,14 +42,10 @@ export function sendMqttMessage(link: Link, store: Store) {
};
try {
client.publish(
topic,
message,
pubOptions
);
client.publish(topic, message, pubOptions);
logger.info('✔ mqtt message sent');
} catch (error) {
logger.error('✖ couldn\'t send mqtt message', error);
} catch (error: unknown) {
logger.error("✖ couldn't send mqtt message", error);
}
})();
}
@@ -50,7 +54,8 @@ export function sendMqttMessage(link: Link, store: Store) {
function generateTopic(link: Link, store: Store, topic: string): string {
topic.trim();
topic = topic.replace(/^\//, '');
topic = topic.replace(/%series%/g, link.series)
topic = topic
.replace(/%series%/g, link.series)
.replace(/%brand%/g, link.brand)
.replace(/%model%/g, link.model)
.replace(/%store%/g, store.name);
@@ -68,10 +73,12 @@ function generateTopic(link: Link, store: Store, topic: string): string {
*/
function checkInsecureUsage(pass: string, address: string): boolean {
if (pass !== '') {
if (isClassANet(address) ||
if (
isClassANet(address) ||
isClassBNet(address) ||
isClassCNet(address) ||
isLinkLocal(address)) {
isLinkLocal(address)
) {
logger.debug(`MQTT using private network broker: ${address}`);
} else {
logger.debug(`MQTT using public network broker: ${address}`);
+2
View File
@@ -1,4 +1,5 @@
import {Link, Store} from '../store/model';
import {adjustPhilipsHueLights} from './philips-hue';
import {playSound} from './sound';
import {sendDesktopNotification} from './desktop';
import {sendDiscordMessage} from './discord';
@@ -21,6 +22,7 @@ export function sendNotification(link: Link, store: Store) {
sendSms(link, store);
sendDesktopNotification(link, store);
// Non-priority
adjustPhilipsHueLights();
sendDiscordMessage(link, store);
sendMqttMessage(link, store);
sendPagerDutyNotification(link, store);
+3 -4
View File
@@ -8,12 +8,11 @@ const pd = new PDClient('');
export function sendPagerDutyNotification(link: Link, store: Store) {
if (config.notifications.pagerduty.integrationKey) {
logger.debug('↗ sending pagerduty message');
const links = [
{href: link.url, text: 'Visit Store'}
];
const links = [{href: link.url, text: 'Visit Store'}];
if (link.cartUrl) {
links.push({
href: link.cartUrl, text: 'Add to Cart'
href: link.cartUrl,
text: 'Add to Cart'
});
}
+126
View File
@@ -0,0 +1,126 @@
import type Api from 'node-hue-api/lib/api/Api';
import {config} from '../config';
import {v3 as hueAPI} from 'node-hue-api';
import {logger} from '../logger';
const hue = config.notifications.philips_hue;
const apiKey = hue.apiKey;
const bridgeIp = hue.bridgeIp;
const lightIds = hue.lightIds;
const lightColor = hue.lightColor;
const lightPattern = hue.lightPattern;
const LightState = hueAPI.lightStates.LightState;
const clientId = hue.clientId;
const clientSecret = hue.clientSecret;
const accessToken = hue.accessToken;
const refreshToken = hue.refreshToken;
const remoteApiUsername = hue.remoteApiUsername;
// Default Light State
const lightState = new LightState()
.on(true)
.brightness(100)
.rgb(46.27, 72.55, 0);
const adjustLightsWithAPI = (hueBridge: Api) => {
logger.debug('Connected to Philips Hue bridge.');
// Set the custom light state (COLOR and METHOD here)
if (lightColor) {
const rgbArray = lightColor.split(',');
// If there's not three values, must not be RGB
if (rgbArray.length === 3) {
lightState.rgb(rgbArray[0], rgbArray[1], rgbArray[2]);
} else {
logger.debug('✖ Error assigning RGB Values');
}
}
// If blink is specified, then blink the lights
if (lightPattern === 'blink') {
lightState.alertLong();
}
// If we've been given light IDs, then only adjust those IDs
if (lightIds) {
const arrayOfIDs = lightIds.split(',');
arrayOfIDs.forEach((light) => {
logger.debug('adjusting all hue lights');
(hueBridge.lights.setLightState(light, lightState) as Promise<any>).catch(
(error: Error) => {
logger.error('Failed to adjust all lights.');
logger.error(error);
throw error;
}
);
});
} else {
// Adjust all light IDs
hueBridge.lights
.getAll()
.then((allLights: any[]) => {
allLights.forEach((light: any) => {
logger.debug('adjusting specified lights');
(hueBridge.lights.setLightState(
light,
lightState
) as Promise<any>).catch((error: Error) => {
logger.error('Failed to adjust specified lights.');
logger.error(error);
throw error;
});
});
})
.catch((error: Error) => {
logger.error('Failed to get all lights.');
logger.error(error);
throw error;
});
}
};
export function adjustPhilipsHueLights() {
// Check if the required variables have been set
if (hue.apiKey && hue.bridgeIp) {
logger.info('↗ adjusting Philips Hue lights over LAN');
(async () => {
logger.debug(
'Attempting to connect to Philips Hue bridge at ' + bridgeIp
);
hueAPI.api
.createLocal(bridgeIp)
.connect(apiKey)
.then(
(hueBridge) => {
adjustLightsWithAPI(hueBridge);
logger.info('✔ adjusted Philips Hue lights over LAN');
},
(error: Error) => {
logger.error("✖ couldn't adjust hue lights.", error);
}
);
})();
} else if (hue.apiKey && hue.clientId && hue.clientSecret) {
logger.info('↗ adjusting Philips Hue lights over cloud');
(async () => {
logger.debug('Attempting to connect to Philips Hue bridge over cloud');
const remoteBootstrap = hueAPI.api.createRemote(clientId, clientSecret);
if (hue.accessToken && hue.refreshToken) {
remoteBootstrap
.connectWithTokens(accessToken, refreshToken, remoteApiUsername)
.then(
(hueBridge) => {
adjustLightsWithAPI(hueBridge);
logger.info('✔ adjusted Philips Hue lights over cloud');
},
(error: Error) => {
logger.error(
'Failed to get a remote Philips Hue connection using supplied tokens.'
);
logger.error(error);
throw error;
}
);
}
})();
}
}
+3 -2
View File
@@ -17,10 +17,11 @@ export function sendPushbulletNotification(link: Link, store: Store) {
link.cartUrl ? link.cartUrl : link.url,
(error: Error) => {
if (error) {
logger.error('✖ couldn\'t send pushbullet message', error);
logger.error("✖ couldn't send pushbullet message", error);
} else {
logger.info('✔ pushbullet message sent');
}
});
}
);
}
}
+1 -1
View File
@@ -21,7 +21,7 @@ export function sendPushoverNotification(link: Link, store: Store) {
push.send(message, (error: Error) => {
if (error) {
logger.error('✖ couldn\'t send pushover message', error);
logger.error("✖ couldn't send pushover message", error);
} else {
logger.info('✔ pushover message sent');
}
+3 -3
View File
@@ -22,13 +22,13 @@ export function sendSlackMessage(link: Link, store: Store) {
});
if (!result.ok) {
logger.error('✖ couldn\'t send slack message', result);
logger.error("✖ couldn't send slack message", result);
return;
}
logger.info('✔ slack message sent');
} catch (error) {
logger.error('✖ couldn\'t send slack message', error);
} catch (error: unknown) {
logger.error("✖ couldn't send slack message", error);
}
})();
}
+61 -34
View File
@@ -4,48 +4,75 @@ import Mail from 'nodemailer/lib/mailer';
import {config} from '../config';
import {transporter} from './email';
if (config.notifications.phone.number && !config.notifications.email.username) {
logger.warn('✖ in order to receive sms alerts, email notifications must also be configured');
}
const [email, phone] = [config.notifications.email, config.notifications.phone];
if (phone.number.length > 0 && (!email.username || !email.password)) {
logger.warn(
'✖ in order to receive sms alerts, email notifications must also be configured'
);
}
if (phone.carrier.length !== phone.number.length) {
logger.warn(
'✖ the number of carriers must match the number of phone numbers',
{carrier: phone.carrier, number: phone.number}
);
}
export function sendSms(link: Link, store: Store) {
if (phone.number) {
logger.debug('↗ sending sms');
const carrier = phone.carrier;
for (
let i = 0;
i < Math.max(phone.number.length, phone.carrier.length);
i++
) {
const currentNumber = phone.number[i];
const currentCarrier = phone.carrier[i];
if (carrier && phone.availableCarriers.has(carrier)) {
const mailOptions: Mail.Options = {
attachments: link.screenshot ? [
{
filename: link.screenshot,
path: `./${link.screenshot}`
}
] : undefined,
from: email.username,
subject: Print.inStock(link, store, false, true),
text: link.cartUrl ? link.cartUrl : link.url,
to: generateAddress()
};
transporter.sendMail(mailOptions, error => {
if (error) {
logger.error('✖ couldn\'t send sms', error);
} else {
logger.info('✔ sms sent');
}
});
if (!currentNumber) {
logger.error(`${currentCarrier} is not associated with a number`);
continue;
} else if (!currentCarrier) {
logger.error(`${currentNumber} is not associated with a carrier`);
continue;
}
if (!phone.availableCarriers.has(currentCarrier)) {
logger.error(`✖ unknown carrier ${currentCarrier}`);
continue;
}
logger.debug('↗ sending sms');
const mailOptions: Mail.Options = {
attachments: link.screenshot
? [
{
filename: link.screenshot,
path: `./${link.screenshot}`
}
]
: undefined,
from: email.username,
subject: Print.inStock(link, store, false, true),
text: link.cartUrl ? link.cartUrl : link.url,
to: generateAddress(currentNumber, currentCarrier)
};
transporter.sendMail(mailOptions, (error) => {
if (error) {
logger.error(
`✖ couldn't send sms to ${currentNumber} for carrier ${currentCarrier}`,
error
);
} else {
logger.info('✔ sms sent');
}
});
}
}
function generateAddress() {
const carrier = phone.carrier;
function generateAddress(number: string, carrier: string) {
if (carrier && phone.availableCarriers.has(carrier)) {
return [phone.number, phone.availableCarriers.get(carrier)].join('@');
return [number, phone.availableCarriers.get(carrier)].join('@');
}
logger.error('✖ unknown carrier', carrier);
}
+3 -3
View File
@@ -9,7 +9,7 @@ if (config.notifications.playSound) {
player = playerLib();
if (player.player === null) {
logger.warn('✖ couldn\'t find sound player');
logger.warn("✖ couldn't find sound player");
} else {
const playerName = player.player;
logger.info(`✔ sound player found: ${playerName}`);
@@ -20,7 +20,7 @@ export function playSound() {
if (config.notifications.playSound && player.player !== null) {
logger.debug('↗ playing sound');
fs.access(config.notifications.playSound, fs.constants.F_OK, error => {
fs.access(config.notifications.playSound, fs.constants.F_OK, (error) => {
if (error) {
logger.error(`✖ error opening sound file: ${error.message}`);
return;
@@ -28,7 +28,7 @@ export function playSound() {
player.play(config.notifications.playSound, (error: Error) => {
if (error) {
logger.error('✖ couldn\'t play sound', error);
logger.error("✖ couldn't play sound", error);
}
logger.info('✔ played sound');
+9 -4
View File
@@ -14,15 +14,20 @@ export function sendTelegramMessage(link: Link, store: Store) {
logger.debug('↗ sending telegram message');
(async () => {
const givenUrl = link.cartUrl ? link.cartUrl : link.url;
const message = Print.productInStock(link);
const results = [];
for (const chatId of telegram.chatId) {
try {
results.push(client.sendMessage(chatId, `${Print.inStock(link, store)}\n${givenUrl}`));
results.push(
client.sendMessage(
chatId,
`${Print.inStock(link, store)}\n${message}`
)
);
logger.info('✔ telegram message sent');
} catch (error) {
logger.error('✖ couldn\'t send telegram message', error);
} catch (error: unknown) {
logger.error("✖ couldn't send telegram message", error);
}
}
+2 -2
View File
@@ -25,8 +25,8 @@ export function sendTwilioMessage(link: Link, store: Store) {
to: twilio.to
});
logger.info('✔ twilio message sent');
} catch (error) {
logger.error('✖ couldn\'t send twilio message', error);
} catch (error: unknown) {
logger.error("✖ couldn't send twilio message", error);
}
})();
}
+34 -11
View File
@@ -17,7 +17,10 @@ let tokenData = {
};
if (existsSync('./twitch.json')) {
tokenData = {...JSON.parse(readFileSync('./twitch.json', 'utf-8')), ...tokenData};
tokenData = {
...JSON.parse(readFileSync('./twitch.json', 'utf-8')),
...tokenData
};
}
const chatClient: ChatClient = new ChatClient(
@@ -25,13 +28,25 @@ const chatClient: ChatClient = new ChatClient(
new StaticAuthProvider(twitch.clientId, tokenData.accessToken),
{
clientSecret: twitch.clientSecret,
expiry: tokenData.expiryTimestamp === null ? null : new Date(tokenData.expiryTimestamp),
expiry:
tokenData.expiryTimestamp === null
? null
: new Date(tokenData.expiryTimestamp),
onRefresh: async ({accessToken, refreshToken, expiryDate}) => {
return promises.writeFile('./twitch.json', JSON.stringify({
accessToken,
expiryTimestamp: expiryDate === null ? null : expiryDate.getTime(),
refreshToken
}, null, 4), 'utf-8');
return promises.writeFile(
'./twitch.json',
JSON.stringify(
{
accessToken,
expiryTimestamp:
expiryDate === null ? null : expiryDate.getTime(),
refreshToken
},
null,
4
),
'utf-8'
);
},
refreshToken: tokenData.refreshToken
}
@@ -50,8 +65,8 @@ chatClient.onJoin((channel: string, user: string) => {
try {
chatClient.say(channel, message);
logger.info('✔ twitch message sent');
} catch (error) {
logger.error('✖ couldn\'t send twitch message', error);
} catch (error: unknown) {
logger.error("✖ couldn't send twitch message", error);
}
}
}
@@ -65,10 +80,18 @@ chatClient.onDisconnect(() => {
});
export function sendTwitchMessage(link: Link, store: Store) {
if (tokenData.accessToken && twitch.channel && twitch.clientId && twitch.clientSecret && tokenData.refreshToken) {
if (
tokenData.accessToken &&
twitch.channel &&
twitch.clientId &&
twitch.clientSecret &&
tokenData.refreshToken
) {
logger.debug('↗ sending twitch message');
messages.push(`${Print.inStock(link, store)}\n${link.cartUrl ? link.cartUrl : link.url}`);
messages.push(
`${Print.inStock(link, store)}\n${link.cartUrl ? link.cartUrl : link.url}`
);
if (!alreadySaying) {
alreadySaying = true;
+11 -4
View File
@@ -13,18 +13,25 @@ const client = new Twitter({
});
export function sendTweet(link: Link, store: Store) {
if (twitter.accessTokenKey && twitter.accessTokenSecret && twitter.consumerKey && twitter.consumerSecret) {
if (
twitter.accessTokenKey &&
twitter.accessTokenSecret &&
twitter.consumerKey &&
twitter.consumerSecret
) {
logger.debug('↗ sending twitter message');
let status = `${Print.inStock(link, store)}\n${link.cartUrl ? link.cartUrl : link.url}`;
let status = `${Print.inStock(link, store)}\n${
link.cartUrl ? link.cartUrl : link.url
}`;
if (twitter.tweetTags) {
status += `\n\n${twitter.tweetTags}`;
}
client.post('statuses/update', {status}, error => {
client.post('statuses/update', {status}, (error) => {
if (error) {
logger.error('✖ couldn\'t send twitter notification', error);
logger.error("✖ couldn't send twitter notification", error);
} else {
logger.info('✔ twitter notification sent');
}
+19 -13
View File
@@ -12,14 +12,16 @@ function addNewLinks(store: Store, links: Link[], series: Series) {
return;
}
const existingUrls = new Set(store.links.map(link => link.url));
const newLinks = links.filter(link => !existingUrls.has(link.url));
const existingUrls = new Set(store.links.map((link) => link.url));
const newLinks = links.filter((link) => !existingUrls.has(link.url));
if (newLinks.length === 0) {
return;
}
logger.debug(Print.message(`FOUND ${newLinks.length} STORE LINKS`, series, store, true));
logger.debug(
Print.message(`FOUND ${newLinks.length} STORE LINKS`, series, store, true)
);
logger.debug(JSON.stringify(newLinks, null, 2));
store.links = store.links.concat(newLinks);
@@ -43,19 +45,23 @@ export async function fetchLinks(store: Store, browser: Browser) {
url = [url];
}
url.map(x => promises.push(usingResponse(browser, x, async response => {
const text = await response?.text();
url.map((x) =>
promises.push(
usingResponse(browser, x, async (response) => {
const text = await response?.text();
if (!text) {
logger.error(Print.message('NO RESPONSE', series, store, true));
return;
}
if (!text) {
logger.error(Print.message('NO RESPONSE', series, store, true));
return;
}
const docElement = cheerio.load(text).root();
const links = store.linksBuilder!.builder(docElement, series);
const docElement = cheerio.load(text).root();
const links = store.linksBuilder!.builder(docElement, series);
addNewLinks(store, links, series);
})));
addNewLinks(store, links, series);
})
)
);
}
await Promise.all(promises);
+8 -4
View File
@@ -30,10 +30,14 @@ function filterModel(model: Link['model'], series: Link['series']): boolean {
for (const configModelEntry of config.store.showOnlyModels) {
const sanitizedConfigModel = configModelEntry.name.replace(/\s/g, '');
const sanitizedConfigSeries = configModelEntry.series.replace(/\s/g, '');
if (sanitizedConfigSeries ?
sanitizedSeries === sanitizedConfigSeries && sanitizedModel === sanitizedConfigModel :
sanitizedModel === sanitizedConfigModel
) {
if (sanitizedConfigSeries) {
if (
sanitizedSeries === sanitizedConfigSeries &&
sanitizedModel === sanitizedConfigModel
) {
return true;
}
} else if (sanitizedModel === sanitizedConfigModel) {
return true;
}
}
+64 -30
View File
@@ -9,59 +9,81 @@ export type Selector = {
};
function isElementArray(query: LabelQuery): query is Element[] {
return Array.isArray(query) && query.length > 0 && typeof query[0] === 'object';
return (
Array.isArray(query) && query.length > 0 && typeof query[0] === 'object'
);
}
function getQueryAsElementArray(query: LabelQuery, defaultContainer: string): Array<Required<Element>> {
function getQueryAsElementArray(
query: LabelQuery,
defaultContainer: string
): Array<Required<Element>> {
if (isElementArray(query)) {
return query.map(x => ({
return query.map((x) => ({
container: x.container ?? defaultContainer,
text: x.text
}));
}
if (Array.isArray(query)) {
return [{
container: defaultContainer,
text: query
}];
return [
{
container: defaultContainer,
text: query
}
];
}
return [{
container: query.container ?? defaultContainer,
text: query.text
}];
return [
{
container: query.container ?? defaultContainer,
text: query.text
}
];
}
export async function pageIncludesLabels(page: Page, query: LabelQuery, options: Selector) {
export async function pageIncludesLabels(
page: Page,
query: LabelQuery,
options: Selector
) {
const elementQueries = getQueryAsElementArray(query, options.selector);
const resolved = await Promise.all(elementQueries.map(async query => {
const selector = {...options, selector: query.container};
const contents = await extractPageContents(page, selector) ?? '';
const resolved = await Promise.all(
elementQueries.map(async (query) => {
const selector = {...options, selector: query.container};
const contents = (await extractPageContents(page, selector)) ?? '';
if (!contents) {
return false;
}
if (!contents) {
return false;
}
logger.debug(contents);
logger.debug(contents);
return includesLabels(contents, query.text);
}));
return includesLabels(contents, query.text);
})
);
return resolved.includes(true);
}
export async function extractPageContents(page: Page, selector: Selector): Promise<string | null> {
export async function extractPageContents(
page: Page,
selector: Selector
): Promise<string | null> {
return page.evaluate((options: Selector) => {
// eslint-disable-next-line no-undef
const element: globalThis.HTMLElement | null = document.querySelector(options.selector);
const element: globalThis.HTMLElement | null = document.querySelector(
options.selector
);
if (!element) {
return null;
}
if (options.requireVisible && !(element.offsetWidth > 0 && element.offsetHeight > 0)) {
if (
options.requireVisible &&
!(element.offsetWidth > 0 && element.offsetHeight > 0)
) {
return null;
}
@@ -84,13 +106,23 @@ export async function extractPageContents(page: Page, selector: Selector): Promi
* @param domText Complete DOM of website.
* @param searchLabels Search labels for a match.
*/
export function includesLabels(domText: string, searchLabels: string[]): boolean {
export function includesLabels(
domText: string,
searchLabels: string[]
): boolean {
const domTextLowerCase = domText.toLowerCase();
return searchLabels.some(label => domTextLowerCase.includes(label.toLowerCase()));
return searchLabels.some((label) =>
domTextLowerCase.includes(label.toLowerCase())
);
}
export async function cardPrice(page: Page, query: Pricing, max: number, options: Selector) {
if (!max) {
export async function cardPrice(
page: Page,
query: Pricing,
max: number,
options: Selector
): Promise<number | null> {
if (!max || max === -1) {
return null;
}
@@ -99,7 +131,9 @@ export async function cardPrice(page: Page, query: Pricing, max: number, options
if (cardPrice) {
const priceSeperator = query.euroFormat ? /\./g : /,/g;
const cardpriceNumber = Number.parseFloat(cardPrice.replace(priceSeperator, '').match(/\d+/g)!.join('.'));
const cardpriceNumber = Number.parseFloat(
cardPrice.replace(priceSeperator, '').match(/\d+/g)!.join('.')
);
logger.debug(`Raw card price: ${cardPrice} | Limit: ${max}`);
return cardpriceNumber > max ? cardpriceNumber : null;
+60 -43
View File
@@ -2,7 +2,13 @@ import {Browser, Page, Response} from 'puppeteer';
import {Link, Store, getStores} from './model';
import {Print, logger} from '../logger';
import {Selector, cardPrice, pageIncludesLabels} from './includes-labels';
import {closePage, delay, getRandomUserAgent, getSleepTime, isStatusCodeInRange} from '../util';
import {
closePage,
delay,
getRandomUserAgent,
getSleepTime,
isStatusCodeInRange
} from '../util';
import {config} from '../config';
import {disableBlockerInPage} from '../adblocker';
import {fetchLinks} from './fetch-links';
@@ -39,15 +45,19 @@ async function lookup(browser: Browser, store: Store) {
continue;
}
const context = (config.browser.isIncognito ? await browser.createIncognitoBrowserContext() : browser.defaultBrowserContext());
const page = (config.browser.isIncognito ? await context.newPage() : await browser.newPage());
const context = config.browser.isIncognito
? await browser.createIncognitoBrowserContext()
: browser.defaultBrowserContext();
const page = config.browser.isIncognito
? await context.newPage()
: await browser.newPage();
page.setDefaultNavigationTimeout(config.page.timeout);
await page.setUserAgent(getRandomUserAgent());
if (store.disableAdBlocker) {
try {
await disableBlockerInPage(page);
} catch (error) {
} catch (error: unknown) {
logger.error(error);
}
}
@@ -56,8 +66,12 @@ async function lookup(browser: Browser, store: Store) {
try {
statusCode = await lookupCard(browser, store, page, link);
} catch (error) {
logger.error(`✖ [${store.name}] ${link.brand} ${link.series} ${link.model} - ${error.message as string}`);
} catch (error: unknown) {
logger.error(
`✖ [${store.name}] ${link.brand} ${link.series} ${link.model} - ${
(error as Error).message
}`
);
const client = await page.target().createCDPSession();
await client.send('Network.clearBrowserCookies');
await client.send('Network.clearBrowserCache');
@@ -75,9 +89,16 @@ async function lookup(browser: Browser, store: Store) {
/* eslint-enable no-await-in-loop */
}
async function lookupCard(browser: Browser, store: Store, page: Page, link: Link): Promise<number> {
async function lookupCard(
browser: Browser,
store: Store,
page: Page,
link: Link
): Promise<number> {
const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0';
const response: Response | null = await page.goto(link.url, {waitUntil: givenWaitFor});
const response: Response | null = await page.goto(link.url, {
waitUntil: givenWaitFor
});
if (!response) {
logger.debug(Print.noResponse(link, store, true));
@@ -96,15 +117,14 @@ async function lookupCard(browser: Browser, store: Store, page: Page, link: Link
}
if (await lookupCardInStock(store, page, link)) {
const givenUrl = link.cartUrl ? link.cartUrl : link.url;
const givenUrl =
link.cartUrl && config.store.autoAddToCart ? link.cartUrl : link.url;
logger.info(`${Print.inStock(link, store, true)}\n${givenUrl}`);
if (config.browser.open) {
if (link.openCartAction === undefined) {
await open(givenUrl);
} else {
await link.openCartAction(browser);
}
await (link.openCartAction === undefined
? open(givenUrl)
: link.openCartAction(browser));
}
sendNotification(link, store);
@@ -136,9 +156,13 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
};
if (store.labels.inStock) {
const options = {...baseOptions, requireVisible: true, type: 'outerHTML' as const};
const options = {
...baseOptions,
requireVisible: true,
type: 'outerHTML' as const
};
if (!await pageIncludesLabels(page, store.labels.inStock, options)) {
if (!(await pageIncludesLabels(page, store.labels.inStock, options))) {
logger.info(Print.outOfStock(link, store, true));
return false;
}
@@ -152,34 +176,24 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
}
if (store.labels.bannedSeller) {
if (await pageIncludesLabels(page, store.labels.bannedSeller, baseOptions)) {
if (
await pageIncludesLabels(page, store.labels.bannedSeller, baseOptions)
) {
logger.warn(Print.bannedSeller(link, store, true));
return false;
}
}
if (store.labels.maxPrice) {
let price;
let maxPrice = 0;
switch (link.series) {
case '3070':
price = await cardPrice(page, store.labels.maxPrice, config.store.maxPrice.series['3070'], baseOptions);
maxPrice = config.store.maxPrice.series['3070'];
break;
case '3080':
price = await cardPrice(page, store.labels.maxPrice, config.store.maxPrice.series['3080'], baseOptions);
maxPrice = config.store.maxPrice.series['3080'];
break;
case '3090':
price = await cardPrice(page, store.labels.maxPrice, config.store.maxPrice.series['3090'], baseOptions);
maxPrice = config.store.maxPrice.series['3090'];
break;
default:
break;
}
const price = await cardPrice(
page,
store.labels.maxPrice,
config.store.maxPrice.series[link.series],
baseOptions
);
const maxPrice = config.store.maxPrice.series[link.series];
if (price) {
logger.info(Print.maxPrice(link, store, price, maxPrice, true));
logger.info(Print.maxPrice(link, store, price, maxPrice, true));
return false;
}
}
@@ -193,7 +207,10 @@ 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) {
if (
store.realTimeInventoryLookup !== undefined &&
link.itemNumber !== undefined
) {
return store.realTimeInventoryLookup(link.itemNumber);
}
@@ -206,15 +223,15 @@ export async function tryLookupAndLoop(browser: Browser, store: Store) {
return;
}
if (store.linksBuilder) {
if (getStores().has(store.name) && store.linksBuilder) {
const lastRunTime = linkBuilderLastRunTimes[store.name] ?? -1;
const ttl = store.linksBuilder.ttl ?? Number.MAX_SAFE_INTEGER;
if (lastRunTime === -1 || (Date.now() - lastRunTime) > ttl) {
if (lastRunTime === -1 || Date.now() - lastRunTime > ttl) {
try {
await fetchLinks(store, browser);
linkBuilderLastRunTimes[store.name] = Date.now();
} catch (error) {
logger.error(error.message);
} catch (error: unknown) {
logger.error((error as Error).message);
}
}
}
@@ -222,7 +239,7 @@ export async function tryLookupAndLoop(browser: Browser, store: Store) {
logger.debug(`[${store.name}] Starting lookup...`);
try {
await lookup(browser, store);
} catch (error) {
} catch (error: unknown) {
logger.error(error);
}
+4 -4
View File
@@ -24,7 +24,7 @@ export const Adorama: Store = {
},
{
brand: 'pny',
model: 'xlr8',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.adorama.com/pnv301tfxmpb.html'
},
@@ -72,13 +72,13 @@ export const Adorama: Store = {
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.adorama.com/png30801tfxb.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.adorama.com/asrx3080o10g.html'
},
@@ -120,7 +120,7 @@ export const Adorama: Store = {
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.adorama.com/asrx3090o24g.html'
}
+9 -10
View File
@@ -36,7 +36,7 @@ export const AlternateNL: Store = {
},
{
brand: 'asus',
model: 'tuf gaming',
model: 'tuf',
series: '3080',
url: 'https://www.alternate.nl/product/1672251'
},
@@ -54,19 +54,19 @@ export const AlternateNL: Store = {
},
{
brand: 'asus',
model: 'tuf oc gaming',
model: 'tuf oc',
series: '3080',
url: 'https://www.alternate.nl/product/1672634'
},
{
brand: 'asus',
model: 'rog strix oc gaming',
model: 'strix oc',
series: '3080',
url: 'https://www.alternate.nl/product/1672867'
},
{
brand: 'evga',
model: 'xc3 black gaming',
model: 'xc3 black',
series: '3080',
url: 'https://www.alternate.nl/product/1673512'
},
@@ -78,13 +78,13 @@ export const AlternateNL: Store = {
},
{
brand: 'evga',
model: 'xc3 ultra gaming',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.alternate.nl/product/1674164'
},
{
brand: 'asus',
model: 'rog strix gaming',
model: 'strix',
series: '3080',
url: 'https://www.alternate.nl/product/1672868'
},
@@ -108,7 +108,7 @@ export const AlternateNL: Store = {
},
{
brand: 'evga',
model: 'xc3 gaming',
model: 'xc3',
series: '3080',
url: 'https://www.alternate.nl/product/1673520'
},
@@ -126,7 +126,7 @@ export const AlternateNL: Store = {
},
{
brand: 'evga',
model: 'ftw3 ultra gaming',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.alternate.nl/product/1673524'
},
@@ -138,7 +138,7 @@ export const AlternateNL: Store = {
},
{
brand: 'evga',
model: 'ftw3 gaming',
model: 'ftw3',
series: '3080',
url: 'https://www.alternate.nl/product/1673517'
},
@@ -169,4 +169,3 @@ export const AlternateNL: Store = {
],
name: 'alternate-nl'
};
+46 -5
View File
@@ -4,7 +4,12 @@ export const Alternate: Store = {
labels: {
inStock: {
container: '.stockStatus',
text: ['auf lager', 'ware neu eingetroffen', 'in kürze versandfertig', 'ware im zulauf']
text: [
'auf lager',
'ware neu eingetroffen',
'in kürze versandfertig',
'ware im zulauf'
]
},
maxPrice: {
container: 'div.price > span',
@@ -24,13 +29,13 @@ export const Alternate: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.alternate.de/product/1672868'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.alternate.de/product/1672867'
},
@@ -186,13 +191,13 @@ export const Alternate: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.alternate.de/product/1672870'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.alternate.de/product/1672872'
},
@@ -315,6 +320,42 @@ export const Alternate: Store = {
model: 'trinity',
series: '3090',
url: 'https://www.alternate.de/product/1672611'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.alternate.de/product/1685588'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.alternate.de/product/1685585'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.alternate.de/product/1685590'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.alternate.de/product/1685584'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.alternate.de/product/1651220'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.alternate.de/product/1651221'
}
],
name: 'alternate'
+86
View File
@@ -18,117 +18,203 @@ export const AmazonCa: Store = {
links: [
{
brand: 'test:brand',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B07PBLD2MX&Quantity.1=1',
model: 'test:model',
series: 'test:series',
url: 'https://www.amazon.ca/dp/B07PBLD2MX'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1',
model: 'gaming x trio',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HR7SV3M'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HR5SXPS'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1',
model: 'ftw3',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HR3DPGW'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HR3Y5GQ'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HR55YB5'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1',
model: 'xc3',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HR4RJ3Q'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1',
model: 'xc3 black',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HR6FMF3'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1',
model: 'gaming oc',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HJTH61J'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1',
model: 'eagle oc',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HJS2JLJ'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1',
model: 'tuf',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HHDP9DW'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1',
model: 'tuf oc',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HH5WF97'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1',
model: 'trinity',
series: '3080',
url: 'https://www.amazon.ca/dp/B08HJNKT3P'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1',
model: 'trinity',
series: '3090',
url: 'https://www.amazon.ca/dp/B08HJQ182D'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.amazon.ca/dp/B08HR9D2JS'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1',
model: 'gaming oc',
series: '3090',
url: 'https://www.amazon.ca/dp/B08HJRF2CN'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1',
model: 'eagle oc',
series: '3090',
url: 'https://www.amazon.ca/dp/B08HJPDJTY'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1',
model: 'tuf',
series: '3090',
url: 'https://www.amazon.ca/dp/B08HJGNJ81'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1',
model: 'tuf oc',
series: '3090',
url: 'https://www.amazon.ca/dp/B08HJLLF7G'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amazon.ca/dp/B08166SLDF'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amazon.ca/dp/B0815XFSGK'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amazon.ca/dp/B08164VTWH'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amazon.ca/dp/B0815Y8J9N'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08GSC5D9G&Quantity.1=1',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.amazon.ca/dp/B08GSC5D9G'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08GS1N24H&Quantity.1=1',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.amazon.ca/dp/B08GS1N24H'
}
],
name: 'amazon-ca'
+172 -9
View File
@@ -5,7 +5,10 @@ export const AmazonDe: Store = {
labels: {
captcha: {
container: 'body',
text: ['geben sie die unten angezeigten zeichen ein', 'geben sie die zeichen unten ein']
text: [
'geben sie die unten angezeigten zeichen ein',
'geben sie die zeichen unten ein'
]
},
inStock: {
container: '#desktop_buybox',
@@ -19,339 +22,499 @@ export const AmazonDe: Store = {
links: [
{
brand: 'test:brand',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B083JX52VG&Quantity.1=1',
model: 'test:model',
series: 'test:series',
url: 'https://www.amazon.de/dp/B083JX52VG/'
url: 'https://www.amazon.de/dp/B083JX52VG'
},
{
brand: 'asus',
model: 'rog strix',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1',
model: 'strix',
series: '3080',
url: 'https://www.amazon.de/dp/B08HN7VVLJ'
},
{
brand: 'asus',
model: 'rog strix oc',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1',
model: 'strix oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08HN6KYS3'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1',
model: 'tuf',
series: '3080',
url: 'https://www.amazon.de/dp/B08HN37VQK'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1',
model: 'tuf oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08HN4DSTC'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1',
model: 'ftw3',
series: '3080',
url: 'https://www.amazon.de/dp/B08HGBYWQ6'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.amazon.de/dp/B08HGYXP4C'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1',
model: 'xc3',
series: '3080',
url: 'https://www.amazon.de/dp/B08HGLN78Q'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1',
model: 'xc3 black',
series: '3080',
url: 'https://www.amazon.de/dp/B08HH1BMQQ'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.amazon.de/dp/B08HJ9XFNM'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHLDS72&Quantity.1=1',
model: 'aorus master',
series: '3080',
url: 'https://www.amazon.de/dp/B08KHLDS72'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1',
model: 'eagle oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08HHZVZ3N'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1',
model: 'gaming oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08HLZXHZY'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KH7RL89&Quantity.1=1',
model: 'vision oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08KH7RL89'
},
{
brand: 'inno3d',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JD6QPXD&Quantity.1=1',
model: 'twin x2 oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08JD6QPXD'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1',
model: 'gaming x trio',
series: '3080',
url: 'https://www.amazon.de/dp/B08HM4V2DH'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08HM4M621'
},
{
brand: 'palit',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JCVWTQY&Quantity.1=1',
model: 'gaming pro',
series: '3080',
url: 'https://www.amazon.de/dp/B08JCVWTQY'
},
{
brand: 'palit',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JCKYYL8&Quantity.1=1',
model: 'gaming pro oc',
series: '3080',
url: 'https://www.amazon.de/dp/B08JCKYYL8'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1',
model: 'trinity',
series: '3080',
url: 'https://www.amazon.de/dp/B08HR1NPPQ'
},
{
brand: 'asus',
model: 'rog strix',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN642LY&Quantity.1=1',
model: 'strix',
series: '3090',
url: 'https://www.amazon.de/dp/B08HN642LY'
},
{
brand: 'asus',
model: 'rog strix oc',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN51T8Q&Quantity.1=1',
model: 'strix oc',
series: '3090',
url: 'https://www.amazon.de/dp/B08HN51T8Q'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN4FLFJ&Quantity.1=1',
model: 'tuf',
series: '3090',
url: 'https://www.amazon.de/dp/B08HN4FLFJ'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN5B8FJ&Quantity.1=1',
model: 'tuf oc',
series: '3090',
url: 'https://www.amazon.de/dp/B08HN5B8FJ'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGFNPJQ&Quantity.1=1',
model: 'ftw3',
series: '3090',
url: 'https://www.amazon.de/dp/B08HGFNPJQ'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08J5NMDP7&Quantity.1=1',
model: 'ftw3',
series: '3090',
url: 'https://www.amazon.de/dp/B08J5NMDP7'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGS1SXH&Quantity.1=1',
model: 'ftw3 ultra',
series: '3090',
url: 'https://www.amazon.de/dp/B08HGS1SXH'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGZ4XSZ&Quantity.1=1',
model: 'xc3',
series: '3090',
url: 'https://www.amazon.de/dp/B08HGZ4XSZ'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGKQ527&Quantity.1=1',
model: 'xc3 black',
series: '3090',
url: 'https://www.amazon.de/dp/B08HGKQ527'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGTNDL4&Quantity.1=1',
model: 'xc3 ultra',
series: '3090',
url: 'https://www.amazon.de/dp/B08HGTNDL4'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KH7R4FQ&Quantity.1=1',
model: 'aorus master',
series: '3090',
url: 'https://www.amazon.de/dp/B08KH7R4FQ'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1',
model: 'eagle oc',
series: '3090',
url: 'https://www.amazon.de/dp/B08HJPDJTY'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHKDTSJ&Quantity.1=1',
model: 'turbo',
series: '3090',
url: 'https://www.amazon.de/dp/B08KHKDTSJ'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1',
model: 'gaming oc',
series: '3090',
url: 'https://www.amazon.de/dp/B08HJRF2CN'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1',
model: 'gaming x trio',
series: '3090',
url: 'https://www.amazon.de/dp/B08HRBW6VB'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM661YM&Quantity.1=1',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.amazon.de/dp/B08HM661YM'
},
{
brand: 'palit',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JQQ1VD1&Quantity.1=1',
model: 'gaming pro',
series: '3090',
url: 'https://www.amazon.de/dp/B08JQQ1VD1'
},
{
brand: 'nvidia',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HR6ZBYJ&Quantity.1=1',
model: 'founders edition',
series: '3090',
url: 'https://www.amazon.de/dp/B08HR6ZBYJ'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1',
model: 'trinity',
series: '3090',
url: 'https://www.amazon.de/dp/B08HJQ182D'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HSJ1622&Quantity.1=1',
model: 'dual',
series: '3070',
url: 'https://www.amazon.de/dp/B08HSJ1622'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHFZN9P&Quantity.1=1',
model: 'dual oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08KHFZN9P'
},
{
brand: 'asus',
model: 'rog strix',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HT7PR9Y&Quantity.1=1',
model: 'strix',
series: '3070',
url: 'https://www.amazon.de/dp/B08HT7PR9Y'
},
{
brand: 'asus',
model: 'rog strix oc',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1',
model: 'strix oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08L8JNTXQ'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1',
model: 'ventus 2x oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08KWPDXJZ'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L6PCZTR&Quantity.1=1',
model: 'ventus 3x oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08L6PCZTR'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1',
model: 'gaming x trio',
series: '3070',
url: 'https://www.amazon.de/dp/B08KWN2LZG'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1',
model: 'vision oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08M13DXSZ'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHL21CV&Quantity.1=1',
model: 'gaming oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08KHL21CV'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHL2J5X&Quantity.1=1',
model: 'eagle oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08KHL2J5X'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3QCZKZ&Quantity.1=1',
model: 'xc3 black',
series: '3070',
url: 'https://www.amazon.de/dp/B08L3QCZKZ'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3QZP7W&Quantity.1=1',
model: 'xc3',
series: '3070',
url: 'https://www.amazon.de/dp/B08L3QZP7W'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3Q41SM&Quantity.1=1',
model: 'xc3 ultra',
series: '3070',
url: 'https://www.amazon.de/dp/B08L3Q41SM'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HRBR7K9&Quantity.1=1',
model: 'twin edge',
series: '3070',
url: 'https://www.amazon.de/dp/B08HRBR7K9'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08LBVNKT1&Quantity.1=1',
model: 'twin edge oc',
series: '3070',
url: 'https://www.amazon.de/dp/B08LBVNKT1'
},
{
brand: 'pny',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1',
model: 'dual fan',
series: '3070',
url: 'https://www.amazon.de/dp/B08HBF5L3K'
},
{
brand: 'pny',
model: 'xlr8 rgb',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1',
model: 'xlr8 revel',
series: '3070',
url: 'https://www.amazon.de/dp/B08HBJB7YD'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amazon.de/dp/B08166SLDF'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amazon.de/dp/B0815XFSGK'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amazon.de/dp/B08164VTWH'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amazon.de/dp/B0815Y8J9N'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H93ZRK9&Quantity.1=1',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.amazon.de/dp/B08H93ZRK9'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H98GVK8&Quantity.1=1',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.amazon.de/dp/B08H98GVK8'
}
],
name: 'amazon-de'
+62 -2
View File
@@ -18,87 +18,147 @@ export const AmazonEs: Store = {
links: [
{
brand: 'test:brand',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B083JX52VG&Quantity.1=1',
model: 'test:model',
series: 'test:series',
url: 'https://www.amazon.es/dp/B083JX52VG/'
url: 'https://www.amazon.es/dp/B083JX52VG'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1',
model: 'gaming x trio',
series: '3080',
url: 'https://www.amazon.es/dp/B08HM4V2DH'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.amazon.es/dp/B08HGYXP4C'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.amazon.es/dp/B08HJ9XFNM'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1',
model: 'ftw3',
series: '3080',
url: 'https://www.amazon.es/dp/B08HGBYWQ6'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1',
model: 'xc3',
series: '3080',
url: 'https://www.amazon.es/dp/B08HGLN78Q'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1',
model: 'xc3 black',
series: '3080',
url: 'https://www.amazon.es/dp/B08HH1BMQQ'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1',
model: 'gaming oc',
series: '3080',
url: 'https://www.amazon.es/dp/B08HLZXHZY'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1',
model: 'eagle oc',
series: '3080',
url: 'https://www.amazon.es/dp/B08HHZVZ3N'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1',
model: 'tuf',
series: '3080',
url: 'https://www.amazon.es/dp/B08HN37VQK'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1',
model: 'tuf oc',
series: '3080',
url: 'https://www.amazon.es/dp/B08HN4DSTC'
},
{
brand: 'asus',
model: 'rog strix oc',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1',
model: 'strix oc',
series: '3080',
url: 'https://www.amazon.es/dp/B08HN6KYS3'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.amazon.es/dp/B08HM4M621'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1',
model: 'trinity',
series: '3080',
url: 'https://www.amazon.es/dp/B08HR1NPPQ'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amazon.es/dp/B08166SLDF'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amazon.es/dp/B0815XFSGK'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amazon.es/dp/B08164VTWH'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amazon.es/dp/B0815Y8J9N'
}
],
name: 'amazon-es'
+171
View File
@@ -0,0 +1,171 @@
import {Store} from './store';
export const AmazonFr: Store = {
labels: {
captcha: {
container: 'body',
text: ['entrez les caractères que vous voyez ci-dessous']
},
inStock: {
container: '#desktop_buybox',
text: ['ajouter au panier']
},
maxPrice: {
container: 'span[class*="PriceString"]',
euroFormat: false
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.amazon.fr/dp/B07PBLD2MX'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HR7SV3M'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HR5SXPS'
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HR3DPGW'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HR3Y5GQ'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HR55YB5'
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HR4RJ3Q'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HR6FMF3'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HJTH61J'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HJS2JLJ'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HHDP9DW'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HH5WF97'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.amazon.fr/dp/B08HJNKT3P'
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url: 'https://www.amazon.fr/dp/B08HJQ182D'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.amazon.fr/dp/B08HR9D2JS'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url: 'https://www.amazon.fr/dp/B08HJRF2CN'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url: 'https://www.amazon.fr/dp/B08HJPDJTY'
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.amazon.fr/dp/B08HJGNJ81'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url: 'https://www.amazon.fr/dp/B08HJLLF7G'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amazon.fr/dp/B08166SLDF'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amazon.fr/dp/B0815XFSGK'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amazon.fr/dp/B08164VTWH'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amazon.fr/dp/B0815Y8J9N'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.amazon.fr/dp/B08GSC5D9G'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.amazon.fr/dp/B08GS1N24H'
}
],
name: 'amazon-fr'
};
+51 -2
View File
@@ -8,7 +8,12 @@ export const AmazonNl: Store = {
},
inStock: {
container: '#availability',
text: ['op voorraad', 'verkrijgbaar vanaf', 'wordt gewoonlijk verzonden binnen', 'nog slechts']
text: [
'op voorraad',
'verkrijgbaar vanaf',
'wordt gewoonlijk verzonden binnen',
'nog slechts'
]
},
maxPrice: {
container: 'span[class*="PriceString"]',
@@ -28,39 +33,83 @@ export const AmazonNl: Store = {
links: [
{
brand: 'test:brand',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B083GGYNQ6&Quantity.1=1',
model: 'test:model',
series: 'test:series',
url: 'https://www.amazon.nl/dp/B083GGYNQ6'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.amazon.nl/dp/B08HM4M621'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1',
model: 'gaming x trio',
series: '3080',
url: 'https://www.amazon.nl/dp/B08HM4V2DH'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.amazon.nl/dp/B08HJ9XFNM'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1',
model: 'xc3 black',
series: '3080',
url: 'https://www.amazon.nl/dp/B08HH1BMQQ'
},
{
brand: 'asus',
model: 'rog strix',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1',
model: 'strix',
series: '3080',
url: 'https://www.amazon.nl/dp/B08HN7VVLJ'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amazon.nl/dp/B08166SLDF'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amazon.nl/dp/B0815XFSGK'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amazon.nl/dp/B08164VTWH'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amazon.nl/dp/B0815Y8J9N'
}
],
name: 'amazon-nl'
+25 -4
View File
@@ -30,15 +30,34 @@ export const AmazonUk: Store = {
links: [
{
brand: 'test:brand',
cartUrl: 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B081265T5Z&Quantity.1=1',
cartUrl:
'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B081265T5Z&Quantity.1=1',
model: 'test:model',
series: 'test:series',
url: 'https://www.amazon.co.uk/dp/B081265T5Z/'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.amazon.com/dp/B08FC5L3RG'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08H97NYGP&Quantity.1=1',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.amazon.co.uk/dp/B08H97NYGP/'
}
],
linksBuilder: {
builder: (docElement, series) => {
const productElements = docElement.find('.s-result-list .s-result-item[data-asin]');
const productElements = docElement.find(
'.s-result-list .s-result-item[data-asin]'
);
const links: Link[] = [];
for (let i = 0; i < productElements.length; i++) {
const productElement = productElements.eq(i);
@@ -49,7 +68,9 @@ export const AmazonUk: Store = {
}
const url = `https://www.amazon.co.uk/dp/${asin}/`;
const titleElement = productElement.find('.sg-col-inner h2 a.a-text-normal[href] span').first();
const titleElement = productElement
.find('.sg-col-inner h2 a.a-text-normal[href] span')
.first();
const title = titleElement.text().trim();
if (!title || !new RegExp(`RTX.*${series}`, 'i').exec(title)) {
@@ -67,7 +88,7 @@ export const AmazonUk: Store = {
url
});
} else {
logger.error(`Failed to parse card: ${title}`);
logger.error(`Failed to parse card: ${title}`, {url});
}
}
+343 -32
View File
@@ -1,6 +1,7 @@
import {Store} from './store';
export const Amazon: Store = {
backoffStatusCodes: [403, 429, 503],
labels: {
captcha: {
container: 'body',
@@ -17,185 +18,495 @@ export const Amazon: Store = {
links: [
{
brand: 'test:brand',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07TDN1SC5&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07TDN1SC5&Quantity.1=1',
model: 'test:model',
series: 'test:series',
url: 'https://www.amazon.com/dp/B07TDN1SC5'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8LG4M3&Quantity.1=1',
model: 'dual',
series: '3070',
url: 'https://www.amazon.com/dp/B08L8LG4M3'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1',
model: 'dual',
series: '3070',
url: 'https://www.amazon.com/dp/B08L8HPKR6'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1',
model: 'xc3 black',
series: '3070',
url: 'https://www.amazon.com/dp/B08LW46GH2'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1',
model: 'strix',
series: '3070',
url: 'https://www.amazon.com/dp/B08L8JNTXQ'
},
{
brand: 'asus',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1',
model: 'tuf',
series: '3070',
url: 'https://www.amazon.com/dp/B08L8KC1J7'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1',
model: 'gaming oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08KY266MG'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1',
model: 'gaming',
series: '3070',
url: 'https://www.amazon.com/dp/B08KWN2LZG'
},
{
brand: 'pny',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1',
model: 'xlr8',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1',
model: 'xlr8 revel',
series: '3070',
url: 'https://www.amazon.com/dp/B08HBJB7YD'
},
{
brand: 'pny',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1',
model: 'xlr8 uprising',
series: '3070',
url: 'https://www.amazon.com/dp/B08HBF5L3K'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1',
model: 'ventus 2x oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08KWPDXJZ'
},
{
brand: 'msi',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1',
model: 'ventus 3x oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08KWLMZV4'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LF1CWT2&Quantity.1=1',
model: 'twin edge oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08LF1CWT2'
},
{
brand: 'zotac',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1',
model: 'gaming',
series: '3070',
url: 'https://www.amazon.com/dp/B08LF32LJ6'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1',
model: 'xc3 ultra',
series: '3070',
url: 'https://www.amazon.com/dp/B08L8L71SM'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1',
model: 'ftw3',
series: '3070',
url: 'https://www.amazon.com/dp/B08L8L9TCZ'
},
{
brand: 'evga',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1',
model: 'xc3 black',
series: '3070',
url: 'https://www.amazon.com/dp/B08LW46GH2'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1',
model: 'gaming oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08KY266MG'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1',
model: 'vision oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08M13DXSZ'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08M4YFNX2&Quantity.1=1',
model: 'gaming oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08M4YFNX2'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1',
model: 'eagle',
series: '3070',
url: 'https://www.amazon.com/dp/B08KXZV626'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY322TH&Quantity.1=1',
model: 'eagle oc',
series: '3070',
url: 'https://www.amazon.com/dp/B08KY322TH'
},
{
brand: 'pny',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.amazon.com/dp/B08HBR7QBM'
},
{
brand: 'pny',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1',
model: 'xlr8 rgb',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.amazon.com/dp/B08HBTJMLJ'
},
{
brand: 'msi',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1',
model: 'gaming x trio',
series: '3080',
url: 'https://www.amazon.com/dp/B08HR7SV3M'
},
{
brand: 'evga',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.amazon.com/dp/B08HR3Y5GQ'
},
{
brand: 'evga',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.amazon.com/dp/B08HR55YB5'
},
{
brand: 'evga',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1',
model: 'ftw3',
series: '3080',
url: 'https://www.amazon.com/dp/B08HR3DPGW'
},
{
brand: 'evga',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1',
model: 'xc3',
series: '3080',
url: 'https://www.amazon.com/dp/B08HR4RJ3Q'
},
{
brand: 'evga',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1',
model: 'xc3 black',
series: '3080',
url: 'https://www.amazon.com/dp/B08HR6FMF3'
},
{
brand: 'gigabyte',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1',
model: 'gaming oc',
series: '3080',
url: 'https://www.amazon.com/dp/B08HJTH61J'
},
{
brand: 'gigabyte',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1',
model: 'eagle oc',
series: '3080',
url: 'https://www.amazon.com/dp/B08HJS2JLJ'
},
{
brand: 'asus',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1',
model: 'tuf oc',
series: '3080',
url: 'https://www.amazon.com/dp/B08HH5WF97'
},
{
brand: 'asus',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1',
model: 'tuf',
series: '3080',
url: 'https://www.amazon.com/dp/B08HHDP9DW'
},
{
brand: 'asus',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1',
model: 'rog strix oc',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1',
model: 'strix oc',
series: '3080',
url: 'https://www.amazon.com/dp/B08J6F174Z'
},
{
brand: 'asus',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1',
model: 'rog strix oc',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1',
model: 'strix oc',
series: '3090',
url: 'https://www.amazon.com/dp/B08J6GMWCQ'
},
{
brand: 'msi',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.amazon.com/dp/B08HR5SXPS'
},
{
brand: 'zotac',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1',
model: 'trinity',
series: '3080',
url: 'https://www.amazon.com/dp/B08HJNKT3P'
},
{
brand: 'zotac',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1',
model: 'trinity',
series: '3090',
url: 'https://www.amazon.com/dp/B08HJQ182D'
},
{
brand: 'pny',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1',
model: 'xlr8',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.amazon.com/dp/B08HBQWBHH'
},
{
brand: 'pny',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1',
model: 'xlr8',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.amazon.com/dp/B08HBVX53D'
},
{
brand: 'msi',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1',
model: 'gaming x trio',
series: '3090',
url: 'https://www.amazon.com/dp/B08HRBW6VB'
},
{
brand: 'msi',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1',
model: 'ventus 3x',
series: '3090',
url: 'https://www.amazon.com/dp/B08HR9D2JS'
},
{
brand: 'gigabyte',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1',
model: 'gaming oc',
series: '3090',
url: 'https://www.amazon.com/dp/B08HJRF2CN'
},
{
brand: 'gigabyte',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1',
model: 'eagle oc',
series: '3090',
url: 'https://www.amazon.com/dp/B08HJPDJTY'
},
{
brand: 'asus',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1',
model: 'tuf oc',
series: '3090',
url: 'https://www.amazon.com/dp/B08HJGNJ81'
},
{
brand: 'asus',
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1',
model: 'tuf oc',
series: '3090',
url: 'https://www.amazon.com/dp/B08HJLLF7G'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amazon.com/dp/B08166SLDF'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amazon.com/dp/product/B0815XFSGK'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amazon.com/dp/B08164VTWH'
},
{
brand: 'amd',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amazon.com/dp/B0815Y8J9N'
},
{
brand: 'gigabyte',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NS4W2ZY&Quantity.1=1',
model: 'amd reference',
series: 'rx6800xt',
url: 'https://www.amazon.com/dp/B08NS4W2ZY'
},
{
brand: 'sapphire',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MVC76SR&Quantity.1=1',
model: 'amd reference',
series: 'rx6800xt',
url: 'https://www.amazon.com/dp/B08MVC76SR'
},
{
brand: 'xfx',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08N6ZLX9B&Quantity.1=1',
model: 'amd reference',
series: 'rx6800xt',
url: 'https://www.amazon.com/dp/B08N6ZLX9B'
},
{
brand: 'powercolor',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MNZM5TK&Quantity.1=1',
model: 'amd reference',
series: 'rx6800',
url: 'https://www.amazon.com/dp/B08MNZM5TK'
},
{
brand: 'sapphire',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MVCLBWK&Quantity.1=1',
model: 'amd reference',
series: 'rx6800',
url: 'https://www.amazon.com/dp/B08MVCLBWK'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.amazon.com/dp/B08FC5L3RG'
},
{
brand: 'sony',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC6MR62&Quantity.1=1',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.amazon.com/dp/B08FC6MR62'
},
{
brand: 'microsoft',
model: 'xbox series x',
series: 'xboxsx',
url: 'https://www.amazon.com/dp/B08H75RTZ8'
},
{
brand: 'microsoft',
model: 'xbox series s',
series: 'xboxss',
url: 'https://www.amazon.com/dp/B08G9J44ZN'
},
{
brand: 'corsair',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07M63H81H&Quantity.1=1',
model: '750 platinum',
series: 'sf',
url: 'https://www.amazon.com/dp/B07M63H81H'
},
{
brand: 'corsair',
cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07F84FJ1G&Quantity.1=1',
model: '600 platinum',
series: 'sf',
url: 'https://www.amazon.com/dp/B07F84FJ1G'
}
],
name: 'amazon'
+55
View File
@@ -0,0 +1,55 @@
import {Store} from './store';
export const AmdDe: Store = {
labels: {
inStock: {
container: '.btn-shopping-cart',
text: ['add to cart']
},
maxPrice: {
container: '.product-page-description h4',
euroFormat: true
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.amd.com/de/direct-buy/5450881400/de'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/de/direct-buy/5450881400/de?add-to-cart=true',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amd.com/de/direct-buy/5450881400/de'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/de/direct-buy/5450881500/de?add-to-cart=true',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amd.com/de/direct-buy/5450881500/de'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/de/direct-buy/5450881600/de?add-to-cart=true',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amd.com/de/direct-buy/5450881600/de'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/de/direct-buy/5450881700/de?add-to-cart=true',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amd.com/de/direct-buy/5450881700/de'
}
],
name: 'amd-de'
};
+63
View File
@@ -0,0 +1,63 @@
import {Store} from './store';
export const Amd: Store = {
labels: {
inStock: {
container: '.btn-shopping-cart',
text: ['add to cart']
},
maxPrice: {
container: '.product-page-description h4',
euroFormat: false
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.amd.com/en/direct-buy/5450881400/us'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/en/direct-buy/5450881400/us?add-to-cart=true',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.amd.com/en/direct-buy/5450881400/us'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/en/direct-buy/5450881500/us?add-to-cart=true',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.amd.com/en/direct-buy/5450881500/us'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/en/direct-buy/5450881600/us?add-to-cart=true',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.amd.com/en/direct-buy/5450881600/us'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/en/direct-buy/5450881700/us?add-to-cart=true',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.amd.com/en/direct-buy/5450881700/us'
},
{
brand: 'amd',
cartUrl:
'https://www.amd.com/en/direct-buy/5458372800/us?add-to-cart=true',
model: 'amd reference',
series: 'rx6800xt',
url: 'https://www.amd.com/en/direct-buy/5458372800/us'
}
],
name: 'amd'
};
+14 -4
View File
@@ -9,7 +9,7 @@ export const Aria: Store = {
},
maxPrice: {
container: '.priceBig',
euroFormat: false // Note: Aria uses non-euroFromat as price seperator
euroFormat: false // Note: Aria uses non-euroFromat as price seperator
},
outOfStock: {
container: '.fBox',
@@ -21,7 +21,15 @@ export const Aria: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+2060+Super/Gigabyte+NVIDIA+GeForce+RTX+2060+SUPER+8GB+WINDFORCE+OC+Turing+Graphics+Card+%2B+RTX+Bundle%21?productId=71541'
url:
'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+2060+Super/Gigabyte+NVIDIA+GeForce+RTX+2060+SUPER+8GB+WINDFORCE+OC+Turing+Graphics+Card+%2B+RTX+Bundle%21?productId=71541'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.aria.co.uk/Products/Components/Processors/AMD+CPUs/Ryzen+9+-+Socket+AM4/AMD+Ryzen+9+5950X+16+Core+AM4+CPU%2FProcessor?productId=72868'
}
],
linksBuilder: {
@@ -33,11 +41,13 @@ export const Aria: Store = {
urls: [
{
series: '3080',
url: 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3080'
url:
'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3080'
},
{
series: '3090',
url: 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3090'
url:
'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3090'
}
]
},
+140
View File
@@ -0,0 +1,140 @@
import {Store} from './store';
export const Arlt: Store = {
labels: {
inStock: {
container: '.articleDesc .shippingtext',
text: ['auf Lager', 'Lieferzeit 2-3 Werktage', 'Ware im Zulauf']
},
maxPrice: {
container: '.articleprice .price',
euroFormat: true
},
outOfStock: {
container: '.articleDesc .shippingtext',
text: ['Neuer Artikel in Kürze verfügbar', 'Liefertermin unbekannt']
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.arlt.com/ASUS-GeForce-GTX1650-Super-TUF-GTX1650S-O4G-GAMING.html'
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url:
'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-Dual-GeForce-RTX-3070.html'
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/ASUS-Dual-GeForce-RTX-3070-OC.html'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3070',
url:
'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-TUF-Gaming-GeForce-RTX-3070-OC.html'
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3070/ASUS-ROG-Strix-GeForce-RTX-3070.html'
},
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3070',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3070/MSI-GeForce-RTX-3070-Ventus-2X-OC.html'
},
{
brand: 'gainward',
model: 'phoenix',
series: '3070',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/Gainward-GeForce-RTX-3070-Phoenix.html'
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3070',
url:
'https://www.arlt.com/Gaming/Gaming-Hardware/Gainward-GeForce-RTX-3070-Phoenix-GS.html'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/ASUS-TUF-Gaming-GeForce-RTX-3080-OC.html'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3080/MSI-GeForce-RTX-3080-Ventus-3X-OC.html'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3090/ASUS-TUF-Gaming-GeForce-RTX-3090-OC.html'
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3090/ASUS-ROG-Strix-GeForce-RTX-3090-OC.html'
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3090',
url:
'https://www.arlt.com/Gaming/Gaming-Hardware/Gainward-GeForce-RTX-3090-Phoenix-GS.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-5-5600X-boxed.html'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-7-5800X-boxed.html'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-9-5900X-boxed.html'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-9-5950X-boxed.html'
}
],
name: 'arlt'
};
+22 -13
View File
@@ -12,55 +12,64 @@ export const AsusDe: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2766/asus-rog-strix-rtx2060s-o8g-evo-v2-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2766/asus-rog-strix-rtx2060s-o8g-evo-v2-gaming'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2828/asus-rog-strix-rtx3080-10g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2828/asus-rog-strix-rtx3080-10g-gaming'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2829/asus-rog-strix-rtx3080-o10g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2829/asus-rog-strix-rtx3080-o10g-gaming'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2824/asus-tuf-rtx3080-10g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2824/asus-tuf-rtx3080-10g-gaming'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2825/asus-tuf-rtx3080-o10g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2825/asus-tuf-rtx3080-o10g-gaming'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2826/asus-rog-strix-rtx3090-24g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2826/asus-rog-strix-rtx3090-24g-gaming'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2827/asus-rog-strix-rtx3090-o24g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2827/asus-rog-strix-rtx3090-o24g-gaming'
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2822/asus-tuf-rtx3090-24g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2822/asus-tuf-rtx3090-24g-gaming'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2823/asus-tuf-rtx3090-o24g-gaming'
url:
'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2823/asus-tuf-rtx3090-o24g-gaming'
}
],
name: 'asus-de'
+32 -2
View File
@@ -1,6 +1,8 @@
import {Store} from './store';
import fetch from 'node-fetch';
export const Asus: Store = {
backoffStatusCodes: [403, 429, 503],
labels: {
inStock: {
container: '#item_add_cart',
@@ -10,41 +12,69 @@ export const Asus: Store = {
links: [
{
brand: 'test:brand',
itemNumber: '202007AM020000005',
model: 'test:model',
series: 'test:series',
url: 'https://store.asus.com/us/item/202003AM280000002'
url: 'https://store.asus.com/us/item/202007AM020000005'
},
{
brand: 'asus',
itemNumber: '202009AM160000001',
model: 'tuf oc',
series: '3080',
url: 'https://store.asus.com/us/item/202009AM160000001'
},
{
brand: 'asus',
itemNumber: '202009AM150000004',
model: 'tuf',
series: '3080',
url: 'https://store.asus.com/us/item/202009AM150000004'
},
{
brand: 'asus',
itemNumber: '202009AM150000003',
model: 'tuf',
series: '3090',
url: 'https://store.asus.com/us/item/202009AM150000003'
},
{
brand: 'asus',
itemNumber: '202009AM150000001',
model: 'tuf oc',
series: '3090',
url: 'https://store.asus.com/us/item/202009AM150000001'
},
{
brand: 'asus',
model: 'rog strix oc',
itemNumber: '202009AM290000002',
model: 'strix oc',
series: '3080',
url: 'https://store.asus.com/us/item/202009AM290000002'
}
],
name: 'asus',
realTimeInventoryLookup: async (itemNumber: string) => {
const request_url = 'https://store.asus.com/us/category/get_real_time_data';
const response = await fetch(request_url, {
body: 'sm_seq_list%5B%5D=' + itemNumber,
headers: {
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
method: 'POST'
});
const response_json = await response.json();
if (response_json.data[itemNumber] !== undefined) {
const item_info = response_json.data[itemNumber].market_info;
if (item_info.buy === true || item_info.quantity > 0) {
return true;
}
}
return false;
},
successStatusCodes: [[0, 399], 404]
};
+53 -29
View File
@@ -20,145 +20,169 @@ export const Azerty: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://azerty.nl/product/gigabyte/3756757/geforce-rtx-2060-oc-6g-grafische-kaart-geforce-rtx-2060'
url:
'https://azerty.nl/product/gigabyte/3756757/geforce-rtx-2060-oc-6g-grafische-kaart-geforce-rtx-2060'
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://azerty.nl/product/gigabyte/4349658/aorus-geforce-rtx-3080-xtreme-10g-grafische-kaart-gf-rtx-3080'
url:
'https://azerty.nl/product/gigabyte/4349658/aorus-geforce-rtx-3080-xtreme-10g-grafische-kaart-gf-rtx-3080'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://azerty.nl/product/msi/4346262/geforce-rtx-3080-ventus-3x-10g-oc-grafische-kaart-rtx-3080'
url:
'https://azerty.nl/product/msi/4346262/geforce-rtx-3080-ventus-3x-10g-oc-grafische-kaart-rtx-3080'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://azerty.nl/product/asus/4346679/tuf-gaming-geforce-rtx-3080-grafische-kaart-gf-rtx-3080'
url:
'https://azerty.nl/product/asus/4346679/tuf-gaming-geforce-rtx-3080-grafische-kaart-gf-rtx-3080'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://azerty.nl/product/msi/4346263/geforce-rtx-3080-gaming-x-trio-10g-grafische-kaart-rtx-3080'
url:
'https://azerty.nl/product/msi/4346263/geforce-rtx-3080-gaming-x-trio-10g-grafische-kaart-rtx-3080'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://azerty.nl/product/asus/4348176/tuf-gaming-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080'
url:
'https://azerty.nl/product/asus/4348176/tuf-gaming-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://azerty.nl/product/asus/4348174/rog-strix-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080'
url:
'https://azerty.nl/product/asus/4348174/rog-strix-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://azerty.nl/product/zotac/4352301/gaming-geforce-rtx-3080-trinity-oc-grafische-kaart-gf-rtx-3080'
url:
'https://azerty.nl/product/zotac/4352301/gaming-geforce-rtx-3080-trinity-oc-grafische-kaart-gf-rtx-3080'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://azerty.nl/product/gigabyte/4349651/aorus-geforce-rtx-3080-master-10g-grafische-kaart-gf-rtx-3080'
url:
'https://azerty.nl/product/gigabyte/4349651/aorus-geforce-rtx-3080-master-10g-grafische-kaart-gf-rtx-3080'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://azerty.nl/product/pny/4342269/geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-triple-fan-gaming-edition-grafische-kaart-gf-rtx-3080'
url:
'https://azerty.nl/product/pny/4342269/geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-triple-fan-gaming-edition-grafische-kaart-gf-rtx-3080'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3070',
url: 'https://azerty.nl/product/asus/4363892/rog-strix-gaming-geforce-rtx-3070-o8g-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/asus/4363892/rog-strix-gaming-geforce-rtx-3070-o8g-videokaart-8-gb-gddr6'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3070',
url: 'https://azerty.nl/product/asus/4373096/rog-strix-gaming-geforce-rtx-3070-8g-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/asus/4373096/rog-strix-gaming-geforce-rtx-3070-8g-videokaart-8-gb-gddr6'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3070',
url: 'https://azerty.nl/product/asus/4363910/tuf-gaming-geforce-rtx-3070-oc-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/asus/4363910/tuf-gaming-geforce-rtx-3070-oc-videokaart-8-gb-gddr6'
},
{
brand: 'asus',
model: 'tuf',
series: '3070',
url: 'https://azerty.nl/product/asus/4373099/tuf-gaming-geforce-rtx-3070-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/asus/4373099/tuf-gaming-geforce-rtx-3070-videokaart-8-gb-gddr6'
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3070',
url: 'https://azerty.nl/product/inno3d/4369725/geforce-rtx-3070-ichill-x4-videokaart-8-gb-ddr6'
url:
'https://azerty.nl/product/inno3d/4369725/geforce-rtx-3070-ichill-x4-videokaart-8-gb-ddr6'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3070',
url: 'https://azerty.nl/product/inno3d/4369726/geforce-rtx-3070-ichill-x3-videokaart-8-gb-ddr6'
url:
'https://azerty.nl/product/inno3d/4369726/geforce-rtx-3070-ichill-x3-videokaart-8-gb-ddr6'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3070',
url: 'https://azerty.nl/product/msi/4374747/geforce-rtx-3070-ventus-3x-oc-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/msi/4374747/geforce-rtx-3070-ventus-3x-oc-videokaart-8-gb-gddr6'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url: 'https://azerty.nl/product/msi/4365398/geforce-rtx-3070-gaming-x-trio-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/msi/4365398/geforce-rtx-3070-gaming-x-trio-videokaart-8-gb-gddr6'
},
{
brand: 'pny',
model: 'dual fan',
series: '3070',
url: 'https://azerty.nl/product/pny/4342270/uprising-dual-fan-geforce-rtx-3070'
url:
'https://azerty.nl/product/pny/4342270/uprising-dual-fan-geforce-rtx-3070'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3070',
url: 'https://azerty.nl/product/pny/4342271/epic-x-rgb-geforce-rtx-3070-triple-fan-gaming-edition-xlr8--videokaart-8-gb-gddr6x'
url:
'https://azerty.nl/product/pny/4342271/epic-x-rgb-geforce-rtx-3070-triple-fan-gaming-edition-xlr8--videokaart-8-gb-gddr6x'
},
{
brand: 'evga',
model: 'ftw3',
series: '3070',
url: 'https://azerty.nl/product/evga/4377247/geforce-rtx-3070-ftw3-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/evga/4377247/geforce-rtx-3070-ftw3-videokaart-8-gb-gddr6'
},
{
brand: 'evga',
model: 'xc3',
series: '3070',
url: 'https://azerty.nl/product/evga/4377248/xc3-geforce-rtx-3070-xc3-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/evga/4377248/xc3-geforce-rtx-3070-xc3-videokaart-8-gb-gddr6'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3070',
url: 'https://azerty.nl/product/evga/4377250/ftw3-ultra-geforce-rtx-3070-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/evga/4377250/ftw3-ultra-geforce-rtx-3070-videokaart-8-gb-gddr6'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3070',
url: 'https://azerty.nl/product/evga/4377252/xc3-black-geforce-rtx-3070-videokaart-8-gb-gddr6'
url:
'https://azerty.nl/product/evga/4377252/xc3-black-geforce-rtx-3070-videokaart-8-gb-gddr6'
}
],
name: 'azerty'
+95 -16
View File
@@ -17,7 +17,29 @@ export const BAndH: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.bhphotovideo.com/c/product/1452927-REG/evga_06g_p4_2063_kr_geforce_rtx_2060_xc.html'
url:
'https://www.bhphotovideo.com/c/product/1452927-REG/evga_06g_p4_2063_kr_geforce_rtx_2060_xc.html'
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url:
'https://www.bhphotovideo.com/c/product/1602755-REG/asus_dualrtx30708g_geforce_rtx_3070_8g.html'
},
{
brand: 'pny',
model: 'dual fan',
series: '3070',
url:
'https://www.bhphotovideo.com/c/product/1595984-REG/pny_technologies_vcg30708tfxppb_geforce_rtx_3070_epic_x.html'
},
{
brand: 'asus',
model: 'strix oc',
series: '3070',
url:
'https://www.bhphotovideo.com/c/product/1602756-REG/asus_strixrtx3070o8_rog_strix_geforce_rtx.html'
},
// TUF was removed from BH, not sure why so commenting out listing for now
// {
@@ -30,13 +52,15 @@ export const BAndH: Store = {
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.bhphotovideo.com/c/product/1593333-REG/gigabyte_gv_n3080gaming_oc_10gd_geforce_rtx_3080_gaming.html'
url:
'https://www.bhphotovideo.com/c/product/1593333-REG/gigabyte_gv_n3080gaming_oc_10gd_geforce_rtx_3080_gaming.html'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.bhphotovideo.com/c/product/1592969-REG/zotac_zt_a30800d_10p_gaming_geforce_rtx_3080.html'
url:
'https://www.bhphotovideo.com/c/product/1592969-REG/zotac_zt_a30800d_10p_gaming_geforce_rtx_3080.html'
},
// TUF was removed from BH, not sure why so commenting out listing for now
// {
@@ -49,79 +73,134 @@ export const BAndH: Store = {
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.bhphotovideo.com/c/product/1593996-REG/msi_g3080gxt10_geforce_rtx_3080_gaming.html'
url:
'https://www.bhphotovideo.com/c/product/1593996-REG/msi_g3080gxt10_geforce_rtx_3080_gaming.html'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.bhphotovideo.com/c/product/1593997-REG/msi_g3080v3x10c_geforce_rtx_3080_ventus.html'
url:
'https://www.bhphotovideo.com/c/product/1593997-REG/msi_g3080v3x10c_geforce_rtx_3080_ventus.html'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.bhphotovideo.com/c/product/1593645-REG/msi_geforce_rtx_3080_gaming.html'
url:
'https://www.bhphotovideo.com/c/product/1593645-REG/msi_geforce_rtx_3080_gaming.html'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.bhphotovideo.com/c/product/1593646-REG/msi_geforce_rtx_3080_ventus.html'
url:
'https://www.bhphotovideo.com/c/product/1593646-REG/msi_geforce_rtx_3080_ventus.html'
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1592970-REG/zotac_zt_a30900d_10p_gaming_geforce_rtx_3090.html'
url:
'https://www.bhphotovideo.com/c/product/1592970-REG/zotac_zt_a30900d_10p_gaming_geforce_rtx_3090.html'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1593647-REG/msi_geforce_rtx_3090_gaming.html'
url:
'https://www.bhphotovideo.com/c/product/1593647-REG/msi_geforce_rtx_3090_gaming.html'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1593994-REG/msi_g3090gxt24_geforce_rtx_3090_gaming.html'
url:
'https://www.bhphotovideo.com/c/product/1593994-REG/msi_g3090gxt24_geforce_rtx_3090_gaming.html'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1593648-REG/msi_geforce_rtx_3090_ventus.html'
url:
'https://www.bhphotovideo.com/c/product/1593648-REG/msi_geforce_rtx_3090_ventus.html'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1593995-REG/msi_g3090v3x24c_geforce_rtx_3090_ventus.html'
url:
'https://www.bhphotovideo.com/c/product/1593995-REG/msi_g3090v3x24c_geforce_rtx_3090_ventus.html'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1593334-REG/gigabyte_gv_n3090eagle_oc_24gd_geforce_rtx_3090_eagle.html'
url:
'https://www.bhphotovideo.com/c/product/1593334-REG/gigabyte_gv_n3090eagle_oc_24gd_geforce_rtx_3090_eagle.html'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1593335-REG/gigabyte_gv_n3090gaming_oc_24gd_geforce_rtx3090_gaming_oc.html'
url:
'https://www.bhphotovideo.com/c/product/1593335-REG/gigabyte_gv_n3090gaming_oc_24gd_geforce_rtx3090_gaming_oc.html'
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1594454-REG/asus_90yv0fd0_m0am00_tuf_gaming_geforce_rtx.html'
url:
'https://www.bhphotovideo.com/c/product/1594454-REG/asus_90yv0fd0_m0am00_tuf_gaming_geforce_rtx.html'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url: 'https://www.bhphotovideo.com/c/product/1594451-REG/asus_90yv0fd1_m0am00_tuf_gaming_geforce_rtx.html'
url:
'https://www.bhphotovideo.com/c/product/1594451-REG/asus_90yv0fd1_m0am00_tuf_gaming_geforce_rtx.html'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.bhphotovideo.com/c/product/1598372-REG/amd_100_100000059wof_ryzen_9_5950x_3_4.html'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.bhphotovideo.com/c/product/1598373-REG/amd_100_100000061wof_ryzen_9_5900x_3_7.html'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.bhphotovideo.com/c/product/1598376-REG/amd_100_100000063wof_ryzen_7_5800x_3_8.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.bhphotovideo.com/c/product/1598377-REG/amd_100_100000065box_ryzen_5_5600x_3_7.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.bhphotovideo.com/c/product/1598377-REG/amd_100_100000065box_ryzen_5_5600x_3_7.html'
},
{
brand: 'corsair',
model: '750 platinum',
series: 'sf',
url:
'https://www.bhphotovideo.com/c/product/1560680-REG/corsair_cp_9020186_na_corsair_sf750_power_supply.html'
}
],
name: 'bandh'
+34 -19
View File
@@ -3,11 +3,12 @@ import {Store} from './store';
export const BestBuyCa: Store = {
labels: {
inStock: {
container: '#root',
text: ['available online']
container: '.x-product-detail-page .addToCartButton:enabled',
text: ['Add to Cart']
},
maxPrice: {
container: 'div[class^="productPricingContainer"] span[class^="screenReaderOnly_"',
container:
'div[class^="productPricingContainer"] span[class^="screenReaderOnly_"',
euroFormat: false
}
},
@@ -16,85 +17,99 @@ export const BestBuyCa: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-2060-super-gaming-x-8gb-gddr6-video-card/14419420?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-2060-super-gaming-x-8gb-gddr6-video-card/14419420?intl=nosplash'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3080-trinity-10gb-gddr6x-video-card/14953249?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3080-trinity-10gb-gddr6x-video-card/14953249?intl=nosplash'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3080',
url: 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3080-ventus-3x-10gb-gddr6x-video-card/14950588?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3080-ventus-3x-10gb-gddr6x-video-card/14950588?intl=nosplash'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-video-card/14961449?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-video-card/14961449?intl=nosplash'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x-video-card/14953248?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x-video-card/14953248?intl=nosplash'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-video-card/14954116?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-video-card/14954116?intl=nosplash'
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url: 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3090-trinity-24gb-gddr6x-video-card/14953250?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3090-trinity-24gb-gddr6x-video-card/14953250?intl=nosplash'
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x-video-card/14953247?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x-video-card/14953247?intl=nosplash'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3090-24gb-gddr6x-video-card/14954117?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3090-24gb-gddr6x-video-card/14954117?intl=nosplash'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3090',
url: 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3090-ventus-3x-oc-24gb-gddr6x-video-card/14966477?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3090-ventus-3x-oc-24gb-gddr6x-video-card/14966477?intl=nosplash'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3070',
url: 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3070-ventus-3x-oc-8gb-gddr6x-video-card/15038016?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3070-ventus-3x-oc-8gb-gddr6x-video-card/15038016?intl=nosplash'
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3070',
url: 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-oc-8gb-gddr6x-video-card/15000078?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-oc-8gb-gddr6x-video-card/15000078?intl=nosplash'
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url: 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-8gb-gddr6x-video-card/15000079?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-8gb-gddr6x-video-card/15000079?intl=nosplash'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url: 'https://www.bestbuy.ca/en-ca/product/nvidia-geforce-rtx-3070-8gb-gddr6-video-card-only-at-best-buy/15078017?intl=nosplash'
url:
'https://www.bestbuy.ca/en-ca/product/nvidia-geforce-rtx-3070-8gb-gddr6-video-card-only-at-best-buy/15078017?intl=nosplash'
}
],
name: 'bestbuy-ca',
+303 -109
View File
@@ -7,7 +7,8 @@ export const BestBuy: Store = {
text: ['add to cart']
},
maxPrice: {
container: '[data-sticky-media-gallery] .priceView-price .priceView-hero-price span',
container:
'[data-sticky-media-gallery] .priceView-price .priceView-hero-price span',
euroFormat: false
}
},
@@ -16,217 +17,410 @@ export const BestBuy: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.bestbuy.com/site/evga-ko-ultra-gaming-nvidia-geforce-rtx-2060-6gb-gddr6-pci-express-3-0-graphics-card-black-gray/6403801.p?skuId=6403801&intl=nosplash'
url:
'https://www.bestbuy.com/site/evga-ko-ultra-gaming-nvidia-geforce-rtx-2060-6gb-gddr6-pci-express-3-0-graphics-card-black-gray/6403801.p?skuId=6403801&intl=nosplash'
},
{
brand: 'nvidia',
cartUrl: 'https://api.bestbuy.com/click/-/6429442/cart',
model: 'founders edition',
series: '3070',
url: 'https://www.bestbuy.com/site/nvidia-geforce-rtx-3070-8gb-gddr6-pci-express-4-0-graphics-card-dark-platinum-and-black/6429442.p?skuId=6429442&intl=nosplash'
},
{
brand: 'nvidia',
cartUrl: 'https://api.bestbuy.com/click/-/6429440/cart',
model: 'founders edition',
series: '3080',
url: 'https://www.bestbuy.com/site/nvidia-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card-titanium-and-black/6429440.p?skuId=6429440&intl=nosplash'
},
{
brand: 'asus',
cartUrl: 'https://api.bestbuy.com/click/-/6432445/cart',
model: 'rog strix',
series: '3080',
url: 'https://www.bestbuy.com/site/asus-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-strix-graphics-card-black/6432445.p?skuId=6432445&intl=nosplash'
url:
'https://www.bestbuy.com/site/nvidia-geforce-rtx-3070-8gb-gddr6-pci-express-4-0-graphics-card-dark-platinum-and-black/6429442.p?skuId=6429442&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6439300/cart',
model: 'xc3 black',
series: '3070',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6x-pci-express-4-0-graphics-card/6439300.p?skuId=6439300&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6432399/cart',
model: 'xc3 black',
series: '3080',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6432399.p?skuId=6432399&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436194/cart',
model: 'xc3',
series: '3080',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6436194.p?skuId=6436194&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6432400/cart',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6432400.p?skuId=6432400&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436196/cart',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6436196.p?skuId=6436196&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436191/cart',
model: 'ftw3',
series: '3080',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6436191.p?skuId=6436191&intl=nosplash'
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6x-pci-express-4-0-graphics-card/6439300.p?skuId=6439300&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6437912/cart',
model: 'eagle',
series: '3070',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3070-8g-gddr6-pci-express-4-0-graphics-card-black/6437912.p?skuId=6437912&intl=nosplash'
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3070-8g-gddr6-pci-express-4-0-graphics-card-black/6437912.p?skuId=6437912&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6437909/cart',
model: 'gaming oc',
series: '3070',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3070-8g-gddr6-pci-express-4-0-graphics-card-black/6437909.p?skuId=6437909&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6430620/cart',
model: 'gaming oc',
series: '3080',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-black/6430620.p?acampID=0&cmp=RMX&loc=Hatch&ref=198&skuId=6430620&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6430621/cart',
model: 'eagle oc',
series: '3080',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-black/6430621.p?skuId=6430621&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6436219/cart',
model: 'vision oc',
series: '3080',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-white/6436219.p?skuId=6436219&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6436223/cart',
model: 'aorus master',
series: '3080',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-black/6436223.p?skuId=6436223&intl=nosplash'
},
{
brand: 'msi',
cartUrl: 'https://api.bestbuy.com/click/-/6430175/cart',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.bestbuy.com/site/msi-geforce-rtx-3080-ventus-3x-10g-oc-bv-gddr6x-pci-express-4-0-graphic-card-black-silver/6430175.p?skuId=6430175&intl=nosplash'
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3070-8g-gddr6-pci-express-4-0-graphics-card-black/6437909.p?skuId=6437909&intl=nosplash'
},
{
brand: 'pny',
cartUrl: 'https://api.bestbuy.com/click/-/6432654/cart',
model: 'dual fan',
series: '3070',
url: 'https://www.bestbuy.com/site/pny-geforce-rtx-3070-8gb-dual-fan-graphics-card/6432654.p?skuId=6432654&intl=nosplash'
url:
'https://www.bestbuy.com/site/pny-geforce-rtx-3070-8gb-dual-fan-graphics-card/6432654.p?skuId=6432654&intl=nosplash'
},
{
brand: 'pny',
cartUrl: 'https://api.bestbuy.com/click/-/6432653/cart',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3070',
url: 'https://www.bestbuy.com/site/pny-geforce-rtx-3070-8gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432653.p?skuId=6432653&intl=nosplash'
url:
'https://www.bestbuy.com/site/pny-geforce-rtx-3070-8gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432653.p?skuId=6432653&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6439384/cart',
model: 'aorus',
series: '3070',
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3070-8g-gddr6-pci-express-4-0-graphics-card-black/6439384.p?skuId=6439384'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6439385/cart',
model: 'vision',
series: '3070',
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3070-8g-gddr6-pci-express-4-0-graphics-card-white/6439385.p?skuId=6439385'
},
{
brand: 'asus',
cartUrl: 'https://api.bestbuy.com/click/-/6439128/cart',
model: 'tuf',
series: '3070',
url:
'https://www.bestbuy.com/site/asus-tuf-rtx3070-8gb-gddr6-pci-express-4-0-graphics-card-black/6439128.p?skuId=6439128'
},
{
brand: 'msi',
cartUrl: 'https://api.bestbuy.com/click/-/6438278/cart',
model: 'ventus 3x oc',
series: '3070',
url:
'https://www.bestbuy.com/site/msi-geforce-rtx-3070-ventus-3x-oc-bv-8gb-gddr6-pci-express-4-0-graphics-card-black/6438278.p?skuId=6438278'
},
{
brand: 'asus',
cartUrl: 'https://api.bestbuy.com/click/-/6439127/cart',
model: 'strix',
series: '3070',
url:
'https://www.bestbuy.com/site/asus-rog-strix-rtx3070-8gb-gddr6-pci-express-4-0-graphics-card-black/6439127.p?skuId=6439127'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6439301/cart',
model: 'ftw3 ultra',
series: '3070',
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3070-ftw3-ultra-gaming-8gb-gddr6x-pci-express-4-0-graphics-card/6439301.p?skuId=6439301'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6439299/cart',
model: 'xc3 ultra',
series: '3070',
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3070-xc3-ultra-gaming-8gb-gddr6x-pci-express-4-0-graphics-card/6439299.p?skuId=6439299'
},
{
brand: 'nvidia',
cartUrl: 'https://api.bestbuy.com/click/-/6429440/cart',
model: 'founders edition',
series: '3080',
url:
'https://www.bestbuy.com/site/nvidia-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card-titanium-and-black/6429440.p?skuId=6429440&intl=nosplash'
},
{
brand: 'asus',
cartUrl: 'https://api.bestbuy.com/click/-/6432445/cart',
model: 'strix',
series: '3080',
url:
'https://www.bestbuy.com/site/asus-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-strix-graphics-card-black/6432445.p?skuId=6432445&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6432399/cart',
model: 'xc3 black',
series: '3080',
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6432399.p?skuId=6432399&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436194/cart',
model: 'xc3',
series: '3080',
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6436194.p?skuId=6436194&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6432400/cart',
model: 'xc3 ultra',
series: '3080',
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6432400.p?skuId=6432400&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436196/cart',
model: 'ftw3 ultra',
series: '3080',
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6436196.p?skuId=6436196&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436191/cart',
model: 'ftw3',
series: '3080',
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6436191.p?skuId=6436191&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6430620/cart',
model: 'gaming oc',
series: '3080',
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-black/6430620.p?acampID=0&cmp=RMX&loc=Hatch&ref=198&skuId=6430620&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6430621/cart',
model: 'eagle oc',
series: '3080',
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-black/6430621.p?skuId=6430621&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6436219/cart',
model: 'vision oc',
series: '3080',
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-white/6436219.p?skuId=6436219&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6436223/cart',
model: 'aorus master',
series: '3080',
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3080-10g-gddr6x-pci-express-4-0-graphics-card-black/6436223.p?skuId=6436223&intl=nosplash'
},
{
brand: 'msi',
cartUrl: 'https://api.bestbuy.com/click/-/6430175/cart',
model: 'ventus 3x oc',
series: '3080',
url:
'https://www.bestbuy.com/site/msi-geforce-rtx-3080-ventus-3x-10g-oc-bv-gddr6x-pci-express-4-0-graphic-card-black-silver/6430175.p?skuId=6430175&intl=nosplash'
},
{
brand: 'pny',
cartUrl: 'https://api.bestbuy.com/click/-/6432655/cart',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.bestbuy.com/site/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432655.p?skuId=6432655&intl=nosplash'
url:
'https://www.bestbuy.com/site/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432655.p?skuId=6432655&intl=nosplash'
},
{
brand: 'pny',
cartUrl: 'https://api.bestbuy.com/click/-/6432658/cart',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.bestbuy.com/site/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432658.p?skuId=6432658&intl=nosplash'
url:
'https://www.bestbuy.com/site/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432658.p?skuId=6432658&intl=nosplash'
},
{
brand: 'nvidia',
cartUrl: 'https://api.bestbuy.com/click/-/6429434/cart',
model: 'founders edition',
series: '3090',
url: 'https://www.bestbuy.com/site/nvidia-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card-titanium-and-black/6429434.p?skuId=6429434&intl=nosplash'
url:
'https://www.bestbuy.com/site/nvidia-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card-titanium-and-black/6429434.p?skuId=6429434&intl=nosplash'
},
{
brand: 'asus',
cartUrl: 'https://api.bestbuy.com/click/-/6432447/cart',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.bestbuy.com/site/asus-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-strix-graphics-card-black/6432447.p?skuId=6432447&intl=nosplash'
url:
'https://www.bestbuy.com/site/asus-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-strix-graphics-card-black/6432447.p?skuId=6432447&intl=nosplash'
},
{
brand: 'asus',
cartUrl: 'https://api.bestbuy.com/click/-/6432446/cart',
model: 'tuf',
series: '3090',
url: 'https://www.bestbuy.com/site/asus-tuf-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card-black/6432446.p?skuId=6432446&intl=nosplash'
url:
'https://www.bestbuy.com/site/asus-tuf-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card-black/6432446.p?skuId=6432446&intl=nosplash'
},
{
brand: 'msi',
cartUrl: 'https://api.bestbuy.com/click/-/6430215/cart',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.bestbuy.com/site/msi-geforce-rtx-3090-ventus-3x-24g-oc-bv-24gb-gddr6x-pci-express-4-0-graphics-card-black-silver/6430215.p?skuId=6430215&intl=nosplash'
url:
'https://www.bestbuy.com/site/msi-geforce-rtx-3090-ventus-3x-24g-oc-bv-24gb-gddr6x-pci-express-4-0-graphics-card-black-silver/6430215.p?skuId=6430215&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6430623/cart',
model: 'gaming',
series: '3090',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3090-24g-gddr6x-pci-express-4-0-graphics-card-black/6430623.p?skuId=6430623&intl=nosplash'
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3090-24g-gddr6x-pci-express-4-0-graphics-card-black/6430623.p?skuId=6430623&intl=nosplash'
},
{
brand: 'gigabyte',
cartUrl: 'https://api.bestbuy.com/click/-/6430624/cart',
model: 'eagle',
series: '3090',
url: 'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3090-24g-gddr6x-pci-express-4-0-graphics-card-black/6430624.p?skuId=6430624&intl=nosplash'
url:
'https://www.bestbuy.com/site/gigabyte-geforce-rtx-3090-24g-gddr6x-pci-express-4-0-graphics-card-black/6430624.p?skuId=6430624&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6434363/cart',
model: 'xc3',
series: '3090',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card/6434363.p?skuId=6434363&intl=nosplash'
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card/6434363.p?skuId=6434363&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436193/cart',
model: 'ftw3',
series: '3090',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card/6436193.p?skuId=6436193&intl=nosplash'
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card/6436193.p?skuId=6436193&intl=nosplash'
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6436192/cart',
model: 'ftw3 ultra',
series: '3090',
url: 'https://www.bestbuy.com/site/evga-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card/6436192.p?skuId=6436192&intl=nosplash'
url:
'https://www.bestbuy.com/site/evga-geforce-rtx-3090-24gb-gddr6x-pci-express-4-0-graphics-card/6436192.p?skuId=6436192&intl=nosplash'
},
{
brand: 'pny',
cartUrl: 'https://api.bestbuy.com/click/-/6432657/cart',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.bestbuy.com/site/pny-geforce-rtx-3090-24gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432657.p?skuId=6432657&intl=nosplash'
url:
'https://www.bestbuy.com/site/pny-geforce-rtx-3090-24gb-xlr8-gaming-epic-x-rgb-triple-fan-graphics-card/6432657.p?skuId=6432657&intl=nosplash'
},
{
brand: 'amd',
cartUrl: 'https://api.bestbuy.com/click/-/6438942/cart',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.bestbuy.com/site/amd-ryzen-9-5900x-4th-gen-12-core-24-threads-unlocked-desktop-processor-without-cooler/6438942.p?skuId=6438942&intl=nosplash'
},
{
brand: 'amd',
cartUrl: 'https://api.bestbuy.com/click/-/6438941/cart',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.bestbuy.com/site/amd-ryzen-9-5950x-4th-gen-16-core-32-threads-unlocked-desktop-processor-without-cooler/6438941.p?skuId=6438941&intl=nosplash'
},
{
brand: 'amd',
cartUrl: 'https://api.bestbuy.com/click/-/6439000/cart',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.bestbuy.com/site/amd-ryzen-7-5800x-4th-gen-8-core-16-threads-unlocked-desktop-processor-without-cooler/6439000.p?skuId=6439000&intl=nosplash'
},
{
brand: 'amd',
cartUrl: 'https://api.bestbuy.com/click/-/6438943/cart',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.bestbuy.com/site/amd-ryzen-5-5600x-4th-gen-6-core-12-threads-unlocked-desktop-processor-with-wraith-stealth-cooler/6438943.p?skuId=6438943&intl=nosplash'
},
{
brand: 'sony',
cartUrl: 'https://api.bestbuy.com/click/-/6426149/cart',
model: 'ps5 console',
series: 'sonyps5c',
url:
'https://www.bestbuy.com/site/sony-playstation-5-console/6426149.p?skuId=6426149&intl=nosplash'
},
{
brand: 'sony',
cartUrl: 'https://api.bestbuy.com/click/-/6430161/cart',
model: 'ps5 digital',
series: 'sonyps5de',
url:
'https://www.bestbuy.com/site/sony-playstation-5-digital-edition-console/6430161.p?skuId=6430161&intl=nosplash'
},
{
brand: 'microsoft',
model: 'xbox series x',
series: 'xboxsx',
url:
'https://www.bestbuy.com/site/microsoft-xbox-series-x-1tb-console-black/6428324.p?skuId=6428324'
},
{
brand: 'microsoft',
model: 'xbox series s',
series: 'xboxss',
url:
'https://www.bestbuy.com/site/microsoft-xbox-series-s-512-gb-all-digital-console-disc-free-gaming-white/6430277.p?skuId=6430277'
},
{
brand: 'msi',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.bestbuy.com/site/msi-radeon-rx-6800-xt-16g-16gb-gddr6-pci-express-4-0-graphics-card-black-black/6440913.p?skuId=6440913'
},
{
brand: 'msi',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.bestbuy.com/site/msi-radeon-rx-6800-16g-16gb-gddr6-pci-express-4-0-graphics-card-black-black/6441020.p?skuId=6441020'
},
{
brand: 'xfx',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.bestbuy.com/site/xfx-amd-radeon-rx-6800-16gb-gddr6-pci-express-4-0-gaming-graphics-card-black/6442077.p?skuId=6442077'
},
{
brand: 'xfx',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.bestbuy.com/site/xfx-amd-radeon-rx-6800xt-16gb-gddr6-pci-express-4-0-gaming-graphics-card-black/6441226.p?skuId=6441226'
},
{
brand: 'corsair',
cartUrl: 'https://api.bestbuy.com/click/-/6351845/cart',
model: '750 platinum',
series: 'sf',
url:
'https://www.bestbuy.com/site/corsair-sf-series-750w-atx12v-2-4-eps12v-2-92-sfx12v-80-plus-platinum-modular-power-supply-black/6351845.p?skuId=6351845'
},
{
brand: 'corsair',
cartUrl: 'https://api.bestbuy.com/click/-/6351844/cart',
model: '600 platinum',
series: 'sf',
url:
'https://www.bestbuy.com/site/corsair-sf-series-600w-atx12v-2-4-eps12v-2-92-sfx12v-80-plus-platinum-modular-power-supply-black/6351844.p?skuId=6351844'
}
],
name: 'bestbuy'
+2 -1
View File
@@ -20,7 +20,8 @@ export const Box: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.box.co.uk/Gigabyte-GeForce-RTX-2080-Super-8GB-Wind_2724554.html'
url:
'https://www.box.co.uk/Gigabyte-GeForce-RTX-2080-Super-8GB-Wind_2724554.html'
}
],
linksBuilder: {
+385
View File
@@ -0,0 +1,385 @@
import {Store} from './store';
export const CanadaComputers: Store = {
labels: {
outOfStock: {
container: 'div[class="pi-prod-availability"]',
text: ['not available online']
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181348'
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183101'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183500'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183099'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183210'
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183635'
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183636'
},
{
brand: 'asus',
model: 'strix oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183637'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184168'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184167'
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183561'
},
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183208'
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183560'
},
{
brand: 'asus',
model: 'gaming oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183638'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183498'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183209'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183100'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183499'
},
{
brand: 'asus',
model: 'gaming',
series: '3070',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184743'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181376'
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181842'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181348'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181354'
},
{
brand: 'asus',
model: 'gaming',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181416'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181375'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181420'
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184837'
},
{
brand: 'asus',
model: 'gaming oc',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181415'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181353'
},
{
brand: 'asus',
model: 'gaming',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184743'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181347'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=182754'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181797'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=182755'
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183098'
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183510'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184166'
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181798'
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181841'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181854'
},
{
brand: 'asus',
model: 'gaming oc',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181413'
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181419'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181351'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181350'
},
{
brand: 'asus',
model: 'gaming',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181414'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181349'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181853'
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183096'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181352'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183432'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183431'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183430'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183427'
}
],
name: 'canadacomputers',
waitUntil: 'domcontentloaded'
};
+120 -51
View File
@@ -21,255 +21,324 @@ export const Caseking: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.caseking.de/evga-geforce-rtx-2060-super-xc-ultra-gaming-8192-mb-gddr6-gcev-385.html'
url:
'https://www.caseking.de/evga-geforce-rtx-2060-super-xc-ultra-gaming-8192-mb-gddr6-gcev-385.html'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-10g-10240-mb-gddr6x-gcas-400.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-10g-10240-mb-gddr6x-gcas-400.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-o10g-10240-mb-gddr6x-gcas-399.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-o10g-10240-mb-gddr6x-gcas-399.html'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-10g-10240-mb-gddr6x-gcas-394.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-10g-10240-mb-gddr6x-gcas-394.html'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-o10g-10240-mb-gddr6x-gcas-396.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-o10g-10240-mb-gddr6x-gcas-396.html'
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url: 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-gaming-10240-mb-gddr6x-gcev-416.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-gaming-10240-mb-gddr6x-gcev-416.html'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-ultra-gaming-10240-mb-gddr6x-gcev-417.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-ultra-gaming-10240-mb-gddr6x-gcev-417.html'
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url: 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-gaming-10240-mb-gddr6x-gcev-415.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3080-xc3-gaming-10240-mb-gddr6x-gcev-415.html'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url: 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-black-gaming-10240-mb-gddr6x-gcev-414.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3080-xc3-black-gaming-10240-mb-gddr6x-gcev-414.html'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-ultra-gaming-10240-mb-gddr6x-gcev-423.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3080-xc3-ultra-gaming-10240-mb-gddr6x-gcev-423.html'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-master-10g-10240-mb-gddr6x-gcgb-331.html'
url:
'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-master-10g-10240-mb-gddr6x-gcgb-331.html'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-oc-10g-10240-mb-gddr6x-gcgb-326.html'
url:
'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-oc-10g-10240-mb-gddr6x-gcgb-326.html'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-gaming-oc-10g-10240-mb-gddr6x-gcgb-327.html'
url:
'https://www.caseking.de/gigabyte-geforce-rtx-3080-gaming-oc-10g-10240-mb-gddr6x-gcgb-327.html'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-vision-oc-10g-10240-mb-gddr6x-gcgb-332.html'
url:
'https://www.caseking.de/gigabyte-geforce-rtx-3080-vision-oc-10g-10240-mb-gddr6x-gcgb-332.html'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3080',
url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x3-10240-mb-gddr6x-gci3-170.html'
url:
'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x3-10240-mb-gddr6x-gci3-170.html'
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3080',
url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x4-10240-mb-gddr6x-gci3-169.html'
url:
'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x4-10240-mb-gddr6x-gci3-169.html'
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3080',
url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-twin-x2-oc-10240-mb-gddr6x-gci3-171.html'
url:
'https://www.caseking.de/inno3d-geforce-rtx-3080-twin-x2-oc-10240-mb-gddr6x-gci3-171.html'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.caseking.de/msi-geforce-rtx-3080-gaming-x-trio-10g-10240-mb-gddr6x-gcmc-248.html'
url:
'https://www.caseking.de/msi-geforce-rtx-3080-gaming-x-trio-10g-10240-mb-gddr6x-gcmc-248.html'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.caseking.de/msi-geforce-rtx-3080-ventus-3x-10g-oc-10240-mb-gddr6x-gcmc-247.html'
url:
'https://www.caseking.de/msi-geforce-rtx-3080-ventus-3x-10g-oc-10240-mb-gddr6x-gcmc-247.html'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10240-mb-gddr6x-gcpn-075.html'
url:
'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10240-mb-gddr6x-gcpn-075.html'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-10240-mb-gddr6x-gcpn-076.html'
url:
'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-10240-mb-gddr6x-gcpn-076.html'
},
{
brand: 'zotac',
model: 'amp holo',
series: '3080',
url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-amp-holo-10240-mb-gddr6x-gczt-166.html'
url:
'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-amp-holo-10240-mb-gddr6x-gczt-166.html'
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-oc-10240-mb-gddr6x-gczt-167.html'
url:
'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-oc-10240-mb-gddr6x-gczt-167.html'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-10240-mb-gddr6x-gczt-163.html'
url:
'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-10240-mb-gddr6x-gczt-163.html'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-24g-24576-mb-gddr6x-gcas-397.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-24g-24576-mb-gddr6x-gcas-397.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-o24g-24576-mb-gddr6x-gcas-398.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-o24g-24576-mb-gddr6x-gcas-398.html'
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-24g-24576-mb-gddr6x-gcas-393.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-24g-24576-mb-gddr6x-gcas-393.html'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url: 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-o24g-24576-mb-gddr6x-gcas-395.html'
url:
'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-o24g-24576-mb-gddr6x-gcas-395.html'
},
{
brand: 'evga',
model: 'ftw3',
series: '3090',
url: 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-gaming-24576-mb-gddr6x-gcev-421.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-gaming-24576-mb-gddr6x-gcev-421.html'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3090',
url: 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-ultra-gaming-24576-mb-gddr6x-gcev-422.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-ultra-gaming-24576-mb-gddr6x-gcev-422.html'
},
{
brand: 'evga',
model: 'xc3',
series: '3090',
url: 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-gaming-24576-mb-gddr6x-gcev-419.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3090-xc3-gaming-24576-mb-gddr6x-gcev-419.html'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3090',
url: 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-black-gaming-24576-mb-gddr6x-gcev-418.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3090-xc3-black-gaming-24576-mb-gddr6x-gcev-418.html'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3090',
url: 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-ultra-gaming-24576-mb-gddr6x-gcev-420.html'
url:
'https://www.caseking.de/evga-geforce-rtx-3090-xc3-ultra-gaming-24576-mb-gddr6x-gcev-420.html'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url: 'https://www.caseking.de/gigabyte-geforce-rtx-3090-eagle-oc-24g-24576-mb-gddr6x-gcgb-329.html'
url:
'https://www.caseking.de/gigabyte-geforce-rtx-3090-eagle-oc-24g-24576-mb-gddr6x-gcgb-329.html'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url: 'https://www.caseking.de/gigabyte-geforce-rtx-3090-gaming-oc-24g-24576-mb-gddr6x-gcgb-328.html'
url:
'https://www.caseking.de/gigabyte-geforce-rtx-3090-gaming-oc-24g-24576-mb-gddr6x-gcgb-328.html'
},
{
brand: 'inno3d',
model: 'gaming x3',
series: '3090',
url: 'https://www.caseking.de/inno3d-geforce-rtx-3090-gaming-x3-24576-mb-gddr6x-gci3-172.html'
url:
'https://www.caseking.de/inno3d-geforce-rtx-3090-gaming-x3-24576-mb-gddr6x-gci3-172.html'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3090',
url: 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x3-24576-mb-gddr6x-gci3-168.html'
url:
'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x3-24576-mb-gddr6x-gci3-168.html'
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3090',
url: 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x4-24576-mb-gddr6x-gci3-167.html'
url:
'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x4-24576-mb-gddr6x-gci3-167.html'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.caseking.de/msi-geforce-rtx-3090-gaming-x-trio-24g-24576-mb-gddr6x-gcmc-244.html'
url:
'https://www.caseking.de/msi-geforce-rtx-3090-gaming-x-trio-24g-24576-mb-gddr6x-gcmc-244.html'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-epic-x-rgb-24576-mb-gddr6x-gcpn-073.html'
url:
'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-epic-x-rgb-24576-mb-gddr6x-gcpn-073.html'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-revel-epic-x-rgb-24576-mb-gddr6x-gcpn-074.html'
url:
'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-revel-epic-x-rgb-24576-mb-gddr6x-gcpn-074.html'
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3090-trinity-24576-mb-gddr6x-gczt-162.html'
url:
'https://www.caseking.de/zotac-gaming-geforce-rtx-3090-trinity-24576-mb-gddr6x-gczt-162.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.caseking.de/amd-ryzen-5-5600x-3-7-ghz-vermeer-am4-mit-amd-wraith-stealth-kuehler-hpam-202.html'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.caseking.de/amd-ryzen-7-5800x-3-8-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-203.html'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.caseking.de/amd-ryzen-9-5900x-3-7-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-204.html'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.caseking.de/amd-ryzen-9-5950x-3-4-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-205.html'
}
],
name: 'caseking'
};
+36 -4
View File
@@ -21,7 +21,36 @@ export const Ccl: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.cclonline.com/product/296443/RTX-2060-SUPER-VENTUS-GP-OC/Graphics-Cards/MSI-GeForce-RTX-2060-SUPER-VENTUS-GP-OC-8GB-Overclocked-Graphics-Card/VGA5671/'
url:
'https://www.cclonline.com/product/296443/RTX-2060-SUPER-VENTUS-GP-OC/Graphics-Cards/MSI-GeForce-RTX-2060-SUPER-VENTUS-GP-OC-8GB-Overclocked-Graphics-Card/VGA5671/'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.cclonline.com/product/331765/100-100000065BOX/CPU-Processors/AMD-Ryzen-5-5600X-3-7GHz-Hexa-Core-Processor-with-6-Cores-12-Threads-65W-TDP-35MB-Cache-4-6GHz-Turbo-Wraith-Stealth-Cooler/CPU0679/'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.cclonline.com/product/331766/100-100000063WOF/CPU-Processors/AMD-Ryzen-7-5800X-3-8GHz-Octa-Core-Processor-with-8-Cores-16-Threads-105W-TDP-36MB-Cache-4-7GHz-Turbo-No-Cooler/CPU0680/'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.cclonline.com/product/331767/100-100000061WOF/CPU-Processors/AMD-Ryzen-9-5900X-3-7GHz-Dodeca-Core-Processor-with-12-Cores-24-Threads-105W-TDP-70MB-Cache-4-8GHz-Turbo-No-Cooler/CPU0681/'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.cclonline.com/product/331768/100-100000059WOF/CPU-Processors/AMD-Ryzen-9-5950X-3-4GHz-Hexadeca-Core-Processor-with-16-Cores-32-Threads-105W-TDP-72MB-Cache-4-9GHz-Turbo-No-Cooler/CPU0682/'
}
],
linksBuilder: {
@@ -34,15 +63,18 @@ export const Ccl: Store = {
urls: [
{
series: '3070',
url: 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3070-Graphics-Cards/'
url:
'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3070-Graphics-Cards/'
},
{
series: '3080',
url: 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3080-Graphics-Cards/'
url:
'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3080-Graphics-Cards/'
},
{
series: '3090',
url: 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3090-Graphics-Cards/'
url:
'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3090-Graphics-Cards/'
}
]
},
+186 -83
View File
@@ -4,7 +4,11 @@ export const Computeruniverse: Store = {
labels: {
inStock: {
container: '.availability',
text: ['bestellartikel', 'auf lager und sofort lieferbar', 'kurzfristig verfügbar']
text: [
'bestellartikel',
'auf lager und sofort lieferbar',
'kurzfristig verfügbar'
]
},
maxPrice: {
container: '.product-price',
@@ -16,31 +20,36 @@ export const Computeruniverse: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.computeruniverse.net/de/gainward-geforce-gtx-1660-super-ghost-6-gb-high-end-grafikkarte'
url:
'https://www.computeruniverse.net/de/gainward-geforce-gtx-1660-super-ghost-6-gb-high-end-grafikkarte'
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url: 'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-rtx3070-8g-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-rtx3070-8g-8-gb-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url: 'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-oc-dual-rtx3070-o8g-8-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-oc-dual-rtx3070-o8g-8-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3070',
url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-8-gb-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3070',
url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'evga',
@@ -52,67 +61,78 @@ export const Computeruniverse: Store = {
brand: 'gainward',
model: 'phoenix',
series: '3070',
url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-8-gb-enthusiast-grafikkarte'
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3070',
url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-gs-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-gs-8-gb-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3070',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-8-gb-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3070',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-oc-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-oc-8-gb-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3070',
url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x3'
url:
'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x3'
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3070',
url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x4'
url:
'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x4'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-gaming-x-trio-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/msi-geforce-rtx3070-gaming-x-trio-8-gb-enthusiast-grafikkarte'
},
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3070',
url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-2x-oc-8-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-2x-oc-8-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3070',
url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-3x-oc-8-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-3x-oc-8-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'palit',
model: 'gaming pro',
series: '3070',
url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3070-gaming-pro-8-gb'
url:
'https://www.computeruniverse.net/de/palit-geforce-rtx3070-gaming-pro-8-gb'
},
{
brand: 'pny',
@@ -122,333 +142,416 @@ export const Computeruniverse: Store = {
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3070',
url: 'https://www.computeruniverse.net/de/pny-geforce-rtx3070-xlr8-gaming-epic-x-rgb-p-8-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/pny-geforce-rtx3070-xlr8-gaming-epic-x-rgb-p-8-gb-enthusiast-grafikkarte'
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3070',
url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3070-twin-edge-oc-8-gb-oc'
url:
'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3070-twin-edge-oc-8-gb-oc'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-10-gb-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-oc-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-oc-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-tuf-rtx3080-10g-gaming-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-tuf-rtx3080-10g-gaming-10-gb-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-oc-tuf-rtx3080-o10g-gaming-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-oc-tuf-rtx3080-o10g-gaming-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ftw3-10-gb-high-end-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ftw3-10-gb-high-end-grafikkarte'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ultra-ftw3-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ultra-ftw3-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-10-gb-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-black-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-black-10-gb-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-ultra-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-ultra-10-gb-enthusiast-grafikkarte'
},
{
brand: 'gainward',
model: 'phoenix',
series: '3080',
url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-10-gb-enthusiast-grafikkarte'
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3080',
url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-gs-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-gs-10-gb-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3080-master-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3080-master-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-eagle-oc-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-eagle-oc-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-gaming-oc-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-gaming-oc-10-gb-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-vision-oc-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-vision-oc-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3080',
url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x3-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x3-10-gb-enthusiast-grafikkarte'
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3080',
url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x4-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x4-10-gb-enthusiast-grafikkarte'
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-twin-x2-oc-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-twin-x2-oc-10-gb-enthusiast-grafikkarte'
},
{
brand: 'kfa2',
model: 'sg oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/kfa-geforce-rtx3080-sg-oc-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/kfa-geforce-rtx3080-sg-oc-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-gaming-x-trio-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/msi-geforce-rtx3080-gaming-x-trio-10-gb-enthusiast-grafikkarte'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-ventus-3x-oc-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/msi-geforce-rtx3080-ventus-3x-oc-10-gb-enthusiast-grafikkarte'
},
{
brand: 'palit',
model: 'gaming pro',
series: '3080',
url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-10-gb-enthusiast-grafikkarte'
},
{
brand: 'palit',
model: 'gaming pro oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-oc-10-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-oc-10-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.computeruniverse.net/de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-p-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-p-10-gb-enthusiast-grafikkarte'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.computeruniverse.net/de/pny-geforce-rtx3080-xlr8-gaming-epic-x-rgb-m-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/pny-geforce-rtx3080-xlr8-gaming-epic-x-rgb-m-10-gb-enthusiast-grafikkarte'
},
{
brand: 'zotac',
model: 'amp holo',
series: '3080',
url: 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-holo-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-holo-10-gb-enthusiast-grafikkarte'
},
{
brand: 'zotac',
model: 'amp extreme holo',
series: '3080',
url: 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-extreme-holo-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-extreme-holo-10-gb-enthusiast-grafikkarte'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-10-gb-enthusiast-grafikkarte'
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-oc-10-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-oc-10-gb-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-24-gb-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-oc-24-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-oc-24-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-tuf-rtx3090-24g-gaming-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-tuf-rtx3090-24g-gaming-24-gb-enthusiast-grafikkarte'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-oc-tuf-rtx3090-o24g-gaming-24-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-oc-tuf-rtx3090-o24g-gaming-24-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'ftw3',
series: '3090',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-gaming-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-gaming-24-gb-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3090',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-ultra-gaming-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-ultra-gaming-24-gb-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'xc3',
series: '3090',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-gaming-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-gaming-24-gb-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3090',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-black-gaming-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-black-gaming-24-gb-enthusiast-grafikkarte'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3090',
url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-ultra-gaming-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-ultra-gaming-24-gb-enthusiast-grafikkarte'
},
{
brand: 'gainward',
model: 'phoenix',
series: '3090',
url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-24-gb-enthusiast-grafikkarte'
},
{
brand: 'gainward',
model: 'phoenix gs oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-gs-24-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-gs-24-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3090',
url: 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3090-master-24gb'
url:
'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3090-master-24gb'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-eagle-oc-24-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-eagle-oc-24-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-gaming-oc-24-gb-oc'
url:
'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-gaming-oc-24-gb-oc'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3090',
url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x3-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x3-24-gb-enthusiast-grafikkarte'
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3090',
url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x4-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x4-24-gb-enthusiast-grafikkarte'
},
{
brand: 'kfa2',
model: 'sg oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/kfa-geforce-rtx3090-sg-oc-24-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/kfa-geforce-rtx3090-sg-oc-24-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-gaming-x-trio-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/msi-geforce-rtx3090-gaming-x-trio-24-gb-enthusiast-grafikkarte'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-ventus-3x-oc-24-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/msi-geforce-rtx3090-ventus-3x-oc-24-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'palit',
model: 'gaming pro',
series: '3090',
url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-24-gb-enthusiast-grafikkarte'
},
{
brand: 'palit',
model: 'gaming pro oc',
series: '3090',
url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-oc-24-gb-oc-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-oc-24-gb-oc-enthusiast-grafikkarte'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-m-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-m-24-gb-enthusiast-grafikkarte'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-p-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-p-24-gb-enthusiast-grafikkarte'
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3090-trinity-24-gb-enthusiast-grafikkarte'
url:
'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3090-trinity-24-gb-enthusiast-grafikkarte'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.computeruniverse.net/de/amd-ryzen-5-5600x-boxed-mit-wraith-stealth-kuehler'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.computeruniverse.net/de/amd-ryzen-7-5800x-box-ohne-kuehler'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.computeruniverse.net/de/amd-ryzen-9-5900x-box-ohne-kuehler'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.computeruniverse.net/de/amd-ryzen-9-5950x-box-ohne-kuehler'
}
],
name: 'computeruniverse'
+4 -4
View File
@@ -60,13 +60,13 @@ export const Coolblue: Store = {
},
{
brand: 'asus',
model: 'rog strix oc gaming',
model: 'strix oc',
series: '3080',
url: 'https://www.coolblue.nl/product/868731/'
},
{
brand: 'asus',
model: 'rog strix gaming',
model: 'strix',
series: '3080',
url: 'https://www.coolblue.nl/product/868732/'
},
@@ -96,13 +96,13 @@ export const Coolblue: Store = {
},
{
brand: 'asus',
model: 'rog strix oc gaming',
model: 'strix oc',
series: '3090',
url: 'https://www.coolblue.nl/product/868728/'
},
{
brand: 'asus',
model: 'rog strix gaming',
model: 'strix',
series: '3090',
url: 'https://www.coolblue.nl/product/868729/'
},
+157 -31
View File
@@ -6,6 +6,10 @@ export const Coolmod: Store = {
container: '.product-availability',
text: ['Envío']
},
maxPrice: {
container: '.text-price-total',
euroFormat: true
},
outOfStock: {
container: '.product-availability',
text: ['Sin Stock']
@@ -16,153 +20,275 @@ export const Coolmod: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.coolmod.com/kfa2-geforce-rtx-2060-super-1-click-oc-8gb-gddr6-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/kfa2-geforce-rtx-2060-super-1-click-oc-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-eagle-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/gigabyte-geforce-rtx-3080-eagle-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.coolmod.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-gaming-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-gaming-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-gaming-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/gigabyte-geforce-rtx-3080-gaming-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.coolmod.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-oc-gaming-10gb-gddr6x-tarjeta-grfica-precio'
url:
'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-oc-gaming-10gb-gddr6x-tarjeta-grfica-precio'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url: 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-tarjeta-grfica-precio'
url:
'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-tarjeta-grfica-precio'
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url: 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url: 'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.coolmod.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'pny',
model: 'xlr8',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.coolmod.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'kfa2',
model: 'sg-oc',
model: 'sg oc',
series: '3080',
url: 'https://www.coolmod.com/kfa2-geforce-rtx-3080-sg-1-click-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/kfa2-geforce-rtx-3080-sg-1-click-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3080',
url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x4-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x4-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3080',
url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x3-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x3-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3080',
url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-twin-x2-oc-10gb-gddr6x-tarjeta-grafica-precio'
url:
'https://www.coolmod.com/inno3d-geforce-rtx-3080-twin-x2-oc-10gb-gddr6x-tarjeta-grafica-precio'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.coolmod.com/amd-ryzen-5-5600x-46ghz-socket-am4-boxed-procesador-precio'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.coolmod.com/amd-ryzen-7-5800x-47ghz-socket-am4-boxed-procesador-precio'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.coolmod.com/amd-ryzen-9-5900x-48ghz-socket-am4-boxed-procesador-precio'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.coolmod.com/amd-ryzen-9-5950x-49ghz-socket-am4-boxed-procesador-precio'
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url:
'https://www.coolmod.com/asus-dual-geforce-rtx-3070-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url:
'https://www.coolmod.com/msi-geforce-rtx-3070-gaming-x-trio-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3070',
url:
'https://www.coolmod.com/msi-geforce-rtx-3070-ventus-2x-oc-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'evga',
model: 'xc3',
series: '3070',
url:
'https://www.coolmod.com/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url:
'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3070-gaming-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3070',
url:
'https://www.coolmod.com/gigabyte-geforce-rtx-3070-eagle-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3070',
url:
'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'pny',
model: 'xlr8 revel',
series: '3070',
url:
'https://www.coolmod.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-rgb-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url:
'https://www.coolmod.com/zotac-gaming-geforce-rtx-3070-twin-edge-8gb-gddr6-tarjeta-grafica-precio'
},
{
brand: 'kfa2',
model: 'sg oc',
series: '3070',
url:
'https://www.coolmod.com/kfa2-geforce-rtx-3070-sg-1-click-oc-8gb-gddr6-tarjeta-grafica-precio'
}
],
name: 'coolmod'
};
+38
View File
@@ -0,0 +1,38 @@
import {Store} from './store';
export const Corsair: Store = {
labels: {
inStock: {
container: '.add_to_cart_form',
text: ['add to cart']
},
maxPrice: {
container: '.product-price',
euroFormat: false
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020181-NA'
},
{
brand: 'corsair',
model: '750 platinum',
series: 'sf',
url:
'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020186-NA'
},
{
brand: 'corsair',
model: '600 platinum',
series: 'sf',
url:
'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020182-NA'
}
],
name: 'corsair'
};
+34 -3
View File
@@ -21,7 +21,36 @@ export const Currys: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/graphics-cards/msi-geforce-rtx-2060-8-gb-super-ventus-gp-oc-graphics-card-10196803-pdt.html'
url:
'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/graphics-cards/msi-geforce-rtx-2060-8-gb-super-ventus-gp-oc-graphics-card-10196803-pdt.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-5-5600x-processor-10216691-pdt.html'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-7-5800x-processor-10216690-pdt.html'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-9-5900x-processor-10216689-pdt.html'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-9-5950x-processor-10216688-pdt.html'
}
],
linksBuilder: {
@@ -34,11 +63,13 @@ export const Currys: Store = {
urls: [
{
series: '3080',
url: 'https://www.currys.co.uk/gbuk/rtx-3080/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313767/xx-criteria.html'
url:
'https://www.currys.co.uk/gbuk/rtx-3080/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313767/xx-criteria.html'
},
{
series: '3090',
url: 'https://www.currys.co.uk/gbuk/rtx-3090/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313725/xx-criteria.html'
url:
'https://www.currys.co.uk/gbuk/rtx-3090/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313725/xx-criteria.html'
}
]
},
+26 -2
View File
@@ -24,13 +24,13 @@ export const Cyberport: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.cyberport.de?DEEP=2E07-51S'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.cyberport.de?DEEP=2E07-51T'
},
@@ -93,6 +93,30 @@ export const Cyberport: Store = {
model: 'trinity oc',
series: '3080',
url: 'https://www.cyberport.de?DEEP=2E13-1H7'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.cyberport.de?DEEP=2001-71p'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.cyberport.de/?DEEP=2001-71n'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.cyberport.de?DEEP=2001-71m'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.cyberport.de?DEEP=2001-71l'
}
],
name: 'cyberport'
+49 -4
View File
@@ -21,7 +21,49 @@ export const Ebuyer: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.ebuyer.com/874209-gigabyte-geforce-rtx-2060-windforce-6gb-oc-graphics-card-gv-n2060wf2oc-6gd-v2'
url:
'https://www.ebuyer.com/874209-gigabyte-geforce-rtx-2060-windforce-6gb-oc-graphics-card-gv-n2060wf2oc-6gd-v2'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.ebuyer.com/1125329-sony-playstation-5-console-cfi-1015a'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url:
'https://www.ebuyer.com/1125332-sony-playstation-5-digital-edition-cfi-1015b'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.ebuyer.com/1126988-amd-ryzen-5-5600x-am4-processor-100-100000065box'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.ebuyer.com/1126987-amd-ryzen-7-5800x-am4-processor-100-100000063wof'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.ebuyer.com/1126986-amd-ryzen-9-5900x-am4-processor-100-100000061wof'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.ebuyer.com/1126985-amd-ryzen-9-5950x-am4-processor-100-100000059wof'
}
],
linksBuilder: {
@@ -34,15 +76,18 @@ export const Ebuyer: Store = {
urls: [
{
series: '3070',
url: 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3070'
url:
'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3070'
},
{
series: '3080',
url: 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3080'
url:
'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3080'
},
{
series: '3090',
url: 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3090'
url:
'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3090'
}
]
},
+47
View File
@@ -0,0 +1,47 @@
import {Store} from './store';
export const Galaxus: Store = {
labels: {
inStock: {
container: '#addToCartButton:enabled',
text: ['In den Warenkorb']
},
maxPrice: {
container: '.productDetail .ZZa5',
euroFormat: true
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.galaxus.de/de/product/11156643'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.galaxus.de/de/product/13987919'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.galaxus.de/de/product/13987918'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.galaxus.de/de/product/13987917'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.galaxus.de/de/product/13987916'
}
],
name: 'galaxus'
};
+40
View File
@@ -0,0 +1,40 @@
import {Store} from './store';
export const Game: Store = {
labels: {
inStock: {
container: '.buyingOptions',
text: ['Pre-order Now', 'Buy New']
},
maxPrice: {
container: '.buyingOptions .btnPrice',
euroFormat: false
},
outOfStock: {
container: '.buyingOptions',
text: ['out of stock']
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.game.co.uk/en/ea-sports-fifa-21-500gb-ps4-bundle-2832947'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.game.co.uk/en/playstation-5-console-2826338'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.game.co.uk/en/playstation-5-digital-edition-2826341'
}
],
name: 'game'
};
+42 -6
View File
@@ -2,10 +2,16 @@ import {Store} from './store';
export const Gamestop: Store = {
labels: {
inStock: {
container: '.add-to-cart',
text: ['add to cart']
},
inStock: [
{
container: '.add-to-cart',
text: ['add to cart']
},
{
container: '.add-to-cart',
text: ['Pre-Order']
}
],
maxPrice: {
container: '.primary-details-row .actual-price',
euroFormat: false
@@ -20,13 +26,43 @@ export const Gamestop: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.gamestop.com/nav-pc-hardware-desktops/products/clx-set-tgmsetgxe9600bm-gaming-desktop/11096665'
url:
'https://www.gamestop.com/nav-pc-hardware-desktops/products/clx-set-tgmsetgxe9600bm-gaming-desktop/11096665'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://www.gamestop.com/video-games/pc/components/graphics-cards/products/tuf-gaming-geforce-rtx-3080-graphics-card/11109446.html'
url:
'https://www.gamestop.com/video-games/pc/components/graphics-cards/products/tuf-gaming-geforce-rtx-3080-graphics-card/11109446.html'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url:
'https://www.gamestop.com/video-games/playstation-5/consoles/products/playstation-5/11108140'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url:
'https://www.gamestop.com/video-games/playstation-5/consoles/products/playstation-5-digital-edition/11108141'
},
{
brand: 'microsoft',
model: 'xbox series x',
series: 'xboxsx',
url:
'https://www.gamestop.com/video-games/xbox-series-x/consoles/products/xbox-series-x/11108371.html?condition=New'
},
{
brand: 'microsoft',
model: 'xbox series s',
series: 'xboxss',
url:
'https://www.gamestop.com/video-games/xbox-series-x/consoles/products/xbox-series-s-digital-edition/11108372.html?condition=New'
}
],
name: 'gamestop',
+8 -2
View File
@@ -10,7 +10,11 @@ type Backoff = {
const stores: Record<string, Backoff> = {};
export async function processBackoffDelay(store: Store, link: Link, statusCode: number): Promise<number> {
export async function processBackoffDelay(
store: Store,
link: Link,
statusCode: number
): Promise<number> {
/**
* We treat statusCode 0 as successful as some of the puppeteer plugins
* cause side-effects resulting in an empty response object even though
@@ -41,7 +45,9 @@ export async function processBackoffDelay(store: Store, link: Link, statusCode:
}
const backoffTime = backoff.time;
logger.debug(Print.backoff(link, store, {delay: backoffTime, statusCode}, true));
logger.debug(
Print.backoff(link, store, {delay: backoffTime, statusCode}, true)
);
await delay(backoff.time);
+24 -21
View File
@@ -1,9 +1,9 @@
import {Link, Series} from '../store';
import {Link, Model, Series} from '../store';
import {logger} from '../../../logger';
export interface Card {
brand: string;
model: string;
model: Model;
}
interface LinksBuilderOptions {
@@ -24,13 +24,10 @@ export function getProductLinksBuilder(options: LinksBuilderOptions) {
for (let i = 0; i < productElements.length; i++) {
const productElement = productElements.eq(i);
const titleElement = productElement.find(options.titleSelector).first();
let title: string;
if (options.titleAttribute) {
title = titleElement.attr()?.[options.titleAttribute];
} else {
title = titleElement.text()?.replace(/\n/g, ' ').trim();
}
const title = options.titleAttribute
? titleElement.attr()?.[options.titleAttribute]
: titleElement.text()?.replace(/\n/g, ' ').trim();
if (!title) {
continue;
@@ -62,7 +59,7 @@ export function getProductLinksBuilder(options: LinksBuilderOptions) {
url
});
} else {
logger.error(`Failed to parse card: ${title}`);
logger.error(`Failed to parse card: ${title}`, {url});
}
}
@@ -95,7 +92,10 @@ export function parseCard(name: string): Card | null {
}
// Split non spaced TitleCase words only after extracting brand
model = model.join(' ').replace(/([A-Z][a-z]+)([A-Z][a-z]+)/g, '$1 $2').split(' ');
model = model
.join(' ')
.replace(/([A-Z][a-z]+)([A-Z][a-z]+)/g, '$1 $2')
.split(' ');
// Some vendors have oc at the beginning of the product name,
// store whether the card contains the term "oc" and remove
@@ -103,28 +103,31 @@ export function parseCard(name: string): Card | null {
let isOC = false;
/* eslint-disable @typescript-eslint/prefer-regexp-exec */
model = model.filter(word => {
model = model.filter((word) => {
if (word.toLowerCase() === 'oc') {
isOC = true;
return false;
}
return !word.match(/^(nvidia|geforce|ge|force|rtx|amp[ae]re|graphics|card|gpu|pci-?e(xpress)?|ray-?tracing|ray|tracing|core|boost|epicx)$/i) &&
return (
!word.match(
/^(nvidia|geforce|ge|force|rtx|amp[ae]re|graphics|card|gpu|pci-?e(xpress)?|ray-?tracing|ray|tracing|core|boost|epicx)$/i
) &&
!word.match(/^(\d+(?:gb?|mhz)?|gb|mhz|g?ddr(\d+x?)?)$/i) &&
!word.match(/^(display ?port|hdmi|vga)$/i);
!word.match(/^(display ?port|hdmi|vga)$/i)
);
});
/* eslint-enable @typescript-eslint/prefer-regexp-exec */
if (isOC) {
model.push('OC');
}
if (model.length === 0) {
return null;
}
if (isOC) model.push('oc');
if (model.length === 0) return null;
return {
brand: brand.toLowerCase(),
model: model.join(' ').toLowerCase().replace(/ gaming\b/g, '').trim()
model: model
.join(' ')
.toLowerCase()
.replace(/ gaming\b/g, '')
.trim() as Model
};
}
+36 -18
View File
@@ -73,11 +73,16 @@ export class NvidiaCart {
cartUrl = await this.addToCartAndGetLocationRedirect(productId);
break;
} catch (error) {
logger.error(`✖ [nvidia] ${name} could not automatically add to cart, attempt ${i + 1} of ${config.nvidia.addToCardAttempts}`, error);
} catch (error: unknown) {
logger.error(
`✖ [nvidia] ${name} could not automatically add to cart, attempt ${
i + 1
} of ${config.nvidia.addToCardAttempts}`,
error
);
logger.debug(error);
lastError = error;
lastError = error as Error;
}
}
/* eslint-enable no-await-in-loop */
@@ -91,9 +96,11 @@ export class NvidiaCart {
logger.info(cartUrl);
await open(cartUrl);
} catch (error) {
logger.error(`✖ [nvidia] ${name} could not automatically add to cart, opening page`);
logger.debug(error);
} catch (error: unknown) {
logger.error(
`✖ [nvidia] ${name} could not automatically add to cart, opening page`,
error
);
cartUrl = this.fallbackCartUrl;
@@ -118,33 +125,46 @@ export class NvidiaCart {
public async refreshSessionToken(): Promise<void> {
logger.debug(' [nvidia] refreshing session token');
try {
const result = await usingResponse(this.browser, this.sessionUrl, async response => {
return response?.json() as NvidiaSessionTokenJSON | undefined;
});
if (typeof result !== 'object' || result === null || !('session_token' in result)) {
const result = await usingResponse(
this.browser,
this.sessionUrl,
async (response) => {
return response?.json() as NvidiaSessionTokenJSON | undefined;
}
);
if (
typeof result !== 'object' ||
result === null ||
!('session_token' in result)
) {
throw new Error('malformed response');
}
this.sessionToken = result.session_token;
logger.debug(` [nvidia] session_token=${result.session_token}`);
} catch (error) {
const message: string = typeof error === 'object' ? error.message : error;
} catch (error: unknown) {
const message: string =
typeof error === 'object'
? (error as Error).message
: (error as string);
logger.error(`✖ [nvidia] ${message}`);
}
}
protected async addToCartAndGetLocationRedirect(productId: number): Promise<string> {
protected async addToCartAndGetLocationRedirect(
productId: number
): Promise<string> {
const url = 'https://api-prod.nvidia.com/direct-sales-shop/DR/add-to-cart';
const sessionToken = await this.getSessionToken();
logger.info(` [nvidia] session_token=${sessionToken}`);
const locationData = await usingPage(this.browser, async page => {
const locationData = await usingPage(this.browser, async (page) => {
page.removeAllListeners('request');
await page.setRequestInterception(true);
page.on('request', interceptedRequest => {
page.on('request', (interceptedRequest) => {
void interceptedRequest.continue({
headers: {
...interceptedRequest.headers(),
@@ -153,9 +173,7 @@ export class NvidiaCart {
},
method: 'POST',
postData: JSON.stringify({
products: [
{productId, quantity: 1}
]
products: [{productId, quantity: 1}]
})
});
});
+27 -7
View File
@@ -13,15 +13,23 @@ function getRegionInfo(): NvidiaRegionInfo {
const regionInfo = regionInfos.get(country);
if (!regionInfo) {
throw new Error(`LogicException could not retrieve region info for ${country}`);
throw new Error(
`LogicException could not retrieve region info for ${country}`
);
}
return regionInfo;
}
function nvidiaStockUrl(id: number, drLocale: string, currency: string): string {
return `https://api-prod.nvidia.com/direct-sales-shop/DR/products/${drLocale}/${currency}/${id}?` +
timestampUrlParameter().slice(1);
function nvidiaStockUrl(
id: number,
drLocale: string,
currency: string
): string {
return (
`https://api-prod.nvidia.com/direct-sales-shop/DR/products/${drLocale}/${currency}/${id}?` +
timestampUrlParameter().slice(1)
);
}
let cart: NvidiaCart;
@@ -45,7 +53,13 @@ export function generateOpenCartAction(id: number, cardName: string) {
}
export function generateLinks(): Link[] {
const {drLocale, fe3080Id, fe3090Id, fe2060SuperId, currency} = getRegionInfo();
const {
drLocale,
fe3080Id,
fe3090Id,
fe2060SuperId,
currency
} = getRegionInfo();
const links: Link[] = [];
@@ -63,7 +77,10 @@ export function generateLinks(): Link[] {
links.push({
brand: 'nvidia',
model: 'founders edition',
openCartAction: generateOpenCartAction(fe3080Id, 'nvidia founders edition 3080'),
openCartAction: generateOpenCartAction(
fe3080Id,
'nvidia founders edition 3080'
),
series: '3080',
url: nvidiaStockUrl(fe3080Id, drLocale, currency)
});
@@ -73,7 +90,10 @@ export function generateLinks(): Link[] {
links.push({
brand: 'nvidia',
model: 'founders edition',
openCartAction: generateOpenCartAction(fe3090Id, 'nvidia founders edition 3090'),
openCartAction: generateOpenCartAction(
fe3090Id,
'nvidia founders edition 3090'
),
series: '3090',
url: nvidiaStockUrl(fe3090Id, drLocale, currency)
});
+52 -8
View File
@@ -6,9 +6,13 @@ import {Amazon} from './amazon';
import {AmazonCa} from './amazon-ca';
import {AmazonDe} from './amazon-de';
import {AmazonEs} from './amazon-es';
import {AmazonFr} from './amazon-fr';
import {AmazonNl} from './amazon-nl';
import {AmazonUk} from './amazon-uk';
import {Amd} from './amd';
import {AmdDe} from './amd-de';
import {Aria} from './aria';
import {Arlt} from './arlt';
import {Asus} from './asus';
import {AsusDe} from './asus-de';
import {Azerty} from './azerty';
@@ -16,18 +20,24 @@ import {BAndH} from './bandh';
import {BestBuy} from './bestbuy';
import {BestBuyCa} from './bestbuy-ca';
import {Box} from './box';
import {CanadaComputers} from './canadacomputers';
import {Caseking} from './caseking';
import {Ccl} from './ccl';
import {Computeruniverse} from './computeruniverse';
import {Coolblue} from './coolblue';
import {Coolmod} from './coolmod';
import {Corsair} from './corsair';
import {Currys} from './currys';
import {Cyberport} from './cyberport';
import {Ebuyer} from './ebuyer';
import {Evga} from './evga';
import {EvgaEu} from './evga-eu';
import {Galaxus} from './galaxus';
import {Game} from './game';
import {Gamestop} from './gamestop';
import {Kabum} from './kabum';
import {Mediamarkt} from './mediamarkt';
import {MemoryExpress} from './memoryexpress';
import {MicroCenter} from './microcenter';
import {Mindfactory} from './mindfactory';
import {Newegg} from './newegg';
@@ -39,13 +49,19 @@ import {NvidiaApi} from './nvidia-api';
import {OfficeDepot} from './officedepot';
import {Overclockers} from './overclockers';
import {PCComponentes} from './pccomponentes';
import {PlayStation} from './playstation';
import {Pny} from './pny';
import {ProshopDE} from './proshop-de';
import {ProshopDK} from './proshop-dk';
import {Saturn} from './saturn';
import {Scan} from './scan';
import {Store} from './store';
import {Target} from './target';
import {TopAchat} from './topachat';
import {Very} from './very';
import {VsGamers} from './vsgamers';
import {Walmart} from './walmart';
import {Xbox} from './xbox';
import {Zotac} from './zotac';
import {logger} from '../../logger';
@@ -57,9 +73,13 @@ export const storeList = new Map([
[AmazonCa.name, AmazonCa],
[AmazonDe.name, AmazonDe],
[AmazonEs.name, AmazonEs],
[AmazonFr.name, AmazonFr],
[AmazonNl.name, AmazonNl],
[AmazonUk.name, AmazonUk],
[Amd.name, Amd],
[AmdDe.name, AmdDe],
[Aria.name, Aria],
[Arlt.name, Arlt],
[Asus.name, Asus],
[AsusDe.name, AsusDe],
[Azerty.name, Azerty],
@@ -68,17 +88,23 @@ export const storeList = new Map([
[BestBuyCa.name, BestBuyCa],
[Box.name, Box],
[Caseking.name, Caseking],
[CanadaComputers.name, CanadaComputers],
[Ccl.name, Ccl],
[Computeruniverse.name, Computeruniverse],
[Coolblue.name, Coolblue],
[Coolmod.name, Coolmod],
[Corsair.name, Corsair],
[Currys.name, Currys],
[Cyberport.name, Cyberport],
[Ebuyer.name, Ebuyer],
[Evga.name, Evga],
[EvgaEu.name, EvgaEu],
[Galaxus.name, Galaxus],
[Game.name, Game],
[Gamestop.name, Gamestop],
[Kabum.name, Kabum],
[Mediamarkt.name, Mediamarkt],
[MemoryExpress.name, MemoryExpress],
[MicroCenter.name, MicroCenter],
[Mindfactory.name, Mindfactory],
[Newegg.name, Newegg],
@@ -90,12 +116,18 @@ export const storeList = new Map([
[OfficeDepot.name, OfficeDepot],
[Overclockers.name, Overclockers],
[PCComponentes.name, PCComponentes],
[PlayStation.name, PlayStation],
[Pny.name, Pny],
[ProshopDE.name, ProshopDE],
[ProshopDK.name, ProshopDK],
[Saturn.name, Saturn],
[Scan.name, Scan],
[Target.name, Target],
[TopAchat.name, TopAchat],
[Very.name, Very],
[VsGamers.name, VsGamers],
[Walmart.name, Walmart],
[Xbox.name, Xbox],
[Zotac.name, Zotac]
]);
@@ -104,12 +136,12 @@ const models = new Set();
const series = new Set();
const stores = new Map();
function filterBrandsSeriesModels(stores: Map<string, Store>) {
function filterBrandsSeriesModels() {
brands.clear();
series.clear();
models.clear();
for (const store of stores.values()) {
for (const store of storeList.values()) {
for (const link of store.links) {
brands.add(link.brand);
series.add(link.series);
@@ -128,7 +160,11 @@ function filterBrandsSeriesModels(stores: Map<string, Store>) {
function printConfig() {
if (config.store.stores.length > 0) {
logger.info(` selected stores: ${config.store.stores.map(store => store.name).join(', ')}`);
logger.info(
` selected stores: ${config.store.stores
.map((store) => store.name)
.join(', ')}`
);
}
if (config.store.showOnlyBrands.length > 0) {
@@ -136,9 +172,15 @@ function printConfig() {
}
if (config.store.showOnlyModels.length > 0) {
logger.info(` selected models: ${config.store.showOnlyModels.map(entry => {
return entry.series ? entry.name + ' (' + entry.series + ')' : entry.name;
}).join(', ')}`);
logger.info(
` selected models: ${config.store.showOnlyModels
.map((entry) => {
return entry.series
? entry.name + ' (' + entry.series + ')'
: entry.name;
})
.join(', ')}`
);
}
if (config.store.showOnlySeries.length > 0) {
@@ -153,7 +195,9 @@ function warnIfStoreDeprecated(store: Store) {
logger.warn(`${store.name} is deprecated in favor of bestbuy`);
break;
case 'evga':
logger.warn(`${store.name} is deprecated since they only support queuing`);
logger.warn(
`${store.name} is deprecated since they only support queuing`
);
break;
default:
}
@@ -175,7 +219,7 @@ export function updateStores() {
}
}
filterBrandsSeriesModels(stores);
filterBrandsSeriesModels();
printConfig();
}
+171
View File
@@ -0,0 +1,171 @@
import {Store} from './store';
export const Kabum: Store = {
labels: {
inStock: {
container: '.botao-comprar',
text: ['comprar']
},
outOfStock: {
container: '.bot_comprar',
text: ['indisponível']
}
},
links: [
// AMD
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.kabum.com.br/produto/129461'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.kabum.com.br/produto/129460'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.kabum.com.br/produto/129459'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.kabum.com.br/produto/129451'
},
// 3070
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url: 'https://www.kabum.com.br/produto/130209'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3070',
url: 'https://www.kabum.com.br/produto/130210'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3070',
url: 'https://www.kabum.com.br/produto/129938'
},
{
brand: 'asus',
model: 'dual fan',
series: '3070',
url: 'https://www.kabum.com.br/produto/128634'
},
{
brand: 'asus',
model: 'dual fan',
series: '3070',
url: 'https://www.kabum.com.br/produto/128635'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url: 'https://www.kabum.com.br/produto/130379'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3070',
url: 'https://www.kabum.com.br/produto/130380'
},
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3070',
url: 'https://www.kabum.com.br/produto/130381'
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url: 'https://www.kabum.com.br/produto/129208'
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3070',
url: 'https://www.kabum.com.br/produto/129207'
},
// 3080
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.kabum.com.br/produto/127409'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3080',
url: 'https://www.kabum.com.br/produto/127410'
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.kabum.com.br/produto/121138'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.kabum.com.br/produto/128078'
},
{
brand: 'evga',
model: 'ichill x3',
series: '3080',
url: 'https://www.kabum.com.br/produto/128051'
},
{
brand: 'evga',
model: 'ichill x3',
series: '3080',
url: 'https://www.kabum.com.br/produto/128052'
},
// 3090
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.kabum.com.br/produto/127407'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3090',
url: 'https://www.kabum.com.br/produto/127408'
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.kabum.com.br/produto/127511'
},
{
brand: 'asus',
model: 'strix',
series: '3090',
url: 'https://www.kabum.com.br/produto/128026'
},
{
brand: 'gigabyte',
model: 'gaming',
series: '3090',
url: 'https://www.kabum.com.br/produto/128199'
}
],
name: 'kabum'
};
+32 -14
View File
@@ -2,18 +2,24 @@ import {Store} from './store';
export const Mediamarkt: Store = {
labels: {
captcha: {
container: 'body',
text: ['Das ging uns leider zu schnell.']
},
maxPrice: {
container: 'span[font-family="price"]',
euroFormat: false
},
outOfStock: [{
container: '#root',
text: ['dieser artikel ist aktuell nicht verfügbar.']
},
{
container: '#root',
text: ['leider keine Lieferung möglich']
}]
outOfStock: [
{
container: '#root',
text: ['dieser artikel ist aktuell nicht verfügbar.']
},
{
container: '#root',
text: ['leider keine Lieferung möglich']
}
]
},
links: [
{
@@ -24,13 +30,13 @@ export const Mediamarkt: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3070',
url: 'https://www.mediamarkt.de/de/product/-2691243.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3070',
url: 'https://www.mediamarkt.de/de/product/-2691244.html'
},
@@ -120,13 +126,13 @@ export const Mediamarkt: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.mediamarkt.de/de/product/-2681869.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.mediamarkt.de/de/product/-2681871.html'
},
@@ -186,13 +192,13 @@ export const Mediamarkt: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.mediamarkt.de/de/product/-2681863.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.mediamarkt.de/de/product/-2681866.html'
},
@@ -231,6 +237,18 @@ export const Mediamarkt: Store = {
model: 'gaming x trio',
series: '3090',
url: 'https://www.mediamarkt.de/de/product/-2683226.html'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.mediamarkt.de/de/product/-2661938.html'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.mediamarkt.de/de/product/-2661939.html'
}
],
name: 'mediamarkt'
+50
View File
@@ -0,0 +1,50 @@
import {Store} from './store';
export const MemoryExpress: Store = {
labels: {
maxPrice: {
container:
'#ProductPricing .GrandTotal.c-capr-pricing__grand-total > div',
euroFormat: false
},
outOfStock: {
container:
'.c-capr-inventory-selector__details-online .c-capr-inventory-store__availability',
text: ['Out of Stock']
}
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.memoryexpress.com/Products/MX79473'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.memoryexpress.com/Products/MX00114450'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.memoryexpress.com/Products/MX00114451'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.memoryexpress.com/Products/MX00114452'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.memoryexpress.com/Products/MX00114455'
}
],
name: 'memoryexpress',
waitUntil: 'domcontentloaded'
};
+24
View File
@@ -89,6 +89,30 @@ for (const microCenterLocation of microCenterLocations) {
model: 'trinity',
series: '3080',
url: `https://www.microcenter.com/product/628607/zotac-geforce-rtx-3080-trinity-overclocked-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: `https://www.microcenter.com/product/630285/amd-ryzen-5-5600x-vermeer-37ghz-6-core-am4-boxed-processor-with-wraith-stealth-cooler/?storeid=${storeId}`
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: `https://www.microcenter.com/product/630284/amd-ryzen-7-5800x-vermeer-38ghz-8-core-am4-boxed-processor/?storeid=${storeId}`
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: `https://www.microcenter.com/product/630283/amd-ryzen-9-5900x-vermeer-37ghz-12-core-am4-boxed-processor/?storeid=${storeId}`
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: `https://www.microcenter.com/product/630282/amd-ryzen-9-5950x-vermeer-34ghz-16-core-am4-boxed-processor/?storeid=${storeId}`
}
]);
}
+50 -11
View File
@@ -20,67 +20,106 @@ export const Mindfactory: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.mindfactory.de/product_info.php/8GB-MSI-GeForce-RTX2070Super-GAMING-X-DDR6--Retail-_1329683.html'
url:
'https://www.mindfactory.de/product_info.php/8GB-MSI-GeForce-RTX2070Super-GAMING-X-DDR6--Retail-_1329683.html'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-MASTER-GDDR6X-3xHDMI-3xDP--Retail-_1378681.html'
url:
'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-MASTER-GDDR6X-3xHDMI-3xDP--Retail-_1378681.html'
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-XTREME-GDDR6X-3xHDMI-3xDP--Retail-_1380484.html'
url:
'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-XTREME-GDDR6X-3xHDMI-3xDP--Retail-_1380484.html'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-GeForce-RTX-3080-Gaming-OC-3xDP-2x-HDMI--Retail-_1376263.html'
url:
'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-GeForce-RTX-3080-Gaming-OC-3xDP-2x-HDMI--Retail-_1376263.html'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-VISION-OC-GDDR6X-2xHDMI-3xDP--Retail-_1378682.html'
url:
'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-VISION-OC-GDDR6X-2xHDMI-3xDP--Retail-_1378682.html'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.mindfactory.de/product_info.php/10GB-MSI-GeForce-RTX-3080-Gaming-X-TRIO--Retail-_1376481.html'
url:
'https://www.mindfactory.de/product_info.php/10GB-MSI-GeForce-RTX-3080-Gaming-X-TRIO--Retail-_1376481.html'
},
{
brand: 'palit',
model: 'gaming pro',
series: '3080',
url: 'https://www.mindfactory.de/product_info.php/10GB-Palit-GeForce-RTX-3080-GamingPro--Retail-_1376483.html'
url:
'https://www.mindfactory.de/product_info.php/10GB-Palit-GeForce-RTX-3080-GamingPro--Retail-_1376483.html'
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url: 'https://www.mindfactory.de/product_info.php/10GB-Zotac-GeForce-RTX-3080-TRINITY-OC--GDDR6X-_1377143.html'
url:
'https://www.mindfactory.de/product_info.php/10GB-Zotac-GeForce-RTX-3080-TRINITY-OC--GDDR6X-_1377143.html'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url: 'https://www.mindfactory.de/product_info.php/24GB-Gigabyte-GeForce-3090-Gaming-OC--Retail-_1377265.html'
url:
'https://www.mindfactory.de/product_info.php/24GB-Gigabyte-GeForce-3090-Gaming-OC--Retail-_1377265.html'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3090',
url: 'https://www.mindfactory.de/product_info.php/24GB-MSI-GeForce-RTX-3090-VENTUS-3X-DDR6--Retail-_1377475.html'
url:
'https://www.mindfactory.de/product_info.php/24GB-MSI-GeForce-RTX-3090-VENTUS-3X-DDR6--Retail-_1377475.html'
},
{
brand: 'palit',
model: 'gaming pro',
series: '3090',
url: 'https://www.mindfactory.de/product_info.php/24GB-Palit-GeForce-RTX-3090-GamingPro-DDR6--Retail-_1377233.html'
url:
'https://www.mindfactory.de/product_info.php/24GB-Palit-GeForce-RTX-3090-GamingPro-DDR6--Retail-_1377233.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.mindfactory.de/product_info.php/AMD-Ryzen-5-5600X-6x-3-70GHz-So-AM4-BOX_1380726.html'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.mindfactory.de/product_info.php/AMD-Ryzen-7-5800X-8x-3-80GHz-So-AM4-WOF_1380727.html'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.mindfactory.de/product_info.php/AMD-Ryzen-9-5900X-12x-3-70GHz-So-AM4-WOF_1380728.html'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.mindfactory.de/product_info.php/AMD-Ryzen-9-5950X-16x-3-40GHz-So-AM4-WOF_1380729.html'
}
],
name: 'mindfactory'
+331 -84
View File
@@ -1,4 +1,5 @@
import {Store} from './store';
import fetch from 'node-fetch';
export const NeweggCa: Store = {
labels: {
@@ -18,274 +19,520 @@ export const NeweggCa: Store = {
links: [
{
brand: 'test:brand',
itemNumber: '14-500-495',
model: 'test:model',
series: 'test:series',
url: 'https://www.newegg.ca/evga-geforce-rtx-2060-06g-p4-2066-kr/p/N82E16814487488'
url:
'https://www.newegg.ca/evga-geforce-rtx-2060-06g-p4-2066-kr/p/N82E16814487488'
},
{
brand: 'asus',
itemNumber: '14-126-453',
model: 'tuf',
series: '3080',
url: 'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
url:
'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
},
{
brand: 'evga',
itemNumber: '14-487-519',
model: 'ftw3',
series: '3080',
url:
'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
},
{
brand: 'evga',
itemNumber: '14-487-518',
model: 'ftw3 ultra',
series: '3080',
url:
'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518'
},
{
brand: 'evga',
itemNumber: '14-487-522',
model: 'xc3 black',
series: '3080',
url: 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
url:
'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
},
{
brand: 'evga',
itemNumber: '14-487-521',
model: 'xc3',
series: '3080',
url: 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
url:
'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
},
{
brand: 'evga',
itemNumber: '14-487-520',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3885-kr/p/N82E16814487520'
url:
'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3885-kr/p/N82E16814487520'
},
{
brand: 'msi',
itemNumber: '14-137-600',
model: 'ventus 3x',
series: '3080',
url:
'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600'
},
{
brand: 'msi',
itemNumber: '14-137-598',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
url:
'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
},
{
brand: 'msi',
itemNumber: '14-137-597',
model: 'gaming x trio',
series: '3080',
url: 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
url:
'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
},
{
brand: 'gigabyte',
itemNumber: '149-32-329',
model: 'gaming oc',
series: '3080',
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
},
{
brand: 'gigabyte',
itemNumber: '149-32-330',
model: 'eagle oc',
series: '3080',
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
},
{
brand: 'gigabyte',
itemNumber: '14-932-336',
model: 'aorus master',
series: '3080',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336'
},
{
brand: 'zotac',
itemNumber: '14-950-502',
model: 'trinity',
series: '3080',
url: 'https://www.newegg.ca/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
url:
'https://www.newegg.ca/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
},
{
brand: 'asus',
itemNumber: '14-126-457',
model: 'strix',
series: '3080',
url:
'https://www.newegg.ca/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
},
{
brand: 'asus',
itemNumber: '14-126-452',
model: 'tuf oc',
series: '3080',
url: 'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
},
{
brand: 'asus',
model: 'rog strix',
series: '3080',
url: 'https://www.newegg.ca/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3090',
url: 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
url:
'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
},
{
brand: 'zotac',
itemNumber: '14-500-504',
model: 'trinity oc',
series: '3080',
url:
'https://www.newegg.ca/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504'
},
{
brand: 'pny',
itemNumber: '14-133-809',
model: 'xlr8 revel',
series: '3080',
url:
'https://www.newegg.ca/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809'
},
{
brand: 'gigabyte',
itemNumber: '14-932-337',
model: 'vision oc',
series: '3080',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337'
},
{
brand: 'msi',
itemNumber: '14-137-595',
model: 'gaming x trio',
series: '3090',
url:
'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
},
{
brand: 'gigabyte',
itemNumber: '14-932-327',
model: 'gaming oc',
series: '3090',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
},
{
brand: 'msi',
itemNumber: '14-137-596',
model: 'ventus 3x oc',
series: '3090',
url:
'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
},
{
brand: 'zotac',
itemNumber: '14-500-503',
model: 'trinity',
series: '3090',
url: 'https://www.newegg.ca/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
url:
'https://www.newegg.ca/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
},
{
brand: 'asus',
itemNumber: '14-126-454',
model: 'tuf',
series: '3090',
url: 'https://www.newegg.ca/asus-geforce-rtx-3090-tuf-rtx3090-o24g-gaming/p/N82E16814126454'
url:
'https://www.newegg.ca/asus-geforce-rtx-3090-tuf-rtx3090-o24g-gaming/p/N82E16814126454'
},
{
brand: 'asus',
model: 'rog strix',
itemNumber: '14-126-456',
model: 'strix',
series: '3090',
url: 'https://www.newegg.ca/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
url:
'https://www.newegg.ca/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
},
{
brand: 'evga',
itemNumber: '14-487-524',
model: 'xc3 ultra',
series: '3090',
url: 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
url:
'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
},
{
brand: 'evga',
itemNumber: '14-487-523',
model: 'xc3',
series: '3090',
url: 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
url:
'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
},
{
brand: 'evga',
itemNumber: '14-487-526',
model: 'ftw3 ultra',
series: '3090',
url: 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
url:
'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
},
{
brand: 'evga',
itemNumber: '14-487-525',
model: 'ftw3',
series: '3090',
url: 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
url:
'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
},
{
brand: 'msi',
itemNumber: '14-137-602',
model: 'ventus 2x',
series: '3070',
url: 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602'
url:
'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602'
},
{
brand: 'msi',
itemNumber: '14-137-601',
model: 'ventus 3x',
series: '3070',
url: 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601'
url:
'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601'
},
{
brand: 'msi',
itemNumber: '14-137-603',
model: 'gaming x trio',
series: '3070',
url: 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603'
url:
'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603'
},
{
brand: 'asus',
itemNumber: '14-126-460',
model: 'dual',
series: '3070',
url: 'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460'
url:
'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460'
},
{
brand: 'asus',
itemNumber: '14-126-459',
model: 'dual oc',
series: '3070',
url: 'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459'
url:
'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459'
},
{
brand: 'gigabyte',
itemNumber: '14-932-342',
model: 'gaming oc',
series: '3070',
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342'
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342'
},
{
brand: 'asus',
model: 'rog strix',
itemNumber: '14-126-458',
model: 'strix',
series: '3070',
url: 'https://www.newegg.ca/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458'
url:
'https://www.newegg.ca/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458'
},
{
brand: 'zotac',
itemNumber: '14-500-501',
model: 'twin edge',
series: '3070',
url: 'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501'
url:
'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501'
},
{
brand: 'gigabyte',
itemNumber: '14-932-344',
model: 'eagle',
series: '3070',
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344'
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344'
},
{
brand: 'evga',
model: 'xc3 black gaming',
itemNumber: '14-487-528',
model: 'xc3 black',
series: '3070',
url: 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528'
url:
'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528'
},
{
brand: 'gigabyte',
itemNumber: '14-932-360',
model: 'vision oc',
series: '3070',
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'
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360'
},
{
brand: 'zotac',
itemNumber: '14-500-505',
model: 'twin edge oc',
series: '3070',
url: 'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505'
url:
'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505'
},
{
brand: 'pny',
itemNumber: '14-133-812',
model: 'uprising',
series: '3070',
url: 'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708dfmpb/p/N82E16814133812'
url:
'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708dfmpb/p/N82E16814133812'
},
{
brand: 'asus',
itemNumber: '14-126-461',
model: 'tuf',
series: '3070',
url: 'https://www.newegg.ca/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461'
url:
'https://www.newegg.ca/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461'
},
{
brand: 'evga',
model: 'ftw3 gaming',
itemNumber: '14-487-531',
model: 'ftw3',
series: '3070',
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'
url:
'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
},
{
brand: 'gigabyte',
itemNumber: '14-932-359',
model: 'aorus',
series: '3070',
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359'
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359'
},
{
brand: 'gigabyte',
itemNumber: '14-932-343',
model: 'eagle oc',
series: '3070',
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343'
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343'
},
{
brand: 'evga',
model: 'xc3 ultra gaming',
itemNumber: '14-487-530',
model: 'xc3 ultra',
series: '3070',
url: 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530'
url:
'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530'
},
{
brand: 'evga',
model: 'ftw3 ultra gaming',
itemNumber: '14-487-532',
model: 'ftw3 ultra',
series: '3070',
url: 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532'
url:
'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532'
},
{
brand: 'pny',
model: 'xlr8 rgb',
itemNumber: '14-133-811',
model: 'xlr8 revel',
series: '3070',
url: 'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811'
url:
'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811'
},
{
brand: 'evga',
model: 'xc3 gaming',
itemNumber: '14-487-529',
model: 'xc3',
series: '3070',
url: 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529'
url:
'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529'
},
{
brand: 'amd',
itemNumber: '19-113-663',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.newegg.ca/amd-ryzen-9-5950x/p/N82E16819113663'
},
{
brand: 'amd',
itemNumber: '19-113-664',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.newegg.ca/amd-ryzen-9-5900x/p/N82E16819113664'
},
{
brand: 'amd',
itemNumber: '19-113-665',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.newegg.ca/amd-ryzen-7-5800x/p/N82E16819113665'
},
{
brand: 'amd',
itemNumber: '19-113-666',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.newegg.ca/amd-ryzen-5-5600x/p/N82E16819113666'
},
{
brand: 'msi',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.ca/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607'
},
{
brand: 'msi',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.ca/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608'
},
{
brand: 'asus',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.ca/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472'
},
{
brand: 'asus',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.ca/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473'
},
{
brand: 'asrock',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.ca/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045'
},
{
brand: 'asrock',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.ca/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046'
},
{
brand: 'gigabyte',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.ca/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373'
},
{
brand: 'gigabyte',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.ca/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374'
},
{
brand: 'sapphire',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.ca/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388'
},
{
brand: 'sapphire',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.ca/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389'
},
{
brand: 'gigabyte',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373'
}
],
name: 'newegg-ca'
name: 'newegg-ca',
realTimeInventoryLookup: async (itemNumber: string) => {
const request_url =
'https://www.newegg.ca/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
);
}
};
+546 -286
View File
@@ -22,398 +22,658 @@ export const Newegg: Store = {
itemNumber: '14-500-495',
model: 'test:model',
series: 'test:series',
url: 'https://www.newegg.com/zotac-geforce-rtx-2060-zt-t20600k-10m/p/N82E16814500495'
},
{
brand: 'asus',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453',
itemNumber: '14-126-453',
model: 'tuf',
series: '3080',
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518',
itemNumber: '14-487-518',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519',
itemNumber: '14-487-519',
model: 'ftw3',
series: '3080',
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522',
itemNumber: '14-487-522',
model: 'xc3 black',
series: '3080',
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521',
itemNumber: '14-487-521',
model: 'xc3',
series: '3080',
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
url:
'https://www.newegg.com/zotac-geforce-rtx-2060-zt-t20600k-10m/p/N82E16814500495'
},
{
brand: 'msi',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600',
itemNumber: '14-137-600',
model: 'ventus 3x',
series: '3080',
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600'
},
{
brand: 'msi',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598',
itemNumber: '14-137-598',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
},
{
brand: 'msi',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597',
itemNumber: '14-137-597',
model: 'gaming x trio',
series: '3080',
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
},
{
brand: 'gigabyte',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329',
itemNumber: '149-32-329',
model: 'gaming oc',
series: '3080',
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
},
{
brand: 'gigabyte',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330',
itemNumber: '149-32-330',
model: 'eagle oc',
series: '3080',
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
},
{
brand: 'gigabyte',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336',
itemNumber: '14-932-336',
model: 'aorus master',
series: '3080',
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336'
},
{
brand: 'zotac',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502',
itemNumber: '14-950-502',
model: 'trinity',
series: '3080',
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
},
{
brand: 'asus',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457',
itemNumber: '14-126-457',
model: 'rog strix',
series: '3080',
url: 'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
},
{
brand: 'asus',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452',
itemNumber: '14-126-452',
model: 'tuf oc',
series: '3080',
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
},
{
brand: 'zotac',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504',
itemNumber: '14-500-504',
model: 'trinity oc',
series: '3080',
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504'
},
{
brand: 'pny',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809',
itemNumber: '14-133-809',
model: 'xlr8 rgb',
series: '3080',
url: 'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809'
},
{
brand: 'asus',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455',
itemNumber: '14-126-455',
model: 'tuf',
series: '3090',
url: 'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455'
},
{
brand: 'asus',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456',
itemNumber: '14-126-456',
model: 'rog strix',
series: '3090',
url: 'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
},
{
brand: 'msi',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595',
itemNumber: '14-137-595',
model: 'gaming x trio',
series: '3090',
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
},
{
brand: 'msi',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596',
itemNumber: '14-137-596',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
},
{
brand: 'zotac',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503',
itemNumber: '14-500-503',
model: 'trinity',
series: '3090',
url: 'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
},
{
brand: 'msi',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599',
itemNumber: '14-137-599',
model: 'ventus 3x',
series: '3090',
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525',
itemNumber: '14-487-525',
model: 'ftw3',
series: '3090',
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524',
itemNumber: '14-487-524',
model: 'xc3 ultra',
series: '3090',
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526',
itemNumber: '14-487-526',
model: 'ftw3 ultra',
series: '3090',
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527',
itemNumber: '14-487-527',
model: 'xc3 black',
series: '3090',
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527'
},
{
brand: 'evga',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523',
itemNumber: '14-487-523',
model: 'xc3',
series: '3090',
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
},
{
brand: 'gigabyte',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327',
itemNumber: '14-932-327',
model: 'gaming',
series: '3090',
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
},
{
brand: 'gigabyte',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328',
itemNumber: '14-932-328',
model: 'eagle',
series: '3090',
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',
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'
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',
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'
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',
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'
url:
'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603'
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137605',
itemNumber: '14-137-605',
model: 'ventus 2x',
series: '3070',
url:
'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137605'
},
{
brand: 'gigabyte',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932360',
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'
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',
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'
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',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126458',
itemNumber: '14-126-458',
model: 'rog strix',
model: 'strix',
series: '3070',
url: 'https://www.newegg.com/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458'
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',
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'
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',
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'
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',
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'
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',
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'
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',
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'
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',
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'
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',
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'
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',
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'
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',
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'
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',
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'
url:
'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460'
},
{
brand: 'asus',
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126461',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126466',
itemNumber: '14-126-466',
model: 'gaming',
series: '3070',
url:
'https://www.newegg.com/asus-geforce-rtx-3070-ko-rtx3070-o8g-gamin/p/N82E16814126466'
},
{
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'
url:
'https://www.newegg.com/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461'
},
{
brand: 'pny',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133811',
itemNumber: '14-133-811',
model: 'gaming',
series: '3070',
url:
'https://www.newegg.com/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811'
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453',
itemNumber: '14-126-453',
model: 'tuf',
series: '3080',
url:
'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518',
itemNumber: '14-487-518',
model: 'ftw3 ultra',
series: '3080',
url:
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519',
itemNumber: '14-487-519',
model: 'ftw3',
series: '3080',
url:
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522',
itemNumber: '14-487-522',
model: 'xc3 black',
series: '3080',
url:
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521',
itemNumber: '14-487-521',
model: 'xc3',
series: '3080',
url:
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600',
itemNumber: '14-137-600',
model: 'ventus 3x',
series: '3080',
url:
'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600'
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598',
itemNumber: '14-137-598',
model: 'ventus 3x oc',
series: '3080',
url:
'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597',
itemNumber: '14-137-597',
model: 'gaming x trio',
series: '3080',
url:
'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329',
itemNumber: '149-32-329',
model: 'gaming oc',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330',
itemNumber: '149-32-330',
model: 'eagle oc',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336',
itemNumber: '14-932-336',
model: 'aorus master',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336'
},
{
brand: 'zotac',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502',
itemNumber: '14-950-502',
model: 'trinity',
series: '3080',
url:
'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457',
itemNumber: '14-126-457',
model: 'strix',
series: '3080',
url:
'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452',
itemNumber: '14-126-452',
model: 'tuf oc',
series: '3080',
url:
'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
},
{
brand: 'zotac',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504',
itemNumber: '14-500-504',
model: 'trinity oc',
series: '3080',
url:
'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504'
},
{
brand: 'pny',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809',
itemNumber: '14-133-809',
model: 'xlr8 revel',
series: '3080',
url:
'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809'
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932337',
itemNumber: '14-932-337',
model: 'vision oc',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337'
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455',
itemNumber: '14-126-455',
model: 'tuf',
series: '3090',
url:
'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455'
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456',
itemNumber: '14-126-456',
model: 'strix',
series: '3090',
url:
'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595',
itemNumber: '14-137-595',
model: 'gaming x trio',
series: '3090',
url:
'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596',
itemNumber: '14-137-596',
model: 'ventus 3x oc',
series: '3090',
url:
'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
},
{
brand: 'zotac',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503',
itemNumber: '14-500-503',
model: 'trinity',
series: '3090',
url:
'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599',
itemNumber: '14-137-599',
model: 'ventus 3x',
series: '3090',
url:
'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525',
itemNumber: '14-487-525',
model: 'ftw3',
series: '3090',
url:
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524',
itemNumber: '14-487-524',
model: 'xc3 ultra',
series: '3090',
url:
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526',
itemNumber: '14-487-526',
model: 'ftw3 ultra',
series: '3090',
url:
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527',
itemNumber: '14-487-527',
model: 'xc3 black',
series: '3090',
url:
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527'
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523',
itemNumber: '14-487-523',
model: 'xc3',
series: '3090',
url:
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327',
itemNumber: '14-932-327',
model: 'gaming',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328',
itemNumber: '14-932-328',
model: 'eagle',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328'
},
{
brand: 'amd',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113663',
itemNumber: '19-113-663',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.newegg.com/amd-ryzen-9-5950x/p/N82E16819113663'
},
{
brand: 'amd',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113664',
itemNumber: '19-113-664',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.newegg.com/amd-ryzen-9-5900x/p/N82E16819113664'
},
{
brand: 'amd',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113665',
itemNumber: '19-113-665',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.newegg.com/amd-ryzen-9-5900x/p/N82E16819113665'
},
{
brand: 'amd',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113666',
itemNumber: '19-113-666',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.newegg.com/amd-ryzen-5-5600x/p/N82E16819113666'
},
{
brand: 'microsoft',
model: 'xbox series x',
series: 'xboxsx',
url: 'https://www.newegg.com/p/N82E16868105273'
},
{
brand: 'microsoft',
model: 'xbox series s',
series: 'xboxss',
url: 'https://www.newegg.com/p/N82E16868105274'
},
{
brand: 'gigabyte',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373'
},
{
brand: 'msi',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.com/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607'
},
{
brand: 'sapphire',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.com/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388'
},
{
brand: 'asrock',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045'
},
{
brand: 'asus',
model: 'amd reference',
series: 'rx6800xt',
url:
'https://www.newegg.com/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472'
},
{
brand: 'asus',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.com/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473'
},
{
brand: 'asrock',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.com/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046'
},
{
brand: 'gigabyte',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.com/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374'
},
{
brand: 'sapphire',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.com/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389'
},
{
brand: 'msi',
model: 'amd reference',
series: 'rx6800',
url:
'https://www.newegg.com/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608'
}
],
name: 'newegg',
realTimeInventoryLookup: async (itemNumber: string) => {
const request_url = 'https://www.newegg.com/product/api/ProductRealtime?ItemNumber=' + itemNumber;
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;
return (
response_json.MainItem !== undefined &&
response_json.MainItem.Instock === true
);
}
};
+135 -52
View File
@@ -4,203 +4,286 @@ export const Notebooksbilliger: Store = {
labels: {
inStock: {
container: '.warehouse',
text: ['sofort ab lager', 'verfügbarkeit: ca. 2-4 werktage', 'verfügbarkeit: ca. 5-10 werktage']
text: [
'sofort ab lager',
'verfügbarkeit: ca. 2-4 werktage',
'verfügbarkeit: ca. 5-10 werktage'
]
},
maxPrice: {
container: 'form[name="cart_quantity"] span[class*="product-price__regular"]',
container:
'form[name="cart_quantity"] span[class*="product-price__regular"]',
euroFormat: true
},
outOfStock: [{
container: '.warehouse',
text: ['liefertermin noch unbestimmt']
},
{
container: '.soldOut',
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',
text: ['leider ist dieser artikel nicht mehr verfügbar.']
}]
outOfStock: [
{
container: '.warehouse',
text: ['liefertermin noch unbestimmt']
},
{
container: '.soldOut',
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',
text: ['leider ist dieser artikel nicht mehr verfügbar.']
}
]
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+2070+super+phoenix+v1+grafikkarte+656238'
url:
'https://www.notebooksbilliger.de/gainward+geforce+rtx+2070+super+phoenix+v1+grafikkarte+656238'
},
{
brand: 'inno3d',
model: 'ichill x3',
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'
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'
url:
'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+twin+x2+oc+grafikkarte+685500'
},
{
brand: 'nvidia',
model: 'founders edition',
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: 'nvidia',
model: 'founders edition',
series: '3070',
url:
'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685359'
},
{
brand: 'gainward',
model: 'phoenix',
series: '3070',
url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3070+phoenix+8gb+gddr6+grafikkarte+685073'
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'
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'
url:
'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+uprising+dual+fan+edition+grafikkarte+685520'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3070',
url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+xlr8+gaming+revel+epic+x+rgb+685560'
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'
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'
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'
url:
'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3070+twin+edge+oc+8gb+gddr6+grafikkarte+684216'
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3080',
url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3080+phoenix+gs+10gb+gddr6x+grafikkarte+677618'
url:
'https://www.notebooksbilliger.de/gainward+geforce+rtx+3080+phoenix+gs+10gb+gddr6x+grafikkarte+677618'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+eagle+oc+10gb+gddr6x+grafikkarte+677501'
url:
'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+eagle+oc+10gb+gddr6x+grafikkarte+677501'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+gaming+oc+10gb+gddr6x+grafikkarte+677499'
url:
'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+gaming+oc+10gb+gddr6x+grafikkarte+677499'
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3080',
url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+ichill+x3+grafikkarte+678588'
url:
'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+ichill+x3+grafikkarte+678588'
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3080',
url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+twin+x2+oc+grafikkarte+679190'
url:
'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+twin+x2+oc+grafikkarte+679190'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.notebooksbilliger.de/msi+geforce+rtx+3080+gaming+x+trio+10g+grafikkarte+678527'
url:
'https://www.notebooksbilliger.de/msi+geforce+rtx+3080+gaming+x+trio+10g+grafikkarte+678527'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url: 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3080+founders+edition+683301'
url:
'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3080+founders+edition+683301'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url:
'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3080+founders+edition+685126'
},
{
brand: 'palit',
model: 'gaming pro',
series: '3080',
url: 'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+10gb+gddr6x+grafikkarte+677609'
url:
'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+10gb+gddr6x+grafikkarte+677609'
},
{
brand: 'palit',
model: 'gaming pro oc',
series: '3080',
url: 'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+oc+10gb+gddr6x+grafikkarte+677606'
url:
'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+oc+10gb+gddr6x+grafikkarte+677606'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+xlr8+gaming+10gb+gddr6x+grafikkarte+677407'
url:
'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+xlr8+gaming+10gb+gddr6x+grafikkarte+677407'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+10gb+xlr8+gaming+revel+epic+x+grafikkarte+677412'
url:
'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+10gb+xlr8+gaming+revel+epic+x+grafikkarte+677412'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+24gb+gddr6x+grafikkarte+677343'
url:
'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+24gb+gddr6x+grafikkarte+677343'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+oc+24gb+gddr6x+grafikkarte+677308'
url:
'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+oc+24gb+gddr6x+grafikkarte+677308'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3090',
url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3090+master+24gb+gddr6x+grafikkarte+683868'
url:
'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3090+master+24gb+gddr6x+grafikkarte+683868'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url: 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3090+founders+edition+683300'
url:
'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3090+founders+edition+683300'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url:
'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3090+founders+edition+685124'
},
{
brand: 'palit',
model: 'gaming pro oc',
series: '3090',
url: 'https://www.notebooksbilliger.de/palit+geforce+rtx+3090+gamingpro+oc+24gb+gddr6x+grafikkarte+677599'
url:
'https://www.notebooksbilliger.de/palit+geforce+rtx+3090+gamingpro+oc+24gb+gddr6x+grafikkarte+677599'
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url: 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3090+trinity+24gb+gddr6x+grafikkarte+677550'
url:
'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3090+trinity+24gb+gddr6x+grafikkarte+677550'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.notebooksbilliger.de/amd+ryzen+5+5600x+cpu+684022'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.notebooksbilliger.de/amd+ryzen+ryzen+7+5800x+cpu+684018'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.notebooksbilliger.de/amd+ryzen+9+5900x+cpu+684032'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.notebooksbilliger.de/amd+ryzen+9+5950x+cpu+684033'
}
],
name: 'notebooksbilliger'
+34 -3
View File
@@ -26,7 +26,36 @@ export const Novatech: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.novatech.co.uk/products/gigabyte-geforce-rtx-2060-oc-v2-6g-graphics-card/gv-n2060oc-6gdv2.html'
url:
'https://www.novatech.co.uk/products/gigabyte-geforce-rtx-2060-oc-v2-6g-graphics-card/gv-n2060oc-6gdv2.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.novatech.co.uk/products/amd-ryzen-5-5600x-six-core-processorcpu-with-stealth-cooler-/100-000000065box.html'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.novatech.co.uk/products/amd-ryzen-7-5800x-eight-core-processorcpu-without-cooler-/100-000000063wof.html'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.novatech.co.uk/products/amd-ryzen-9-5900x-twelve-core-processorcpu-without-cooler-/100-100000061wof.html'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.novatech.co.uk/products/amd-ryzen-9-5950x-sixteen-core-processorcpu-without-cooler-/100-100000059wof.html'
}
],
linksBuilder: {
@@ -39,11 +68,13 @@ export const Novatech: Store = {
urls: [
{
series: '3080',
url: 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3080/?i=200'
url:
'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3080/?i=200'
},
{
series: '3090',
url: 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3090/?i=200'
url:
'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3090/?i=200'
}
]
},
+221 -21
View File
@@ -13,27 +13,227 @@ export interface NvidiaRegionInfo {
}
export const regionInfos = new Map<string, NvidiaRegionInfo>([
['austria', {currency: 'EUR', drLocale: 'de_de', fe2060SuperId: 5394902900, fe3080Id: 5440853700, fe3090Id: 5444941400, siteLocale: 'de-at'}],
['belgium', {currency: 'EUR', drLocale: 'fr_fr', fe2060SuperId: 5394902700, fe3080Id: 5438795700, fe3090Id: 5438795600, siteLocale: 'fr-be'}],
['canada', {currency: 'CAD', drLocale: 'en_us', fe2060SuperId: 5379432500, fe3080Id: 5438481700, fe3090Id: 5438481600, siteLocale: 'en-us'}],
['czechia', {currency: 'CZK', drLocale: 'en_gb', fe2060SuperId: 5394902800, fe3080Id: 5438793800, fe3090Id: 5438793600, siteLocale: 'cs-cz'}],
['denmark', {currency: 'DKK', drLocale: 'en_gb', fe2060SuperId: 5394903100, fe3080Id: 5438793300, fe3090Id: null, siteLocale: 'da-dk'}],
['finland', {currency: 'EUR', drLocale: 'en_gb', fe2060SuperId: 5394903100, fe3080Id: 5438793300, fe3090Id: null, siteLocale: 'fi-fi'}],
['france', {currency: 'EUR', drLocale: 'fr_fr', fe2060SuperId: 5394903200, fe3080Id: 5438795200, fe3090Id: 5438761500, siteLocale: 'fr-fr'}],
['germany', {currency: 'EUR', drLocale: 'de_de', fe2060SuperId: 5394902900, fe3080Id: 5438792300, fe3090Id: 5438761400, siteLocale: 'de-de'}],
['great_britain', {currency: 'GBP', drLocale: 'en_gb', fe2060SuperId: 5394903300, fe3080Id: 5438792800, fe3090Id: 5438792700, siteLocale: 'en-gb'}],
['ireland', {currency: 'GBP', drLocale: 'en_gb', fe2060SuperId: 5394903300, fe3080Id: 5438792800, fe3090Id: 5438792700, siteLocale: 'en-gb'}],
['italy', {currency: 'EUR', drLocale: 'it_it', fe2060SuperId: 5394903400, fe3080Id: 5438796200, fe3090Id: 5438796100, siteLocale: 'it-it'}],
['luxembourg', {currency: 'EUR', drLocale: 'fr_fr', fe2060SuperId: 5394902700, fe3080Id: 5438795700, fe3090Id: 5438795600, siteLocale: 'fr-be'}],
['netherlands', {currency: 'EUR', drLocale: 'nl_nl', fe2060SuperId: 5394903500, fe3080Id: 5438796700, fe3090Id: 5438796600, siteLocale: 'nl-nl'}],
['norway', {currency: 'NOK', drLocale: 'no_no', fe2060SuperId: 5394903600, fe3080Id: 5438797200, fe3090Id: 5438797100, siteLocale: 'nb-no'}],
['poland', {currency: 'PLN', drLocale: 'pl_pl', fe2060SuperId: 5394903700, fe3080Id: 5438797700, fe3090Id: 5438797600, siteLocale: 'pl-pl'}],
['portugal', {currency: 'EUR', drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438794300, fe3090Id: null, siteLocale: 'en-gb'}],
['russia', {currency: 'RUB', drLocale: 'ru_ru', fe2060SuperId: null, fe3080Id: null, fe3090Id: null, siteLocale: 'ru-ru'}],
['spain', {currency: 'EUR', drLocale: 'es_es', fe2060SuperId: 5394903000, fe3080Id: 5438794800, fe3090Id: 5438794700, siteLocale: 'es-es'}],
['sweden', {currency: 'SEK', drLocale: 'sv_se', fe2060SuperId: 5394903900, fe3080Id: 5438798100, fe3090Id: 5438761600, siteLocale: 'sv-se'}],
// https://github.com/jef/nvidia-snatcher/issues/407 This fe2080SuperID is for the Shield TV which is out of stock in the US
['usa', {currency: 'USD', drLocale: 'en_us', fe2060SuperId: 5355772500, fe3080Id: 5438481700, fe3090Id: 5438481600, siteLocale: 'en-us'}]
[
'austria',
{
currency: 'EUR',
drLocale: 'de_de',
fe2060SuperId: 5394902900,
fe3080Id: 5440853700,
fe3090Id: 5444941400,
siteLocale: 'de-at'
}
],
[
'belgium',
{
currency: 'EUR',
drLocale: 'fr_fr',
fe2060SuperId: 5394902700,
fe3080Id: 5438795700,
fe3090Id: 5438795600,
siteLocale: 'fr-be'
}
],
[
'canada',
{
currency: 'CAD',
drLocale: 'en_us',
fe2060SuperId: 5379432500,
fe3080Id: 5438481700,
fe3090Id: 5438481600,
siteLocale: 'en-us'
}
],
[
'czechia',
{
currency: 'CZK',
drLocale: 'en_gb',
fe2060SuperId: 5394902800,
fe3080Id: 5438793800,
fe3090Id: 5438793600,
siteLocale: 'cs-cz'
}
],
[
'denmark',
{
currency: 'DKK',
drLocale: 'en_gb',
fe2060SuperId: 5394903100,
fe3080Id: 5438793300,
fe3090Id: null,
siteLocale: 'da-dk'
}
],
[
'finland',
{
currency: 'EUR',
drLocale: 'en_gb',
fe2060SuperId: 5394903100,
fe3080Id: 5438793300,
fe3090Id: null,
siteLocale: 'fi-fi'
}
],
[
'france',
{
currency: 'EUR',
drLocale: 'fr_fr',
fe2060SuperId: 5394903200,
fe3080Id: 5438795200,
fe3090Id: 5438761500,
siteLocale: 'fr-fr'
}
],
[
'germany',
{
currency: 'EUR',
drLocale: 'de_de',
fe2060SuperId: 5394902900,
fe3080Id: 5438792300,
fe3090Id: 5438761400,
siteLocale: 'de-de'
}
],
[
'great_britain',
{
currency: 'GBP',
drLocale: 'en_gb',
fe2060SuperId: 5394903300,
fe3080Id: 5438792800,
fe3090Id: 5438792700,
siteLocale: 'en-gb'
}
],
[
'ireland',
{
currency: 'GBP',
drLocale: 'en_gb',
fe2060SuperId: 5394903300,
fe3080Id: 5438792800,
fe3090Id: 5438792700,
siteLocale: 'en-gb'
}
],
[
'italy',
{
currency: 'EUR',
drLocale: 'it_it',
fe2060SuperId: 5394903400,
fe3080Id: 5438796200,
fe3090Id: 5438796100,
siteLocale: 'it-it'
}
],
[
'luxembourg',
{
currency: 'EUR',
drLocale: 'fr_fr',
fe2060SuperId: 5394902700,
fe3080Id: 5438795700,
fe3090Id: 5438795600,
siteLocale: 'fr-be'
}
],
[
'netherlands',
{
currency: 'EUR',
drLocale: 'nl_nl',
fe2060SuperId: 5394903500,
fe3080Id: 5438796700,
fe3090Id: 5438796600,
siteLocale: 'nl-nl'
}
],
[
'norway',
{
currency: 'NOK',
drLocale: 'no_no',
fe2060SuperId: 5394903600,
fe3080Id: 5438797200,
fe3090Id: 5438797100,
siteLocale: 'nb-no'
}
],
[
'poland',
{
currency: 'PLN',
drLocale: 'pl_pl',
fe2060SuperId: 5394903700,
fe3080Id: 5438797700,
fe3090Id: 5438797600,
siteLocale: 'pl-pl'
}
],
[
'portugal',
{
currency: 'EUR',
drLocale: 'en_gb',
fe2060SuperId: null,
fe3080Id: 5438794300,
fe3090Id: null,
siteLocale: 'en-gb'
}
],
[
'russia',
{
currency: 'RUB',
drLocale: 'ru_ru',
fe2060SuperId: null,
fe3080Id: null,
fe3090Id: null,
siteLocale: 'ru-ru'
}
],
[
'spain',
{
currency: 'EUR',
drLocale: 'es_es',
fe2060SuperId: 5394903000,
fe3080Id: 5438794800,
fe3090Id: 5438794700,
siteLocale: 'es-es'
}
],
[
'sweden',
{
currency: 'SEK',
drLocale: 'sv_se',
fe2060SuperId: 5394903900,
fe3080Id: 5438798100,
fe3090Id: 5438761600,
siteLocale: 'sv-se'
}
],
// https://github.com/jef/streetmerchant/issues/407 This fe2080SuperID is for the Shield TV which is out of stock in the US
[
'usa',
{
currency: 'USD',
drLocale: 'en_us',
fe2060SuperId: 5355772500,
fe3080Id: 5438481700,
fe3090Id: 5438481600,
siteLocale: 'en-us'
}
]
]);
export const NvidiaApi: Store = {
+12 -6
View File
@@ -34,37 +34,43 @@ export const Nvidia: Store = {
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203080'
url:
'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203080'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url: 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3080'
url:
'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3080'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203090'
url:
'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203090'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url: 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3090'
url:
'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3090'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203070'
url:
'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203070'
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url: 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3070'
url:
'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3070'
}
],
name: 'nvidia'
+8 -5
View File
@@ -20,19 +20,22 @@ export const OfficeDepot: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.officedepot.com/a/products/4652239/EVGA-GeForce-RTX-2060-Graphic-Card/'
url:
'https://www.officedepot.com/a/products/4652239/EVGA-GeForce-RTX-2060-Graphic-Card/'
},
{
brand: 'pny',
model: 'xlr8',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.officedepot.com/a/products/7189374/PNY-GeForce-RTX-3080-10GB-GDDR6X/'
url:
'https://www.officedepot.com/a/products/7189374/PNY-GeForce-RTX-3080-10GB-GDDR6X/'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.officedepot.com/a/products/7791294/PNY-GeForce-RTX-3080-10GB-GDDR6X/'
url:
'https://www.officedepot.com/a/products/7791294/PNY-GeForce-RTX-3080-10GB-GDDR6X/'
}
],
name: 'officedepot'
+34 -3
View File
@@ -21,7 +21,36 @@ export const Overclockers: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.overclockers.co.uk/gigabyte-geforce-rtx-2060-oc-rev2-6144mb-gddr6-pci-express-graphics-card-gx-1bj-gi.html'
url:
'https://www.overclockers.co.uk/gigabyte-geforce-rtx-2060-oc-rev2-6144mb-gddr6-pci-express-graphics-card-gx-1bj-gi.html'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.overclockers.co.uk/amd-ryzen-5-5600x-six-core-4.6ghz-socket-am4-processor-retail-cp-3cc-am.html'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.overclockers.co.uk/amd-ryzen-7-5800x-eight-core-4.7ghz-socket-am4-processor-retail-cp-3cb-am.html'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.overclockers.co.uk/amd-ryzen-9-5900x-twelve-core-4.8ghz-socket-am4-processor-retail-cp-3ca-am.html'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.overclockers.co.uk/amd-ryzen-9-5950x-sixteen-core-4.9ghz-socket-am4-processor-retail-cp-3c9-am.html'
}
],
linksBuilder: {
@@ -34,7 +63,8 @@ export const Overclockers: Store = {
urls: [
{
series: '3070',
url: 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3070'
url:
'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3070'
},
{
series: '3080',
@@ -46,7 +76,8 @@ export const Overclockers: Store = {
},
{
series: '3090',
url: 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3090'
url:
'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3090'
}
]
},
+193 -25
View File
@@ -20,19 +20,22 @@ export const PCComponentes: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.pccomponentes.com/gigabyte-geforce-gtx-1660-super-oc-6gb-gddr6'
url:
'https://www.pccomponentes.com/gigabyte-geforce-gtx-1660-super-oc-6gb-gddr6'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-eagle-oc-10g-10gb-gddr6x'
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-eagle-oc-10g-10gb-gddr6x'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.pccomponentes.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x'
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x'
},
{
brand: 'asus',
@@ -44,105 +47,270 @@ export const PCComponentes: Store = {
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-gaming-oc-10g-10gb-gddr6x'
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-gaming-oc-10g-10gb-gddr6x'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.pccomponentes.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x'
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x'
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3080-oc-10gb-gddr6x'
url:
'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3080-oc-10gb-gddr6x'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-10g-gaming-oc-10gb-gddr6x'
url:
'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-10g-gaming-oc-10gb-gddr6x'
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url: 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x'
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x'
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x'
url:
'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x'
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x'
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x'
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-gaming-10gb-gddr6x'
url:
'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-gaming-10gb-gddr6x'
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url: 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x'
url:
'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x'
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x'
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url: 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x'
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x'
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x'
url:
'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x'
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x'
url:
'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x'
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url: 'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x'
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.pccomponentes.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x'
url:
'https://www.pccomponentes.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x'
},
{
brand: 'pny',
model: 'xlr8',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.pccomponentes.com/pny-geforce-rtx-3080-epic-x-rgb-triple-fan-xlr8-gaming-edition-10gb-gddr6x'
url:
'https://www.pccomponentes.com/pny-geforce-rtx-3080-epic-x-rgb-triple-fan-xlr8-gaming-edition-10gb-gddr6x'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.pccomponentes.com/amd-ryzen-5-5600x-37ghz'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.pccomponentes.com/amd-ryzen-7-5800x-38ghz'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.pccomponentes.com/amd-ryzen-9-5900x-37-ghz'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.pccomponentes.com/amd-ryzen-9-5950x-34-ghz'
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url:
'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-8gb-gddr6'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3070-gaming-x-trio-8gb-gddr6'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-gaming-oc-8gb-gddr6'
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3070',
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3070-ventus-2x-oc-8gb-gddr6'
},
{
brand: 'asus',
model: 'gaming oc',
series: '3070',
url:
'https://www.pccomponentes.com/asus-tuf-gaming-geforce-rtx-3070-oc-8gb-gddr6'
},
{
brand: 'evga',
model: 'xc3',
series: '3070',
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3070',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-eagle-oc-8gb-gddr6'
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url:
'https://www.pccomponentes.com/asus-geforce-rtx-3070-dual-oc-edition-8gb-gddr6'
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url: 'https://www.pccomponentes.com/asus-geforce-rtx-3070-dual-8gb-gddr6'
},
{
brand: 'asus',
model: 'strix oc',
series: '3070',
url:
'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-oc-8gb-gddr6'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3070',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6'
},
{
brand: 'pny',
model: 'dual fan',
series: '3070',
url:
'https://www.pccomponentes.com/pny-geforce-rtx-3070-dual-fan-8gb-gddr6'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3070',
url:
'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6'
},
{
brand: 'pny',
model: 'xlr8 revel',
series: '3070',
url:
'https://www.pccomponentes.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-rgb-8gb'
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3070',
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3070-ftw3-ultra-gaming-8gb-gddr6'
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3070',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-eagle-8gb-gddr6'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3070',
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3070-ventus-3x-oc-8gb-gddr6'
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url:
'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-8gb-gddr6'
}
],
name: 'pccomponentes'
};
+57
View File
@@ -0,0 +1,57 @@
import {Store} from './store';
import fetch from 'node-fetch';
export const PlayStation: Store = {
labels: {
inStock: {
container: '.productHero-info .add-to-cart:not(.hide)',
text: ['Add']
},
outOfStock: {
container: '.productHero-info .out-stock-wrpr:not(.hide)',
text: ['Out of Stock']
}
},
links: [
{
brand: 'test:brand',
itemNumber: '3005715',
model: 'test:model',
series: 'test:series',
url:
'https://direct.playstation.com/en-us/accessories/accessory/dualsense-wireless-controller.3005715'
},
{
brand: 'sony',
itemNumber: '3005816',
model: 'ps5 console',
series: 'sonyps5c',
url:
'https://direct.playstation.com/en-us/consoles/console/playstation5-console.3005816'
},
{
brand: 'sony',
itemNumber: '3005817',
model: 'ps5 digital',
series: 'sonyps5de',
url:
'https://direct.playstation.com/en-us/consoles/console/playstation5-digital-edition-console.3005817'
}
],
name: 'playstation',
realTimeInventoryLookup: async (itemNumber: string) => {
const request_url =
'https://api.direct.playstation.com/commercewebservices/ps-direct-us/products/productList?fields=BASIC&productCodes=' +
itemNumber;
const response = await fetch(request_url);
const response_json = await response.json();
if (
response_json.products[0].stock.stockLevelStatus !== 'outOfStock' &&
response_json.products[0].maxOrderQuantity >= 0
) {
return true;
}
return false;
}
};
+15 -12
View File
@@ -10,7 +10,6 @@ export const Pny: Store = {
container: 'span[itemprop="price"]',
euroFormat: false
}
},
links: [
{
@@ -27,35 +26,39 @@ export const Pny: Store = {
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3070',
url: 'https://www.pny.com/geforce-rtx-3070-xlr8-gaming-epic-x-rgb-triple-fan'
url:
'https://www.pny.com/geforce-rtx-3070-xlr8-gaming-epic-x-rgb-triple-fan'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-m'
url:
'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-m'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3080',
url: 'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-p'
url:
'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-p'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-m'
url:
'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-m'
},
{
brand: 'pny',
model: 'xlr8 rgb',
model: 'xlr8 revel',
series: '3090',
url: 'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-p'
url:
'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-p'
}
],
name: 'pny'
};
+32 -8
View File
@@ -3,7 +3,8 @@ import {Store} from './store';
export const ProshopDE: Store = {
labels: {
maxPrice: {
container: '.site-currency-wrapper > span[class="site-currency-attention"]',
container:
'.site-currency-wrapper > span[class="site-currency-attention"]',
euroFormat: true
},
outOfStock: {
@@ -20,13 +21,13 @@ export const ProshopDE: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3070',
url: 'https://www.proshop.de/2876843'
},
{
brand: 'asus',
model: ' rog strix oc',
model: 'strix oc',
series: '3070',
url: 'https://www.proshop.de/2876845'
},
@@ -122,13 +123,13 @@ export const ProshopDE: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.proshop.de/2876857'
},
{
brand: 'asus',
model: ' rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.proshop.de/2876859'
},
@@ -206,13 +207,13 @@ export const ProshopDE: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.proshop.de/2876865'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.proshop.de/2876867'
},
@@ -251,8 +252,31 @@ export const ProshopDE: Store = {
model: 'gaming x trio',
series: '3090',
url: 'https://www.proshop.de/2876881'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url: 'https://www.proshop.de/2884168'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.proshop.de/2884171'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.proshop.de/2884173'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.proshop.de/2884175'
}
],
name: 'proshop-de'
};
+56 -34
View File
@@ -7,7 +7,8 @@ export const ProshopDK: Store = {
text: ['1-2 dages levering', 'fjernlager']
},
maxPrice: {
container: '.site-currency-wrapper > span[class="site-currency-attention"]',
container:
'.site-currency-wrapper > span[class="site-currency-attention"]',
euroFormat: true
},
outOfStock: {
@@ -20,135 +21,156 @@ export const ProshopDK: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-2060-TUF-OC-6GB-GDDR6-RAM-Grafikkort/2694767'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-2060-TUF-OC-6GB-GDDR6-RAM-Grafikkort/2694767'
},
{
brand: 'asus',
model: 'tuf gaming',
model: 'tuf',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-TUF-10GB-GDDR6X-RAM-Grafikkort/2876763'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-TUF-10GB-GDDR6X-RAM-Grafikkort/2876763'
},
{
brand: 'asus',
model: 'tuf gaming oc',
model: 'tuf oc',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-TUF-OC-10GB-GDDR6X-RAM-Grafikkort/2876861'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-TUF-OC-10GB-GDDR6X-RAM-Grafikkort/2876861'
},
{
brand: 'asus',
model: 'strix gaming',
model: 'strix',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-ROG-STRIX-10GB-GDDR6X-RAM-Grafikkort/2876857'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-ROG-STRIX-10GB-GDDR6X-RAM-Grafikkort/2876857'
},
{
brand: 'asus',
model: 'strix gaming oc',
model: 'strix oc',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-ROG-STRIX-OC-10GB-GDDR6X-RAM-Grafikkort/2876859'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3080-ROG-STRIX-OC-10GB-GDDR6X-RAM-Grafikkort/2876859'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3080-GAMING-X-TRIO-10GB-GDDR6X-RAM-Grafikkort/2876877'
url:
'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3080-GAMING-X-TRIO-10GB-GDDR6X-RAM-Grafikkort/2876877'
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3080-Ventus-3X-10GB-GDDR6X-RAM-Grafikkort/2876878'
url:
'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3080-Ventus-3X-10GB-GDDR6X-RAM-Grafikkort/2876878'
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3080-Ventus-3X-OC-10GB-GDDR6X-RAM-Grafikkort/2876879'
url:
'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3080-Ventus-3X-OC-10GB-GDDR6X-RAM-Grafikkort/2876879'
},
{
brand: 'inno3d',
model: 'ichill 4x',
model: 'ichill x3',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/Inno3D-GeForce-RTX-3080-iCHILL-X4-10GB-GDDR6X-SDRAM-Grafikkort/2878971'
url:
'https://www.proshop.dk/Grafikkort/Inno3D-GeForce-RTX-3080-iCHILL-X4-10GB-GDDR6X-SDRAM-Grafikkort/2878971'
},
{
brand: 'inno3d',
model: 'ichill 3x',
model: 'ichill x3',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/Inno3D-GeForce-RTX-3080-iCHILL-X3-10GB-GDDR6X-SDRAM-Grafikkort/2878969'
url:
'https://www.proshop.dk/Grafikkort/Inno3D-GeForce-RTX-3080-iCHILL-X3-10GB-GDDR6X-SDRAM-Grafikkort/2878969'
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-GAMING-OC-10GB-GDDR6X-RAM-Grafikkort/2876838'
url:
'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-GAMING-OC-10GB-GDDR6X-RAM-Grafikkort/2876838'
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-Eagle-OC-10GB-GDDR6X-RAM-Grafikkort/2876837'
url:
'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-Eagle-OC-10GB-GDDR6X-RAM-Grafikkort/2876837'
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/Inno3D-GeForce-RTX-3080-Twin-X2-OC-10GB-GDDR6X-SDRAM-Grafikkort/2878968'
url:
'https://www.proshop.dk/Grafikkort/Inno3D-GeForce-RTX-3080-Twin-X2-OC-10GB-GDDR6X-SDRAM-Grafikkort/2878968'
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-Vision-OC-10GB-GDDR6X-RAM-Grafikkort/2878401'
url:
'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-Vision-OC-10GB-GDDR6X-RAM-Grafikkort/2878401'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-AORUS-Master-10GB-GDDR6X-RAM-Grafikkort/2876835'
url:
'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3080-AORUS-Master-10GB-GDDR6X-RAM-Grafikkort/2876835'
},
{
brand: 'asus',
model: 'tuf gaming',
model: 'tuf',
series: '3090',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-TUF-24GB-GDDR6X-RAM-Grafikkort/2876764'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-TUF-24GB-GDDR6X-RAM-Grafikkort/2876764'
},
{
brand: 'asus',
model: 'tuf gaming oc',
model: 'tuf oc',
series: '3090',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-TUF-OC-24GB-GDDR6X-RAM-Grafikkort/2876869'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-TUF-OC-24GB-GDDR6X-RAM-Grafikkort/2876869'
},
{
brand: 'asus',
model: 'strix gaming',
model: 'strix',
series: '3090',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-ROG-STRIX-24GB-GDDR6X-RAM-Grafikkort/2876865'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-ROG-STRIX-24GB-GDDR6X-RAM-Grafikkort/2876865'
},
{
brand: 'asus',
model: 'strix gaming oc',
model: 'strix oc',
series: '3090',
url: 'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-ROG-STRIX-OC-24GB-GDDR6X-RAM-Grafikkort/2876867'
url:
'https://www.proshop.dk/Grafikkort/ASUS-GeForce-RTX-3090-ROG-STRIX-OC-24GB-GDDR6X-RAM-Grafikkort/2876867'
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3090-GAMING-X-TRIO-24GB-GDDR6X-RAM-Grafikkort/2876881'
url:
'https://www.proshop.dk/Grafikkort/MSI-GeForce-RTX-3090-GAMING-X-TRIO-24GB-GDDR6X-RAM-Grafikkort/2876881'
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3090',
url: 'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3090-AORUS-Master-24GB-GDDR6X-RAM-Grafikkort/2876840'
url:
'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3090-AORUS-Master-24GB-GDDR6X-RAM-Grafikkort/2876840'
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3090',
url: 'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3090-AORUS-Xtreme-24GB-GDDR6X-RAM-Grafikkort/2876839'
url:
'https://www.proshop.dk/Grafikkort/GIGABYTE-GeForce-RTX-3090-AORUS-Xtreme-24GB-GDDR6X-RAM-Grafikkort/2876839'
}
],
name: 'proshop-dk'
};
+21 -5
View File
@@ -2,6 +2,10 @@ import {Store} from './store';
export const Saturn: Store = {
labels: {
captcha: {
container: 'body',
text: ['Das ging uns leider zu schnell.']
},
maxPrice: {
container: 'span[font-family="price"]',
euroFormat: false // Note: Saturn uses non-euroFromat as price seperator
@@ -20,7 +24,7 @@ export const Saturn: Store = {
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3070',
url: 'https://www.saturn.de/de/product/-2691244.html'
},
@@ -44,13 +48,13 @@ export const Saturn: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3080',
url: 'https://www.saturn.de/de/product/-2681869.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3080',
url: 'https://www.saturn.de/de/product/-2681871.html'
},
@@ -110,13 +114,13 @@ export const Saturn: Store = {
},
{
brand: 'asus',
model: 'rog strix',
model: 'strix',
series: '3090',
url: 'https://www.saturn.de/de/product/-2681863.html'
},
{
brand: 'asus',
model: 'rog strix oc',
model: 'strix oc',
series: '3090',
url: 'https://www.saturn.de/de/product/-2681866.html'
},
@@ -155,6 +159,18 @@ export const Saturn: Store = {
model: 'gaming x trio',
series: '3090',
url: 'https://www.saturn.de/de/product/-2683226.html'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.saturn.de/de/product/-2661938.html'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.saturn.de/de/product/-2661939.html'
}
],
name: 'saturn'
+54 -8
View File
@@ -4,10 +4,12 @@ import {getProductLinksBuilder} from './helpers/card';
export const Scan: Store = {
disableAdBlocker: true,
labels: {
captcha: [{
container: '#challenge-form',
text: ['hcaptcha_submit']
}],
captcha: [
{
container: '#challenge-form',
text: ['hcaptcha_submit']
}
],
inStock: {
container: '.buyPanel .priceAvailability',
text: ['add to basket', 'in stock']
@@ -26,7 +28,48 @@ export const Scan: Store = {
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.scan.co.uk/products/msi-geforce-rtx-2060-ventus-xs-oc-6gb-gddr6-vr-ready-graphics-card-1920-core-1710mhz-boost'
url:
'https://www.scan.co.uk/products/msi-geforce-rtx-2060-ventus-xs-oc-6gb-gddr6-vr-ready-graphics-card-1920-core-1710mhz-boost'
},
{
brand: 'sony',
model: 'ps5 console',
series: 'sonyps5c',
url: 'https://www.scan.co.uk/products/playstation-5-console'
},
{
brand: 'sony',
model: 'ps5 digital',
series: 'sonyps5de',
url: 'https://www.scan.co.uk/products/playstation-5-digital-edition'
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.scan.co.uk/products/amd-ryzen-5-5600x-am4-zen-3-6-core-12-thread-37ghz-46ghz-turbo-35mb-cache-pcie-40-65w-cpu'
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.scan.co.uk/products/amd-ryzen-7-5800x-am4-zen-3-8-core-16-thread-38ghz-47ghz-turbo-36mb-cache-pcie-40-105w-cpu'
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.scan.co.uk/products/amd-ryzen-9-5900x-am4-zen-3-12-core-24-thread-37ghz-48ghz-turbo-70mb-cache-pcie-40-105w-cpu'
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.scan.co.uk/products/amd-ryzen-9-5950x-am4-zen-3-16-core-32-thread-34ghz-49ghz-turbo-72mb-cache-pcie-40-105w-cpu'
}
],
linksBuilder: {
@@ -40,15 +83,18 @@ export const Scan: Store = {
urls: [
{
series: '3070',
url: 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3070-graphics-cards'
url:
'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3070-graphics-cards'
},
{
series: '3080',
url: 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3080-graphics-cards'
url:
'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3080-graphics-cards'
},
{
series: '3090',
url: 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3090-graphics-cards'
url:
'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3090-graphics-cards'
}
]
},

Some files were not shown because too many files have changed in this diff Show More