mirror of
https://github.com/opelly27/streetmerchant.git
synced 2026-05-20 11:07:43 +00:00
Compare commits
66 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bdd74e5b16 | |||
| 32702929a9 | |||
| b4de369ca8 | |||
| ccb207abeb | |||
| 841647c06c | |||
| 23d061b387 | |||
| a5249ecc7c | |||
| 0e730f4203 | |||
| bc8c14c88d | |||
| 5be33d045f | |||
| d19dd5a404 | |||
| b1f1ea6ef0 | |||
| 15e4520213 | |||
| 0904253cc6 | |||
| 318e626e78 | |||
| 0bf9ba2e18 | |||
| 9f28fe5803 | |||
| ab1fddf20c | |||
| ff79d9e70d | |||
| 050fd9faf6 | |||
| 0128718ba7 | |||
| 037056156e | |||
| d9692c7bbd | |||
| 0754feccae | |||
| e8fd2f7c5b | |||
| 314f533f0b | |||
| 4e086e9267 | |||
| dde9837829 | |||
| 25700567c5 | |||
| c02241c752 | |||
| 38937f6880 | |||
| 0362bf8081 | |||
| 815822f6f8 | |||
| f9a6fd025a | |||
| 2291b8eff5 | |||
| 8a459056c5 | |||
| 9320918335 | |||
| 0d14500d5d | |||
| 42ef7cfdce | |||
| 0a680e977b | |||
| 19fd6895e7 | |||
| e3fcc70bb3 | |||
| 71d5cb4261 | |||
| deb17d109f | |||
| 760ddf5d85 | |||
| 5db83484f3 | |||
| 85208c4452 | |||
| df3b10b9a5 | |||
| c8a9b0ba3e | |||
| 2955ea70ab | |||
| 7ec2894147 | |||
| 6924f362ba | |||
| 31a3d8f7e0 | |||
| a293f5e747 | |||
| 2d3ea40a59 | |||
| 6861b3d052 | |||
| 3f9b3c6017 | |||
| 30720d3ca6 | |||
| 0c550312bb | |||
| 30eb6a60cd | |||
| 2737574b03 | |||
| d3c1a0233e | |||
| 6ced13e993 | |||
| ec7be28f2e | |||
| 018784e653 | |||
| 3c5407f5cf |
+1
-1
@@ -7,6 +7,6 @@ charset = utf-8
|
|||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
[*.{yml, json.md}]
|
[*.{yml, json, md}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|||||||
+17
-1
@@ -1,7 +1,10 @@
|
|||||||
# ** All configuration variables are optional **
|
# ** 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
|
||||||
#############################################################################################
|
#############################################################################################
|
||||||
|
|
||||||
|
ASCII_BANNER=
|
||||||
|
ASCII_COLOR=
|
||||||
|
AUTO_ADD_TO_CART=
|
||||||
BROWSER_TRUSTED=
|
BROWSER_TRUSTED=
|
||||||
COUNTRY=
|
COUNTRY=
|
||||||
DESKTOP_NOTIFICATIONS=
|
DESKTOP_NOTIFICATIONS=
|
||||||
@@ -17,6 +20,10 @@ LOW_BANDWIDTH=
|
|||||||
MAX_PRICE_SERIES_3070=
|
MAX_PRICE_SERIES_3070=
|
||||||
MAX_PRICE_SERIES_3080=
|
MAX_PRICE_SERIES_3080=
|
||||||
MAX_PRICE_SERIES_3090=
|
MAX_PRICE_SERIES_3090=
|
||||||
|
MAX_PRICE_SERIES_RYZEN5600=
|
||||||
|
MAX_PRICE_SERIES_RYZEN5800=
|
||||||
|
MAX_PRICE_SERIES_RYZEN5900=
|
||||||
|
MAX_PRICE_SERIES_RYZEN5950=
|
||||||
MICROCENTER_LOCATION=
|
MICROCENTER_LOCATION=
|
||||||
MQTT_BROKER_ADDRESS=
|
MQTT_BROKER_ADDRESS=
|
||||||
MQTT_BROKER_PORT=
|
MQTT_BROKER_PORT=
|
||||||
@@ -35,6 +42,15 @@ PAGE_SLEEP_MAX=
|
|||||||
PAGE_TIMEOUT=
|
PAGE_TIMEOUT=
|
||||||
PAGERDUTY_INTEGRATION_KEY=
|
PAGERDUTY_INTEGRATION_KEY=
|
||||||
PAGERDUTY_SEVERITY=
|
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_CARRIER=
|
||||||
PHONE_NUMBER=
|
PHONE_NUMBER=
|
||||||
PLAY_SOUND=
|
PLAY_SOUND=
|
||||||
|
|||||||
@@ -3,30 +3,37 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
- develop
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- '**.md'
|
- '**.md'
|
||||||
jobs:
|
jobs:
|
||||||
cd:
|
publish-nightly:
|
||||||
|
if: contains(github.ref, 'develop')
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: GoogleCloudPlatform/release-please-action@v2.5.7
|
|
||||||
id: release
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
release-type: simple
|
|
||||||
package-name: nvidia-snatcher
|
|
||||||
- name: login into github package registry
|
- name: login into github package registry
|
||||||
run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
|
run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
|
||||||
- name: build nightly docker image
|
- name: build nightly docker image
|
||||||
if: ${{ ! steps.release.outputs.release_created }}
|
|
||||||
run: |
|
run: |
|
||||||
docker build \
|
docker build \
|
||||||
-t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \
|
-t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \
|
||||||
-t "ghcr.io/${GITHUB_REPOSITORY}:nightly" .
|
-t "ghcr.io/${GITHUB_REPOSITORY}:nightly" .
|
||||||
- name: publish nightly
|
- name: publish nightly
|
||||||
if: ${{ ! steps.release.outputs.release_created }}
|
|
||||||
run: docker push "ghcr.io/${GITHUB_REPOSITORY}"
|
run: docker push "ghcr.io/${GITHUB_REPOSITORY}"
|
||||||
|
publish-latest:
|
||||||
|
if: contains(github.ref, 'main')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: GoogleCloudPlatform/release-please-action@v2.6.0
|
||||||
|
id: release
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
release-type: simple
|
||||||
|
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 latest docker image
|
- name: build latest docker image
|
||||||
if: ${{ steps.release.outputs.release_created }}
|
if: ${{ steps.release.outputs.release_created }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ name: ci
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- develop
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- '**.md'
|
- '**.md'
|
||||||
jobs:
|
jobs:
|
||||||
@@ -12,7 +12,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-node@v2.1.2
|
- uses: actions/setup-node@v2.1.2
|
||||||
with:
|
with:
|
||||||
node-version: 14
|
node-version: 14.15.0
|
||||||
- uses: actions/cache@v2
|
- uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ~/.npm
|
path: ~/.npm
|
||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: dorny/paths-filter@v2.5.1
|
- uses: dorny/paths-filter@v2.5.2
|
||||||
id: filter
|
id: filter
|
||||||
with:
|
with:
|
||||||
filters: |
|
filters: |
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
15.0.1
|
14.15.0
|
||||||
|
|||||||
+240
-170
@@ -1,244 +1,314 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [1.7.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.6.0...v1.7.0) (2020-11-03)
|
## [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
|
### Features
|
||||||
|
|
||||||
* add deprecation notices ([601742c](https://www.github.com/jef/nvidia-snatcher/commit/601742cf2c0b5ccf0131e4c4e904ad4037d80a8d))
|
* **amazon:** add more 3070s ([#719](https://www.github.com/jef/streetmerchant/issues/719)) ([dde9837](https://www.github.com/jef/streetmerchant/commit/dde9837829b9d52e43800a2ac826b5dd00f5a744))
|
||||||
* newegg realtime api ([#664](https://www.github.com/jef/nvidia-snatcher/issues/664)) ([5b3e95a](https://www.github.com/jef/nvidia-snatcher/commit/5b3e95acdf2f427a6098f15b9fbe65e88354a678))
|
* **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
|
### 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))
|
* **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.6.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.5.0...v1.6.0) (2020-10-29)
|
|
||||||
|
|
||||||
|
### 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
|
### 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))
|
* **asus:** realtime api ([#675](https://www.github.com/jef/streetmerchant/issues/675)) ([018784e](https://www.github.com/jef/streetmerchant/commit/018784e653831103465e8278db4929e04c52397c))
|
||||||
* **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))
|
* **newegg-ca:** realtime api ([#674](https://www.github.com/jef/streetmerchant/issues/674)) ([3c5407f](https://www.github.com/jef/streetmerchant/commit/3c5407f5cfc635ae989101131188e999faa01d3c))
|
||||||
* **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
|
### 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))
|
* **filterBrandsSeriesModels:** always loop all stores ([#680](https://www.github.com/jef/streetmerchant/issues/680)) ([6ced13e](https://www.github.com/jef/streetmerchant/commit/6ced13e993f7b30bbdda5dc7615e895bac3e4f77))
|
||||||
* `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))
|
### Miscellaneous Chores
|
||||||
* 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))
|
* update naming to `streetmerchant` ([3f9b3c6](https://www.github.com/jef/streetmerchant/commit/3f9b3c6017431074d59550a6cd61c80a8897a9ae))
|
||||||
* 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))
|
## [1.7.0](https://www.github.com/jef/streetmerchant/compare/v1.6.0...v1.7.0) (2020-11-03)
|
||||||
* 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))
|
### Features
|
||||||
* 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))
|
* add deprecation notices ([601742c](https://www.github.com/jef/streetmerchant/commit/601742cf2c0b5ccf0131e4c4e904ad4037d80a8d))
|
||||||
* 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)
|
* newegg realtime api ([#664](https://www.github.com/jef/streetmerchant/issues/664)) ([5b3e95a](https://www.github.com/jef/streetmerchant/commit/5b3e95acdf2f427a6098f15b9fbe65e88354a678))
|
||||||
* 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))
|
### Bug Fixes
|
||||||
* 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))
|
* **banner:** add version to docker image ([#649](https://www.github.com/jef/streetmerchant/issues/649)) ([1d2a33b](https://www.github.com/jef/streetmerchant/commit/1d2a33b1d765fece9d1c9bf7d548818d1f0c8d92))
|
||||||
* 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))
|
## [1.6.0](https://www.github.com/jef/streetmerchant/compare/v1.5.0...v1.6.0) (2020-10-29)
|
||||||
* 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))
|
### Features
|
||||||
* **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))
|
* add series to Discord webhook ([#618](https://www.github.com/jef/streetmerchant/issues/618)) ([273d058](https://www.github.com/jef/streetmerchant/commit/273d05841451ed896f1d505bcd24f2230a143d3a))
|
||||||
* **store:** gamestop `label.inStock` ([9e7976d](https://www.github.com/jef/nvidia-snatcher/commit/9e7976df5778a953c4fb6ca7553773655c1f4127))
|
* **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:** pccomponents model normalization ([#563](https://www.github.com/jef/nvidia-snatcher/issues/563)) ([699e77d](https://www.github.com/jef/nvidia-snatcher/commit/699e77d960b17dcb50378975a1913b0badeabfcc))
|
* **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))
|
||||||
* 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))
|
* **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))
|
||||||
* **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:** 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:** 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:** 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:** 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)
|
* **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
|
### Reverts
|
||||||
|
|
||||||
* reduce false-positive during ci/cd ([79b9bfe](https://www.github.com/jef/nvidia-snatcher/commit/79b9bfe9a83858117f7a58b4b8b1a1569d80c442))
|
* reduce false-positive during ci/cd ([79b9bfe](https://www.github.com/jef/streetmerchant/commit/79b9bfe9a83858117f7a58b4b8b1a1569d80c442))
|
||||||
|
|
||||||
## [1.5.0](https://www.github.com/jef/nvidia-snatcher/compare/v1.4.0...v1.5.0) (2020-09-24)
|
## [1.5.0](https://www.github.com/jef/streetmerchant/compare/v1.4.0...v1.5.0) (2020-09-24)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* filter models ([#261](https://www.github.com/jef/nvidia-snatcher/issues/261)) ([e1b34a9](https://www.github.com/jef/nvidia-snatcher/commit/e1b34a9ccfa45fa1a11da9af9074059b6084904b))
|
* 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/nvidia-snatcher/issues/207)) ([0ad67fe](https://www.github.com/jef/nvidia-snatcher/commit/0ad67fe20453898ce0a6b5faff00062735411119))
|
* **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/nvidia-snatcher/issues/140)) ([722eaf3](https://www.github.com/jef/nvidia-snatcher/commit/722eaf3cd680c4600b79f842c6c5acdb9e51ad71))
|
* **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/nvidia-snatcher/issues/226)) ([74490ea](https://www.github.com/jef/nvidia-snatcher/commit/74490eae3ab30de7d7a708d5dd970e070f27f2ea))
|
* **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/nvidia-snatcher/issues/224)) ([908ed35](https://www.github.com/jef/nvidia-snatcher/commit/908ed358826f9de530f5892ded1a54964a304d15))
|
* **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/nvidia-snatcher/issues/173)) ([71c6774](https://www.github.com/jef/nvidia-snatcher/commit/71c6774511f7ba13d34d2e40b69abf52d06e6225))
|
* **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/nvidia-snatcher/issues/167)) ([8a70f14](https://www.github.com/jef/nvidia-snatcher/commit/8a70f147438584cc334710bc66220d05eb32fcbd))
|
* **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/nvidia-snatcher/issues/229)) ([22fd22f](https://www.github.com/jef/nvidia-snatcher/commit/22fd22fe743d3e286eae3430aecd6e7a0a5de8c0))
|
* **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/nvidia-snatcher/issues/172)) ([605bdd7](https://www.github.com/jef/nvidia-snatcher/commit/605bdd7ca73c585734f6c5df1a86f4fbfbff9163))
|
* **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/nvidia-snatcher/issues/220)) ([190388c](https://www.github.com/jef/nvidia-snatcher/commit/190388cfe4a5e3f19abccd0ff786f654b9a04d2f))
|
* **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/nvidia-snatcher/issues/215)) ([d6a27c9](https://www.github.com/jef/nvidia-snatcher/commit/d6a27c988c7b1011c7a10084d8283a60ed8aea5c))
|
* **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/nvidia-snatcher/issues/249)) ([dd45dba](https://www.github.com/jef/nvidia-snatcher/commit/dd45dba82cb86f7e7664298dd202b93bbbd46d9f))
|
* **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/nvidia-snatcher/issues/258)) ([482fb58](https://www.github.com/jef/nvidia-snatcher/commit/482fb58cbfde6f95fb6f77de790d76e6aa2a5926))
|
* **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/nvidia-snatcher/issues/209)) ([2065680](https://www.github.com/jef/nvidia-snatcher/commit/20656805c1259637bb3a4db465a8d16d4780296a))
|
* 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/nvidia-snatcher/commit/9f470f06e9e9fb605d340c0b0f9016d7288e8c0b))
|
* deprecate nvidia (api), add 3080 add 3090 ([9f470f0](https://www.github.com/jef/streetmerchant/commit/9f470f06e9e9fb605d340c0b0f9016d7288e8c0b))
|
||||||
* invert logic ([#141](https://www.github.com/jef/nvidia-snatcher/issues/141)) ([6608a79](https://www.github.com/jef/nvidia-snatcher/commit/6608a79769ff03543ab4ed2f2cead3410d7d7e99))
|
* 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/nvidia-snatcher/issues/260)) ([8913879](https://www.github.com/jef/nvidia-snatcher/commit/8913879593252c9c83020b2e2c46bad7537b2a20))
|
* 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/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 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/nvidia-snatcher/issues/157)) ([0df2dcf](https://www.github.com/jef/nvidia-snatcher/commit/0df2dcfbd48235fba7126d96cd912634c5b4fdd9))
|
* **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/nvidia-snatcher/issues/214)) ([7875855](https://www.github.com/jef/nvidia-snatcher/commit/78758552b22e608dbdf3e76397f5b5efb893fef5))
|
* **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/nvidia-snatcher/issues/119)) ([4f83b3b](https://www.github.com/jef/nvidia-snatcher/commit/4f83b3b233657841a4068a8ff9dd6c8dbff631c0))
|
* 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/nvidia-snatcher/issues/153)) ([133a54f](https://www.github.com/jef/nvidia-snatcher/commit/133a54fa170bb16dd26b0d72b1a02c56b3851b7f))
|
* 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/nvidia-snatcher/issues/120)) ([252459d](https://www.github.com/jef/nvidia-snatcher/commit/252459d5d3de2b8cb25deee9ae318108e3dda2be))
|
* 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/nvidia-snatcher/issues/121)) ([d9be3fe](https://www.github.com/jef/nvidia-snatcher/commit/d9be3fe6183eaa9694b186c7a75e1f28bb31dace))
|
* 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/nvidia-snatcher/issues/144)) ([7191e03](https://www.github.com/jef/nvidia-snatcher/commit/7191e03a80e577b59b2861289aa658cfa0ffc0fa))
|
* 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/nvidia-snatcher/issues/83)) ([d1a5aa1](https://www.github.com/jef/nvidia-snatcher/commit/d1a5aa1f02ff0a8f293b93e3c078b5943908a95b))
|
* 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/nvidia-snatcher/issues/162)) ([ebd6091](https://www.github.com/jef/nvidia-snatcher/commit/ebd6091a09fb5e52a66742767ae4b58323cd7447))
|
* 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/nvidia-snatcher/issues/147)) ([6413144](https://www.github.com/jef/nvidia-snatcher/commit/6413144c1cae89f33f852cc93870b407a784f2bb))
|
* 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/nvidia-snatcher/issues/108)) ([3ea146d](https://www.github.com/jef/nvidia-snatcher/commit/3ea146da14ea40d145ccfc05436beeb0a9fed8d9))
|
* 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/nvidia-snatcher/issues/82)) ([a3fc07d](https://www.github.com/jef/nvidia-snatcher/commit/a3fc07daf0a3f33f18e03d4cfc13d3477a9c4fa0))
|
* **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/nvidia-snatcher/issues/110)) ([dc0f710](https://www.github.com/jef/nvidia-snatcher/commit/dc0f7106749b0afa0ff1c91cabb90b65be30e909))
|
* **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/nvidia-snatcher/issues/104)) ([5b91065](https://www.github.com/jef/nvidia-snatcher/commit/5b910650430ad4806b22722efa9a013e72ea47e7))
|
* **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/nvidia-snatcher/issues/102)) ([a501cf7](https://www.github.com/jef/nvidia-snatcher/commit/a501cf703bb05f47af6240a4b16a3dc4dcf3baf5))
|
* **store:** add asus ([#102](https://www.github.com/jef/streetmerchant/issues/102)) ([a501cf7](https://www.github.com/jef/streetmerchant/commit/a501cf703bb05f47af6240a4b16a3dc4dcf3baf5))
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### 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))
|
* **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/nvidia-snatcher/commit/76b28a6dbdf5480c12a8c82b031c3f2880d17b11))
|
* color logs and notification ([76b28a6](https://www.github.com/jef/streetmerchant/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))
|
* **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/nvidia-snatcher/issues/201)) ([6409646](https://www.github.com/jef/nvidia-snatcher/commit/6409646d57bf2b2bb5a4bcf8239740abed8edafb))
|
* **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/nvidia-snatcher/issues/106)) ([28947be](https://www.github.com/jef/nvidia-snatcher/commit/28947be9bc8981d7a45a5d0e69c18d039fcd9ed3))
|
* `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/nvidia-snatcher/issues/58)) ([#98](https://www.github.com/jef/nvidia-snatcher/issues/98)) ([b7d9462](https://www.github.com/jef/nvidia-snatcher/commit/b7d9462e794ef3961fb57c79ef8f66e77d25d20a))
|
* 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/nvidia-snatcher/commit/e819e46116d4e0b067a59791094b5cfbd2d7cd45))
|
* 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/nvidia-snatcher/issues/139)) ([0f6e570](https://www.github.com/jef/nvidia-snatcher/commit/0f6e570cc817dfc10bcddc5743a0faf3b1489270))
|
* 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/nvidia-snatcher/issues/132)) ([a75d214](https://www.github.com/jef/nvidia-snatcher/commit/a75d214dd555d5e0388cb54b15be324cc25b6a15))
|
* **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/nvidia-snatcher/issues/124)) ([770a13a](https://www.github.com/jef/nvidia-snatcher/commit/770a13ac3559401b430547908d1df014582c1e37))
|
* 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/nvidia-snatcher/issues/134)) ([19c8f18](https://www.github.com/jef/nvidia-snatcher/commit/19c8f188c796258c469c2b4c6461fc5da3907a47))
|
* 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/nvidia-snatcher/issues/91)) ([103d96d](https://www.github.com/jef/nvidia-snatcher/commit/103d96dc81d6fd097fcdbed5bdd7487d7d73bf6e))
|
* **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/nvidia-snatcher/issues/85)) ([c65fa04](https://www.github.com/jef/nvidia-snatcher/commit/c65fa04666775060532e28076a0b4af50f8dd30b))
|
* **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/nvidia-snatcher/compare/v1.3.0...v1.4.0) (2020-09-19)
|
## [1.4.0](https://www.github.com/jef/streetmerchant/compare/v1.3.0...v1.4.0) (2020-09-19)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### 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 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/nvidia-snatcher/issues/55)) ([c85658b](https://www.github.com/jef/nvidia-snatcher/commit/c85658bf82fdf360e5e9d8345eaa846f0572e67c))
|
* **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/nvidia-snatcher/issues/71)) ([393d5f6](https://www.github.com/jef/nvidia-snatcher/commit/393d5f689887bf1d6f30a37eea163b2e6bbd4efa))
|
* **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/nvidia-snatcher/commit/6be74a19f3d3f999145d17ac8e91c59db2502071))
|
* **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/nvidia-snatcher/issues/75)) ([d4de1a4](https://www.github.com/jef/nvidia-snatcher/commit/d4de1a4638e903eb9518354ab6fb2f8c4befc347))
|
* **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/nvidia-snatcher/issues/52)) ([a217409](https://www.github.com/jef/nvidia-snatcher/commit/a21740942bbbbe967948062fa06cfc82c31eb755))
|
* 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
|
### 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
|
### 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
|
### 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))
|
* **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/nvidia-snatcher/issues/56)) ([d907092](https://www.github.com/jef/nvidia-snatcher/commit/d907092b443b056605e09cb2ca3e94e6ca811d9e))
|
* 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/nvidia-snatcher/issues/53)) ([7cfc7c7](https://www.github.com/jef/nvidia-snatcher/commit/7cfc7c74429c808fa14468cdd497eb9f9aeb922c))
|
* 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/nvidia-snatcher/issues/44)) ([971fec2](https://www.github.com/jef/nvidia-snatcher/commit/971fec20e441e2b12a38d5c8d17d2d4cb5e64d6b))
|
* 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
|
### Features
|
||||||
|
|
||||||
* **ci:** add `npm run build` ([faad3e6](https://www.github.com/jef/nvidia-snatcher/commit/faad3e68efafaab135b77080b02af83429b6eca6))
|
* **ci:** add `npm run build` ([faad3e6](https://www.github.com/jef/streetmerchant/commit/faad3e68efafaab135b77080b02af83429b6eca6))
|
||||||
* **store:** microcenter ([#39](https://www.github.com/jef/nvidia-snatcher/issues/39)) ([edf17e9](https://www.github.com/jef/nvidia-snatcher/commit/edf17e926f3d186e7630da2834d78de3e540a956))
|
* **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/nvidia-snatcher/issues/26)) ([f0560ce](https://www.github.com/jef/nvidia-snatcher/commit/f0560ce72bfbfdd6360b85e23edaa875d58f228f))
|
* 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/nvidia-snatcher/issues/24)) ([a2fb973](https://www.github.com/jef/nvidia-snatcher/commit/a2fb97333c6eb81250b24ccb6859e9356acded21))
|
* 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/nvidia-snatcher/issues/41)) ([7d7bd18](https://www.github.com/jef/nvidia-snatcher/commit/7d7bd18b4dd656ec01ef2fb2d8519e2a7f34ef70))
|
* 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/nvidia-snatcher/issues/22)) ([643045c](https://www.github.com/jef/nvidia-snatcher/commit/643045c7e0158fb6526bd09427b96cce7958bcea))
|
* 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/nvidia-snatcher/issues/34)) ([c0a881a](https://www.github.com/jef/nvidia-snatcher/commit/c0a881a16ebb573bf35b7f29cb27e5b3c2e1fe78))
|
* 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/nvidia-snatcher/issues/40)) ([5a3636b](https://www.github.com/jef/nvidia-snatcher/commit/5a3636bcb639bb33bc586af96264f5df2f3a8307))
|
* 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/nvidia-snatcher/issues/29)) ([00ede13](https://www.github.com/jef/nvidia-snatcher/commit/00ede13501082f530ea672a349816be1d31621a8))
|
* 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
|
### 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
|
### 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 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/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 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
|
### 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)
|
## 1.0.0 (2020-09-18)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### 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))
|
||||||
|
|||||||
@@ -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
@@ -1,5 +1,6 @@
|
|||||||
# Build the source code
|
FROM node:14.15.0-alpine3.12 AS builder
|
||||||
FROM node:15.0.1-alpine3.12 AS builder
|
|
||||||
|
LABEL org.opencontainers.image.source=https://github.com/jef/streetmerchant
|
||||||
|
|
||||||
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
||||||
|
|
||||||
@@ -14,7 +15,7 @@ COPY src/ src/
|
|||||||
RUN npm run build
|
RUN npm run build
|
||||||
RUN npm prune --production
|
RUN npm prune --production
|
||||||
|
|
||||||
FROM node:15.0.1-alpine3.12
|
FROM node:14.15.0-alpine3.12
|
||||||
|
|
||||||
RUN apk add --no-cache chromium
|
RUN apk add --no-cache chromium
|
||||||
|
|
||||||
@@ -32,6 +33,9 @@ WORKDIR /app
|
|||||||
|
|
||||||
COPY --from=builder /build/node_modules/ node_modules/
|
COPY --from=builder /build/node_modules/ node_modules/
|
||||||
COPY --from=builder /build/build/ build/
|
COPY --from=builder /build/build/ build/
|
||||||
|
COPY web/ web/
|
||||||
|
COPY package.json package.json
|
||||||
COPY version.txt version.txt
|
COPY version.txt version.txt
|
||||||
|
|
||||||
CMD [ "node", "./build/index.js" ]
|
ENTRYPOINT ["npm", "run"]
|
||||||
|
CMD ["start:production"]
|
||||||
|
|||||||
@@ -1,40 +1,51 @@
|
|||||||
# nvidia-snatcher [](https://github.com/jef/nvidia-snatcher/actions?query=workflow%3Aci) [](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)
|
## Features
|
||||||
| [Wiki](https://github.com/jef/nvidia-snatcher/wiki)
|
|
||||||
|
|
||||||

|
- Scrapes multiple websites for patterns of being stocked via API and Chromium
|
||||||
|
|
||||||
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)
|
|
||||||
- Opens browser when stock is available
|
- Opens browser when stock is available
|
||||||
- Ability to send notifications when stock is available
|
- Ability to send notifications when stock is available
|
||||||
|
|
||||||
|
> :point_right: The bot _will not_ automatically buy for you
|
||||||
|
|
||||||
## Installation overview
|
## Installation overview
|
||||||
|
|
||||||
Linux, macOS, and Windows are all capable operating systems.
|
Linux, macOS, and Windows are all capable operating systems.
|
||||||
|
|
||||||
You do not need any computer skills, smarts, or anything of that nature. You are very capable as you have made it this
|
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
|
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
|
### Installation: native
|
||||||
|
|
||||||
- [Node.js 15](https://nodejs.org/en/)
|
| Branch | Note |
|
||||||
|
|:---:|---|
|
||||||
|
| `main` | Latest release; usually tagged, stable |
|
||||||
|
| `develop` | Latest HEAD; not tagged, could be unstable |
|
||||||
|
|
||||||
|
- [Node.js 14](https://nodejs.org/en/)
|
||||||
- [git](https://git-scm.com/)
|
- [git](https://git-scm.com/)
|
||||||
- Clone this project `git clone https://github.com/jef/nvidia-snatcher.git`
|
- Clone this project `git clone https://github.com/jef/streetmerchant.git`
|
||||||
|
- To checkout a particular branch, use `git checkout <branch name>` after cloning
|
||||||
- Run `npm install`
|
- Run `npm install`
|
||||||
- Copy `.env-example` to a new file `.env` and edit the `.env` file to your liking using
|
- 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/)
|
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
|
- Run `npm run start` to start
|
||||||
|
|
||||||
At any point you want the program to stop, use <kbd>Ctrl</kbd> + <kbd>C</kbd>.
|
At any point you want the program to stop, use <kbd>Ctrl</kbd> + <kbd>C</kbd>.
|
||||||
|
|
||||||
> :point_right: Please visit the [wiki](https://github.com/jef/nvidia-snatcher/wiki) if you need more help with installation.
|
> :point_right: Please visit the [wiki](https://github.com/jef/streetmerchant/wiki) if you need more help with installation.
|
||||||
|
|
||||||
### Installation: Docker
|
### Installation: Docker
|
||||||
|
|
||||||
@@ -42,10 +53,20 @@ Available via GitHub Container Registry.
|
|||||||
|
|
||||||
| Tag | Note |
|
| Tag | Note |
|
||||||
|:---:|---|
|
|:---:|---|
|
||||||
| `latest` | Latest stable build |
|
| `latest` | Latest release; usually tagged, stable |
|
||||||
| `nightly` | Latest HEAD build, could be unstable |
|
| `nightly` | Latest HEAD; not tagged, 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
|
### Developer notes
|
||||||
|
|
||||||
@@ -54,7 +75,7 @@ filesystem changes are detected in the `src/` folder or `.env` file.
|
|||||||
|
|
||||||
## Customization
|
## Customization
|
||||||
|
|
||||||
To customize `nvidia-snatcher`, make a copy of `.env-example` as `.env` and make any changes to your liking. _All
|
To customize `streetmerchant`, make a copy of `.env-example` as `.env` and make any changes to your liking. _All
|
||||||
environment variables are **optional**._
|
environment variables are **optional**._
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@@ -64,6 +85,7 @@ environment variables are **optional**._
|
|||||||
|
|
||||||
| Environment variable | Description | Notes |
|
| 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` |
|
| `BROWSER_TRUSTED` | Skip Chromium Sandbox | Useful for containerized environments, default: `false` |
|
||||||
| `HEADLESS` | Puppeteer to run headless or not | Debugging related, default: `true` |
|
| `HEADLESS` | Puppeteer to run headless or not | Debugging related, default: `true` |
|
||||||
| `INCOGNITO` | Puppeteer to run incognito or not | Debugging related, default: `false` |
|
| `INCOGNITO` | Puppeteer to run incognito or not | Debugging related, default: `false` |
|
||||||
@@ -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: 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
|
### 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_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_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_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` |
|
| `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_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` |
|
| `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_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_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` |
|
| `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>
|
<details>
|
||||||
@@ -118,7 +144,10 @@ environment variables are **optional**._
|
|||||||
| Amazon (ES) | `amazon-es`|
|
| Amazon (ES) | `amazon-es`|
|
||||||
| Amazon (NL) | `amazon-nl`|
|
| Amazon (NL) | `amazon-nl`|
|
||||||
| Amazon (UK) | `amazon-uk`|
|
| Amazon (UK) | `amazon-uk`|
|
||||||
|
| AMD | `amd`|
|
||||||
|
| AMD (DE) | `amd-de`|
|
||||||
| Aria PC (UK) | `aria`|
|
| Aria PC (UK) | `aria`|
|
||||||
|
| ARLT (DE) | `arlt`|
|
||||||
| ASUS | `asus` |
|
| ASUS | `asus` |
|
||||||
| ASUS (DE) | `asus-de` |
|
| ASUS (DE) | `asus-de` |
|
||||||
| Azerty (NL) | `azerty`|
|
| Azerty (NL) | `azerty`|
|
||||||
@@ -136,8 +165,12 @@ environment variables are **optional**._
|
|||||||
| eBuyer (UK) | `ebuyer`|
|
| eBuyer (UK) | `ebuyer`|
|
||||||
| EVGA | `evga`|
|
| EVGA | `evga`|
|
||||||
| EVGA (EU) | `evga-eu`|
|
| EVGA (EU) | `evga-eu`|
|
||||||
|
| Galaxus (DE) | `galaxus`|
|
||||||
|
| Game (UK) | `game`|
|
||||||
| Gamestop | `gamestop`|
|
| Gamestop | `gamestop`|
|
||||||
|
| Kabum (BR) | `kabum`|
|
||||||
| Mediamarkt (DE) | `mediamarkt`|
|
| Mediamarkt (DE) | `mediamarkt`|
|
||||||
|
| MemoryExpress (CA) | `memoryexpress`|
|
||||||
| Micro Center | `microcenter`|
|
| Micro Center | `microcenter`|
|
||||||
| Mindfactory (DE) | `mindfactory` |
|
| Mindfactory (DE) | `mindfactory` |
|
||||||
| Newegg | `newegg`|
|
| Newegg | `newegg`|
|
||||||
@@ -154,7 +187,9 @@ environment variables are **optional**._
|
|||||||
| Proshop (DK) | `proshop-dk`|
|
| Proshop (DK) | `proshop-dk`|
|
||||||
| Saturn (DE) | `saturn`|
|
| Saturn (DE) | `saturn`|
|
||||||
| Scan (UK) | `scan`|
|
| Scan (UK) | `scan`|
|
||||||
|
| Target | `target`|
|
||||||
| Very (UK) | `very`|
|
| Very (UK) | `very`|
|
||||||
|
| Walmart | `walmart`|
|
||||||
| Zotac | `zotac`|
|
| Zotac | `zotac`|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@@ -162,7 +197,7 @@ environment variables are **optional**._
|
|||||||
|
|
||||||
> :point_right: Used with the `MICROCENTER_LOCATION` variable.
|
> :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 |
|
| Store name |
|
||||||
|:---:|
|
|:---:|
|
||||||
@@ -203,16 +238,19 @@ environment variables are **optional**._
|
|||||||
|
|
||||||
| Brand | Model |
|
| 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` |
|
| `evga` | `ftw3`, `ftw3 ultra`, `xc3`, `xc3 black`, `xc3 ultra` |
|
||||||
| `gainward` | `phantom gs`, `phoenix`, `phoenix gs`, `phoenix gs oc` |
|
| `gainward` | `phantom gs`, `phoenix`, `phoenix gs`, `phoenix gs oc` |
|
||||||
| `gigabyte` | `aorus master`, `aorus xtreme`, `eagle`, `eagle oc`, `gaming`, `gaming oc`, `turbo`, `vision`, `vision 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` |
|
| `inno3d` | `gaming x3`, `ichill x3`, `ichill x4`, `twin x2 oc` |
|
||||||
| `kfa2` | `sg oc` |
|
| `kfa2` | `sg oc` |
|
||||||
|
| `microsoft` | `xboxsx` , `xboxss` |
|
||||||
| `msi` | `gaming x trio`, `ventus 2x oc`, `ventus 3x`, `ventus 3x oc` |
|
| `msi` | `gaming x trio`, `ventus 2x oc`, `ventus 3x`, `ventus 3x oc` |
|
||||||
| `nvidia` | `founders edition` |
|
| `nvidia` | `founders edition` |
|
||||||
| `palit` | `gamerock oc`, `gaming pro`, `gaming pro oc` |
|
| `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` |
|
| `zotac` | `amp holo`, `amp extreme holo`, `trinity`, `trinity oc`, `twin edge`, `twin edge oc` |
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
@@ -265,7 +303,7 @@ environment variables are **optional**._
|
|||||||
|
|
||||||
| Environment variable | Description | Notes |
|
| 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 |
|
| `DISCORD_WEB_HOOK` | Discord Web Hook URL | Can be comma separated, use whole webhook URL |
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
@@ -278,8 +316,8 @@ environment variables are **optional**._
|
|||||||
| `EMAIL_PASSWORD` | Gmail password | See below if you have MFA |
|
| `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_TO` | Destination Email | Defaults to username if not set. Can be comma separated |
|
||||||
| `EMAIL_USERNAME` | Gmail address | E.g.: `jensen.robbed.us@gmail.com` |
|
| `EMAIL_USERNAME` | Gmail address | E.g.: `jensen.robbed.us@gmail.com` |
|
||||||
| `PHONE_CARRIER` | [Supported carriers](#supported-carriers) for SMS | 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 | E.g.: `1234567890`, email configuration required |
|
| `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_ADDRESS` | IP Address or fqdn of smtp server |
|
||||||
| `SMTP_PORT` | TCP Port number on which the smtp server is listening for connections | Default: `25` |
|
| `SMTP_PORT` | TCP Port number on which the smtp server is listening for connections | Default: `25` |
|
||||||
|
|
||||||
@@ -316,7 +354,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_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_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_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 |
|
| `MQTT_USERNAME` | MQTT username - (only if required by MQTT Broker) | e.g myusername |
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
@@ -331,6 +369,25 @@ environment variables are **optional**._
|
|||||||
|
|
||||||
</details>
|
</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>
|
<details>
|
||||||
<summary>Pushbullet</summary>
|
<summary>Pushbullet</summary>
|
||||||
|
|
||||||
@@ -408,7 +465,6 @@ environment variables are **optional**._
|
|||||||
| `TWITCH_CHANNEL` | Twitch channel | |
|
| `TWITCH_CHANNEL` | Twitch channel | |
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
@@ -429,19 +485,24 @@ 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: 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.
|
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
|
**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
|
**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
|
an [issue](https://github.com/jef/streetmerchant/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).
|
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
|
**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
|
a [pull request](https://github.com/jef/streetmerchant/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc)! All contributions
|
||||||
contributions are welcome.
|
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.
|
**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).
|
||||||
|
|
||||||
|
<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 |
Generated
+63
-14152
File diff suppressed because it is too large
Load Diff
+14
-10
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "nvidia-snatcher",
|
"name": "streetmerchant",
|
||||||
"description": "🔮 For all your Nvidia needs",
|
"description": "🔮 For all your Nvidia needs",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -9,19 +9,21 @@
|
|||||||
"lint:fix": "xo --fix",
|
"lint:fix": "xo --fix",
|
||||||
"start": "npm run build && node build/index.js",
|
"start": "npm run build && node build/index.js",
|
||||||
"start:dev": "nodemon --config nodemon.json",
|
"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": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/jef/nvidia-snatcher.git"
|
"url": "git+https://github.com/jef/streetmerchant.git"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "jef",
|
"author": "jef",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"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": {
|
"dependencies": {
|
||||||
"@jef/pushbullet": "^2.4.3",
|
"@jef/pushbullet": "^2.4.3",
|
||||||
"@slack/web-api": "^5.13.0",
|
"@slack/web-api": "^5.13.0",
|
||||||
@@ -32,9 +34,10 @@
|
|||||||
"messaging-api-telegram": "^1.0.1",
|
"messaging-api-telegram": "^1.0.1",
|
||||||
"mqtt": "^4.2.4",
|
"mqtt": "^4.2.4",
|
||||||
"node-fetch": "^2.6.1",
|
"node-fetch": "^2.6.1",
|
||||||
|
"node-hue-api": "^4.0.9",
|
||||||
"node-notifier": "^8.0.0",
|
"node-notifier": "^8.0.0",
|
||||||
"node-pagerduty": "^1.3.5",
|
"node-pagerduty": "^1.3.5",
|
||||||
"nodemailer": "^6.4.14",
|
"nodemailer": "^6.4.15",
|
||||||
"open": "^7.3.0",
|
"open": "^7.3.0",
|
||||||
"play-sound": "^1.1.3",
|
"play-sound": "^1.1.3",
|
||||||
"puppeteer": "^5.4.1",
|
"puppeteer": "^5.4.1",
|
||||||
@@ -43,7 +46,7 @@
|
|||||||
"puppeteer-extra-plugin-block-resources": "^2.2.7",
|
"puppeteer-extra-plugin-block-resources": "^2.2.7",
|
||||||
"puppeteer-extra-plugin-stealth": "^2.6.5",
|
"puppeteer-extra-plugin-stealth": "^2.6.5",
|
||||||
"pushover-notifications": "^1.2.2",
|
"pushover-notifications": "^1.2.2",
|
||||||
"twilio": "^3.50.0",
|
"twilio": "^3.51.0",
|
||||||
"twitch": "^4.2.7",
|
"twitch": "^4.2.7",
|
||||||
"twitch-auth": "^4.2.7",
|
"twitch-auth": "^4.2.7",
|
||||||
"twitch-chat-client": "^4.2.7",
|
"twitch-chat-client": "^4.2.7",
|
||||||
@@ -53,20 +56,21 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/async": "^3.2.3",
|
"@types/async": "^3.2.3",
|
||||||
"@types/cheerio": "^0.22.22",
|
"@types/cheerio": "^0.22.22",
|
||||||
"@types/node": "^14.14.6",
|
"@types/node": "^14.14.7",
|
||||||
"@types/node-fetch": "^2.5.7",
|
"@types/node-fetch": "^2.5.7",
|
||||||
"@types/node-notifier": "^8.0.0",
|
"@types/node-notifier": "^8.0.0",
|
||||||
"@types/nodemailer": "^6.4.0",
|
"@types/nodemailer": "^6.4.0",
|
||||||
"@types/puppeteer": "^3.0.4",
|
"@types/puppeteer": "^5.4.0",
|
||||||
"@types/twitter": "^1.7.0",
|
"@types/twitter": "^1.7.0",
|
||||||
"husky": "^4.3.0",
|
"husky": "^4.3.0",
|
||||||
"nodemon": "^2.0.6",
|
"nodemon": "^2.0.6",
|
||||||
"ts-node": "^9.0.0",
|
"ts-node": "^9.0.0",
|
||||||
"typescript": "^4.0.5",
|
"typescript": "^4.0.5",
|
||||||
"webpack": "^5.3.2",
|
"webpack": "^5.4.0",
|
||||||
"xo": "^0.33.1"
|
"xo": "^0.33.1"
|
||||||
},
|
},
|
||||||
"xo": {
|
"xo": {
|
||||||
|
"prettier": true,
|
||||||
"rules": {
|
"rules": {
|
||||||
"sort-imports": "error",
|
"sort-imports": "error",
|
||||||
"sort-keys": "error",
|
"sort-keys": "error",
|
||||||
|
|||||||
+20
-10
@@ -3,13 +3,23 @@ import {readFileSync} from 'fs';
|
|||||||
|
|
||||||
const version = readFileSync('version.txt', 'utf8');
|
const version = readFileSync('version.txt', 'utf8');
|
||||||
|
|
||||||
export const banner = chalk.green.bold(`
|
export const banner = {
|
||||||
$$\\ $$\\ $$\\ $$\\ $$\\
|
asciiVersion: `
|
||||||
\\__| $$ |\\__| $$ | $$ |
|
██████ ▄▄▄█████▓ ██▀███ ▓█████ ▓█████▄▄▄█████▓ ███▄ ▄███▓▓█████ ██▀███ ▄████▄ ██░ ██ ▄▄▄ ███▄ █ ▄▄▄█████▓
|
||||||
$$$$$$$\\ $$\\ $$\\ $$\\ $$$$$$$ |$$\\ $$$$$$\\ $$$$$$$\\ $$$$$$$\\ $$$$$$\\ $$$$$$\\ $$$$$$$\\ $$$$$$$\\ $$$$$$\\ $$$$$$\\
|
▒██ ▒ ▓ ██▒ ▓▒▓██ ▒ ██▒▓█ ▀ ▓█ ▀▓ ██▒ ▓▒▓██▒▀█▀ ██▒▓█ ▀ ▓██ ▒ ██▒▒██▀ ▀█ ▓██░ ██▒▒████▄ ██ ▀█ █ ▓ ██▒ ▓▒
|
||||||
$$ __$$\\\\$$\\ $$ |$$ |$$ __$$ |$$ | \\____$$\\ $$$$$$\\ $$ _____|$$ __$$\\ \\____$$\\\\_$$ _| $$ _____|$$ __$$\\ $$ __$$\\ $$ __$$\\
|
░ ▓██▄ ▒ ▓██░ ▒░▓██ ░▄█ ▒▒███ ▒███ ▒ ▓██░ ▒░▓██ ▓██░▒███ ▓██ ░▄█ ▒▒▓█ ▄ ▒██▀▀██░▒██ ▀█▄ ▓██ ▀█ ██▒▒ ▓██░ ▒░
|
||||||
$$ | $$ |\\$$\\$$ / $$ |$$ / $$ |$$ | $$$$$$$ |\\______|\\$$$$$$\\ $$ | $$ | $$$$$$$ | $$ | $$ / $$ | $$ |$$$$$$$$ |$$ | \\__|
|
▒ ██▒░ ▓██▓ ░ ▒██▀▀█▄ ▒▓█ ▄ ▒▓█ ▄░ ▓██▓ ░ ▒██ ▒██ ▒▓█ ▄ ▒██▀▀█▄ ▒▓▓▄ ▄██▒░▓█ ░██ ░██▄▄▄▄██ ▓██▒ ▐▌██▒░ ▓██▓ ░
|
||||||
$$ | $$ | \\$$$ / $$ |$$ | $$ |$$ |$$ __$$ | \\____$$\\ $$ | $$ |$$ __$$ | $$ |$$\\ $$ | $$ | $$ |$$ ____|$$ |
|
▒██████▒▒ ▒██▒ ░ ░██▓ ▒██▒░▒████▒░▒████▒ ▒██▒ ░ ▒██▒ ░██▒░▒████▒░██▓ ▒██▒▒ ▓███▀ ░░▓█▒░██▓ ▓█ ▓██▒▒██░ ▓██░ ▒██▒ ░
|
||||||
$$ | $$ | \\$ / $$ |\\$$$$$$$ |$$ |\\$$$$$$$ | $$$$$$$ |$$ | $$ |\\$$$$$$$ | \\$$$$ |\\$$$$$$$\\ $$ | $$ |\\$$$$$$$\\ $$ |
|
▒ ▒▓▒ ▒ ░ ▒ ░░ ░ ▒▓ ░▒▓░░░ ▒░ ░░░ ▒░ ░ ▒ ░░ ░ ▒░ ░ ░░░ ▒░ ░░ ▒▓ ░▒▓░░ ░▒ ▒ ░ ▒ ░░▒░▒ ▒▒ ▓▒█░░ ▒░ ▒ ▒ ▒ ░░
|
||||||
\\__| \\__| \\_/ \\__| \\_______|\\__| \\_______| \\_______/ \\__| \\__| \\_______| \\____/ \\_______|\\__| \\__| \\_______|\\__|
|
░ ░▒ ░ ░ ░ ░▒ ░ ▒░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒ ░▒░ ░ ▒ ▒▒ ░░ ░░ ░ ▒░ ░
|
||||||
${version}`);
|
░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░
|
||||||
|
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
|
||||||
|
${version}`,
|
||||||
|
render(ascii: boolean, hexColor: string) {
|
||||||
|
return chalk
|
||||||
|
.hex(hexColor)
|
||||||
|
.bold(ascii ? this.asciiVersion : this.stringVersion);
|
||||||
|
},
|
||||||
|
stringVersion: `STREETMERCHANT
|
||||||
|
${version}`
|
||||||
|
};
|
||||||
|
|||||||
+131
-32
@@ -1,22 +1,33 @@
|
|||||||
import {banner} from './banner';
|
import {banner} from './banner';
|
||||||
|
|
||||||
console.info(banner);
|
|
||||||
|
|
||||||
import {config as config_} from 'dotenv';
|
import {config as config_} from 'dotenv';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
||||||
config_({path: path.resolve(__dirname, '../.env')});
|
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.
|
* Returns environment variable, given array, or default array.
|
||||||
*
|
*
|
||||||
* @param environment Interested environment variable.
|
* @param environment Interested environment variable.
|
||||||
* @param array Default array. If not set, is `[]`.
|
* @param array Default array. If not set, is `[]`.
|
||||||
*/
|
*/
|
||||||
function envOrArray(environment: string | undefined, array?: string[]): string[] {
|
function envOrArray(
|
||||||
return (environment ? (
|
environment: string | undefined,
|
||||||
environment.includes('\n') ? environment.split('\n') : environment.split(',')
|
array?: string[]
|
||||||
) : (array ?? [])).map(s => s.trim());
|
): 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 environment Interested environment variable.
|
||||||
* @param boolean Default boolean. If not set, is `true`.
|
* @param boolean Default boolean. If not set, is `true`.
|
||||||
*/
|
*/
|
||||||
function envOrBoolean(environment: string | undefined, boolean?: boolean): boolean {
|
function envOrBoolean(
|
||||||
return environment ? environment === 'true' : (boolean ?? true);
|
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 `''`.
|
* @param string Default string. If not set, is `''`.
|
||||||
*/
|
*/
|
||||||
function envOrString(environment: string | undefined, string?: string): string {
|
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`.
|
* @param number Default number. If not set, is `0`.
|
||||||
*/
|
*/
|
||||||
function envOrNumber(environment: string | undefined, number?: number): number {
|
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 environmentMax Max environment variable of Min/Max pair.
|
||||||
* @param number Default number. If not set, is `0`.
|
* @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) {
|
||||||
if (environmentMin && environmentMax) {
|
if (environmentMin && environmentMax) {
|
||||||
return Number(Number(environmentMin) < Number(environmentMax) ? environmentMin : environmentMax);
|
return Number(
|
||||||
|
Number(environmentMin) < Number(environmentMax)
|
||||||
|
? environmentMin
|
||||||
|
: environmentMax
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (environmentMax) {
|
if (environmentMax) {
|
||||||
return Number(environmentMax) < (number ?? 0) ? Number(environmentMax) : (number ?? 0);
|
return Number(environmentMax) < (number ?? 0)
|
||||||
|
? Number(environmentMax)
|
||||||
|
: number ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (environmentMin) {
|
if (environmentMin) {
|
||||||
@@ -91,14 +115,24 @@ function envOrNumberMin(environmentMin: string | undefined, environmentMax: stri
|
|||||||
* @param environmentMax Max environment variable of Min/Max pair.
|
* @param environmentMax Max environment variable of Min/Max pair.
|
||||||
* @param number Default number. If not set, is `0`.
|
* @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) {
|
||||||
if (environmentMin && environmentMax) {
|
if (environmentMin && environmentMax) {
|
||||||
return Number(Number(environmentMin) < Number(environmentMax) ? environmentMax : environmentMax);
|
return Number(
|
||||||
|
Number(environmentMin) < Number(environmentMax)
|
||||||
|
? environmentMax
|
||||||
|
: environmentMax
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (environmentMin) {
|
if (environmentMin) {
|
||||||
return Number(environmentMin) > (number ?? 0) ? Number(environmentMin) : (number ?? 0);
|
return Number(environmentMin) > (number ?? 0)
|
||||||
|
? Number(environmentMin)
|
||||||
|
: number ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (environmentMax) {
|
if (environmentMax) {
|
||||||
@@ -114,10 +148,26 @@ const browser = {
|
|||||||
isIncognito: envOrBoolean(process.env.INCOGNITO, false),
|
isIncognito: envOrBoolean(process.env.INCOGNITO, false),
|
||||||
isTrusted: envOrBoolean(process.env.BROWSER_TRUSTED, false),
|
isTrusted: envOrBoolean(process.env.BROWSER_TRUSTED, false),
|
||||||
lowBandwidth: envOrBoolean(process.env.LOW_BANDWIDTH, false),
|
lowBandwidth: envOrBoolean(process.env.LOW_BANDWIDTH, false),
|
||||||
maxBackoff: envOrNumberMax(process.env.PAGE_BACKOFF_MIN, process.env.PAGE_BACKOFF_MAX, 3600000),
|
maxBackoff: envOrNumberMax(
|
||||||
maxSleep: envOrNumberMax(process.env.PAGE_SLEEP_MIN, process.env.PAGE_SLEEP_MAX, 10000),
|
process.env.PAGE_BACKOFF_MIN,
|
||||||
minBackoff: envOrNumberMin(process.env.PAGE_BACKOFF_MIN, process.env.PAGE_BACKOFF_MAX, 10000),
|
process.env.PAGE_BACKOFF_MAX,
|
||||||
minSleep: envOrNumberMin(process.env.PAGE_SLEEP_MIN, process.env.PAGE_SLEEP_MAX, 5000),
|
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)
|
open: envOrBoolean(process.env.OPEN_BROWSER)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -135,7 +185,10 @@ const notifications = {
|
|||||||
password: envOrString(process.env.EMAIL_PASSWORD),
|
password: envOrString(process.env.EMAIL_PASSWORD),
|
||||||
smtpAddress: envOrString(process.env.SMTP_ADDRESS),
|
smtpAddress: envOrString(process.env.SMTP_ADDRESS),
|
||||||
smtpPort: envOrNumber(process.env.SMTP_PORT, 25),
|
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)
|
username: envOrString(process.env.EMAIL_USERNAME)
|
||||||
},
|
},
|
||||||
mqtt: {
|
mqtt: {
|
||||||
@@ -144,13 +197,25 @@ const notifications = {
|
|||||||
password: envOrString(process.env.MQTT_PASSWORD),
|
password: envOrString(process.env.MQTT_PASSWORD),
|
||||||
port: envOrNumber(process.env.MQTT_BROKER_PORT, 1883),
|
port: envOrNumber(process.env.MQTT_BROKER_PORT, 1883),
|
||||||
qos: envOrNumber(process.env.MQTT_QOS, 0),
|
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)
|
username: envOrString(process.env.MQTT_USERNAME)
|
||||||
},
|
},
|
||||||
pagerduty: {
|
pagerduty: {
|
||||||
integrationKey: envOrString(process.env.PAGERDUTY_INTEGRATION_KEY),
|
integrationKey: envOrString(process.env.PAGERDUTY_INTEGRATION_KEY),
|
||||||
severity: envOrString(process.env.PAGERDUTY_SEVERITY, 'info')
|
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: {
|
phone: {
|
||||||
availableCarriers: new Map([
|
availableCarriers: new Map([
|
||||||
['att', 'txt.att.net'],
|
['att', 'txt.att.net'],
|
||||||
@@ -168,8 +233,8 @@ const notifications = {
|
|||||||
['virgin', 'vmobl.com'],
|
['virgin', 'vmobl.com'],
|
||||||
['virgin-ca', 'vmobile.ca']
|
['virgin-ca', 'vmobile.ca']
|
||||||
]),
|
]),
|
||||||
carrier: envOrString(process.env.PHONE_CARRIER),
|
carrier: envOrArray(process.env.PHONE_CARRIER),
|
||||||
number: envOrString(process.env.PHONE_NUMBER)
|
number: envOrArray(process.env.PHONE_NUMBER)
|
||||||
},
|
},
|
||||||
playSound: envOrString(process.env.PLAY_SOUND),
|
playSound: envOrString(process.env.PLAY_SOUND),
|
||||||
pushbullet: envOrString(process.env.PUSHBULLET),
|
pushbullet: envOrString(process.env.PUSHBULLET),
|
||||||
@@ -218,7 +283,9 @@ const page = {
|
|||||||
inStockWaitTime: envOrNumber(process.env.IN_STOCK_WAIT_TIME),
|
inStockWaitTime: envOrNumber(process.env.IN_STOCK_WAIT_TIME),
|
||||||
screenshot: envOrBoolean(process.env.SCREENSHOT),
|
screenshot: envOrBoolean(process.env.SCREENSHOT),
|
||||||
timeout: envOrNumber(process.env.PAGE_TIMEOUT, 30000),
|
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
|
width: 1920
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -229,33 +296,65 @@ const proxy = {
|
|||||||
|
|
||||||
// Check for deprecated configuration values
|
// Check for deprecated configuration values
|
||||||
if (process.env.MAX_PRICE) {
|
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 = {
|
const store = {
|
||||||
|
autoAddToCart: envOrBoolean(process.env.AUTO_ADD_TO_CART, true),
|
||||||
country: envOrString(process.env.COUNTRY, 'usa'),
|
country: envOrString(process.env.COUNTRY, 'usa'),
|
||||||
maxPrice: {
|
maxPrice: {
|
||||||
series: {
|
series: {
|
||||||
3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070),
|
3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070),
|
||||||
3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080),
|
3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080),
|
||||||
3090: envOrNumber(process.env.MAX_PRICE_SERIES_3090)
|
3090: envOrNumber(process.env.MAX_PRICE_SERIES_3090),
|
||||||
|
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),
|
||||||
|
sonyps5c: -1,
|
||||||
|
sonyps5de: -1,
|
||||||
|
'test:series': -1,
|
||||||
|
xboxss: -1,
|
||||||
|
xboxsx: -1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
microCenterLocation: envOrArray(process.env.MICROCENTER_LOCATION, ['web']),
|
microCenterLocation: envOrArray(process.env.MICROCENTER_LOCATION, ['web']),
|
||||||
showOnlyBrands: envOrArray(process.env.SHOW_ONLY_BRANDS),
|
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) ?? [];
|
const [name, series] = entry.match(/[^:]+/g) ?? [];
|
||||||
return {
|
return {
|
||||||
name: envOrString(name),
|
name: envOrString(name),
|
||||||
series: envOrString(series)
|
series: envOrString(series)
|
||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, ['3070', '3080', '3090']),
|
showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, [
|
||||||
stores: envOrArray(process.env.STORES, ['nvidia']).map(entry => {
|
'3070',
|
||||||
|
'3080',
|
||||||
|
'3090',
|
||||||
|
'ryzen5600',
|
||||||
|
'ryzen5800',
|
||||||
|
'ryzen5900',
|
||||||
|
'ryzen5950',
|
||||||
|
'sonyps5c',
|
||||||
|
'sonyps5de',
|
||||||
|
'xboxsx',
|
||||||
|
'xboxss'
|
||||||
|
]),
|
||||||
|
stores: envOrArray(process.env.STORES, ['nvidia']).map((entry) => {
|
||||||
const [name, minPageSleep, maxPageSleep] = entry.match(/[^:]+/g) ?? [];
|
const [name, minPageSleep, maxPageSleep] = entry.match(/[^:]+/g) ?? [];
|
||||||
return {
|
return {
|
||||||
maxPageSleep: envOrNumberMax(minPageSleep, maxPageSleep, browser.maxSleep),
|
maxPageSleep: envOrNumberMax(
|
||||||
minPageSleep: envOrNumberMin(minPageSleep, maxPageSleep, browser.minSleep),
|
minPageSleep,
|
||||||
|
maxPageSleep,
|
||||||
|
browser.maxSleep
|
||||||
|
),
|
||||||
|
minPageSleep: envOrNumberMin(
|
||||||
|
minPageSleep,
|
||||||
|
maxPageSleep,
|
||||||
|
browser.minSleep
|
||||||
|
),
|
||||||
name: envOrString(name)
|
name: envOrString(name)
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|||||||
+12
-5
@@ -12,9 +12,11 @@ import {tryLookupAndLoop} from './store';
|
|||||||
|
|
||||||
puppeteer.use(stealthPlugin());
|
puppeteer.use(stealthPlugin());
|
||||||
if (config.browser.lowBandwidth) {
|
if (config.browser.lowBandwidth) {
|
||||||
puppeteer.use(resourceBlock({
|
puppeteer.use(
|
||||||
blockedTypes: new Set(['image', 'font'] as const)
|
resourceBlock({
|
||||||
}));
|
blockedTypes: new Set(['image', 'font'] as const)
|
||||||
|
})
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
puppeteer.use(adBlocker);
|
puppeteer.use(adBlocker);
|
||||||
}
|
}
|
||||||
@@ -41,7 +43,9 @@ async function main() {
|
|||||||
|
|
||||||
// Add the address of the proxy server if defined
|
// Add the address of the proxy server if defined
|
||||||
if (config.proxy.address) {
|
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();
|
await stop();
|
||||||
@@ -91,7 +95,10 @@ async function loopMain() {
|
|||||||
try {
|
try {
|
||||||
await main();
|
await main();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('✖ something bad happened, resetting nvidia-snatcher in 5 seconds', error);
|
logger.error(
|
||||||
|
'✖ something bad happened, resetting streetmerchant in 5 seconds',
|
||||||
|
error
|
||||||
|
);
|
||||||
setTimeout(loopMain, 5000);
|
setTimeout(loopMain, 5000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+116
-30
@@ -3,26 +3,24 @@ import chalk from 'chalk';
|
|||||||
import {config} from './config';
|
import {config} from './config';
|
||||||
import winston from 'winston';
|
import winston from 'winston';
|
||||||
|
|
||||||
const prettyJson = winston.format.printf(info => {
|
const prettyJson = winston.format.printf((info) => {
|
||||||
const timestamp = new Date().toLocaleTimeString();
|
const timestamp = new Date().toLocaleTimeString();
|
||||||
|
|
||||||
if (typeof info.message === 'object') {
|
let out = `${chalk.grey(`[${timestamp}]`)} ${info.level} ${chalk.grey(
|
||||||
info.message = JSON.stringify(info.message, null, 4);
|
'::'
|
||||||
|
)} ${info.message}`;
|
||||||
|
|
||||||
|
if (Object.keys(info.metadata).length > 0) {
|
||||||
|
out = `${out} ${chalk.magenta(JSON.stringify(info.metadata, null, 2))}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info.meta) {
|
return out;
|
||||||
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}`;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export const logger = winston.createLogger({
|
export const logger = winston.createLogger({
|
||||||
format: winston.format.combine(
|
format: winston.format.combine(
|
||||||
winston.format.colorize(),
|
winston.format.colorize(),
|
||||||
winston.format.prettyPrint(),
|
winston.format.metadata({fillExcept: ['level', 'message', 'timestamp']}),
|
||||||
winston.format.splat(),
|
|
||||||
winston.format.simple(),
|
|
||||||
prettyJson
|
prettyJson
|
||||||
),
|
),
|
||||||
level: config.logLevel,
|
level: config.logLevel,
|
||||||
@@ -30,30 +28,67 @@ export const logger = winston.createLogger({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const Print = {
|
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) {
|
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) {
|
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 {
|
bannedSeller(link: Link, store: Store, color?: boolean): string {
|
||||||
if (color) {
|
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`;
|
return `✖ ${buildProductString(link, store)} :: BANNED SELLER`;
|
||||||
},
|
},
|
||||||
captcha(link: Link, store: Store, color?: boolean): string {
|
captcha(link: Link, store: Store, color?: boolean): string {
|
||||||
if (color) {
|
if (color) {
|
||||||
return '✖ ' + buildProductString(link, store, true) + ' :: ' + chalk.yellow('CAPTCHA');
|
return (
|
||||||
|
'✖ ' +
|
||||||
|
buildProductString(link, store, true) +
|
||||||
|
' :: ' +
|
||||||
|
chalk.yellow('CAPTCHA')
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return `✖ ${buildProductString(link, store)} :: CAPTCHA`;
|
return `✖ ${buildProductString(link, store)} :: CAPTCHA`;
|
||||||
@@ -73,49 +108,97 @@ export const Print = {
|
|||||||
},
|
},
|
||||||
inStockWaiting(link: Link, store: Store, color?: boolean): string {
|
inStockWaiting(link: Link, store: Store, color?: boolean): string {
|
||||||
if (color) {
|
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`;
|
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) {
|
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) {
|
if (color) {
|
||||||
return '✖ ' + buildSetupString(topic, store, true) + ' :: ' + chalk.yellow(message);
|
return (
|
||||||
|
'✖ ' +
|
||||||
|
buildSetupString(topic, store, true) +
|
||||||
|
' :: ' +
|
||||||
|
chalk.yellow(message)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return `✖ ${buildSetupString(topic, store)} :: ${message}`;
|
return `✖ ${buildSetupString(topic, store)} :: ${message}`;
|
||||||
},
|
},
|
||||||
noResponse(link: Link, store: Store, color?: boolean): string {
|
noResponse(link: Link, store: Store, color?: boolean): string {
|
||||||
if (color) {
|
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`;
|
return `✖ ${buildProductString(link, store)} :: NO RESPONSE`;
|
||||||
},
|
},
|
||||||
outOfStock(link: Link, store: Store, color?: boolean): string {
|
outOfStock(link: Link, store: Store, color?: boolean): string {
|
||||||
if (color) {
|
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`;
|
return `✖ ${buildProductString(link, store)} :: OUT OF STOCK`;
|
||||||
},
|
},
|
||||||
rateLimit(link: Link, store: Store, color?: boolean): string {
|
rateLimit(link: Link, store: Store, color?: boolean): string {
|
||||||
if (color) {
|
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`;
|
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) {
|
if (color) {
|
||||||
return chalk.cyan(`[${store.name}]`) + chalk.grey(` [setup (${topic})]`);
|
return chalk.cyan(`[${store.name}]`) + chalk.grey(` [setup (${topic})]`);
|
||||||
}
|
}
|
||||||
@@ -125,7 +208,10 @@ function buildSetupString(topic: string, store: Store, color?: boolean): string
|
|||||||
|
|
||||||
function buildProductString(link: Link, store: Store, color?: boolean): string {
|
function buildProductString(link: Link, store: Store, color?: boolean): string {
|
||||||
if (color) {
|
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}`;
|
return `[${store.name}] [${link.brand} (${link.series})] ${link.model}`;
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ export function sendDiscordMessage(link: Link, store: Store) {
|
|||||||
try {
|
try {
|
||||||
const embed = new MessageBuilder();
|
const embed = new MessageBuilder();
|
||||||
embed.setTitle('Stock Notification');
|
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('Store', store.name, true);
|
||||||
embed.addField('Brand', link.brand, true);
|
embed.addField('Brand', link.brand, true);
|
||||||
embed.addField('Series', link.series, true);
|
embed.addField('Series', link.series, true);
|
||||||
@@ -25,7 +27,7 @@ export function sendDiscordMessage(link: Link, store: Store) {
|
|||||||
embed.setText(notifyGroup.join(' '));
|
embed.setText(notifyGroup.join(' '));
|
||||||
}
|
}
|
||||||
|
|
||||||
embed.setColor(0x76B900);
|
embed.setColor(0x76b900);
|
||||||
embed.setTimestamp();
|
embed.setTimestamp();
|
||||||
|
|
||||||
const promises = [];
|
const promises = [];
|
||||||
@@ -37,7 +39,7 @@ export function sendDiscordMessage(link: Link, store: Store) {
|
|||||||
|
|
||||||
logger.info('✔ discord message sent');
|
logger.info('✔ discord message sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('✖ couldn\'t send discord message', error);
|
logger.error("✖ couldn't send discord message", error);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,21 +30,23 @@ export function sendEmail(link: Link, store: Store) {
|
|||||||
logger.debug('↗ sending email');
|
logger.debug('↗ sending email');
|
||||||
|
|
||||||
const mailOptions: Mail.Options = {
|
const mailOptions: Mail.Options = {
|
||||||
attachments: link.screenshot ? [
|
attachments: link.screenshot
|
||||||
{
|
? [
|
||||||
filename: link.screenshot,
|
{
|
||||||
path: `./${link.screenshot}`
|
filename: link.screenshot,
|
||||||
}
|
path: `./${link.screenshot}`
|
||||||
] : undefined,
|
}
|
||||||
|
]
|
||||||
|
: undefined,
|
||||||
from: email.username,
|
from: email.username,
|
||||||
subject: Print.inStock(link, store),
|
subject: Print.inStock(link, store),
|
||||||
text: link.cartUrl ? link.cartUrl : link.url,
|
text: link.cartUrl ? link.cartUrl : link.url,
|
||||||
to: email.to
|
to: email.to
|
||||||
};
|
};
|
||||||
|
|
||||||
transporter.sendMail(mailOptions, error => {
|
transporter.sendMail(mailOptions, (error) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
logger.error('✖ couldn\'t send email', error);
|
logger.error("✖ couldn't send email", error);
|
||||||
} else {
|
} else {
|
||||||
logger.info('✔ email sent');
|
logger.info('✔ email sent');
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-13
@@ -8,15 +8,20 @@ let client: MqttClient.Client;
|
|||||||
|
|
||||||
if (mqtt.broker) {
|
if (mqtt.broker) {
|
||||||
if (checkInsecureUsage(mqtt.password, 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 {
|
} else {
|
||||||
const clientOptions: IClientOptions = {
|
const clientOptions: IClientOptions = {
|
||||||
clean: (mqtt.clientId === ''),
|
clean: mqtt.clientId === '',
|
||||||
clientId: mqtt.clientId === '' ? undefined : mqtt.clientId,
|
clientId: mqtt.clientId === '' ? undefined : mqtt.clientId,
|
||||||
password: mqtt.password === '' ? undefined : mqtt.password,
|
password: mqtt.password === '' ? undefined : mqtt.password,
|
||||||
username: mqtt.username === '' ? undefined : mqtt.username
|
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 () => {
|
(async () => {
|
||||||
const givenUrl = link.cartUrl ? link.cartUrl : link.url;
|
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 topic = generateTopic(link, store, mqtt.topic);
|
||||||
const pubOptions: IClientPublishOptions = {
|
const pubOptions: IClientPublishOptions = {
|
||||||
qos: mqtt.qos as 0 | 1 | 2,
|
qos: mqtt.qos as 0 | 1 | 2,
|
||||||
@@ -34,14 +42,10 @@ export function sendMqttMessage(link: Link, store: Store) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
client.publish(
|
client.publish(topic, message, pubOptions);
|
||||||
topic,
|
|
||||||
message,
|
|
||||||
pubOptions
|
|
||||||
);
|
|
||||||
logger.info('✔ mqtt message sent');
|
logger.info('✔ mqtt message sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('✖ couldn\'t send mqtt message', error);
|
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 {
|
function generateTopic(link: Link, store: Store, topic: string): string {
|
||||||
topic.trim();
|
topic.trim();
|
||||||
topic = topic.replace(/^\//, '');
|
topic = topic.replace(/^\//, '');
|
||||||
topic = topic.replace(/%series%/g, link.series)
|
topic = topic
|
||||||
|
.replace(/%series%/g, link.series)
|
||||||
.replace(/%brand%/g, link.brand)
|
.replace(/%brand%/g, link.brand)
|
||||||
.replace(/%model%/g, link.model)
|
.replace(/%model%/g, link.model)
|
||||||
.replace(/%store%/g, store.name);
|
.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 {
|
function checkInsecureUsage(pass: string, address: string): boolean {
|
||||||
if (pass !== '') {
|
if (pass !== '') {
|
||||||
if (isClassANet(address) ||
|
if (
|
||||||
|
isClassANet(address) ||
|
||||||
isClassBNet(address) ||
|
isClassBNet(address) ||
|
||||||
isClassCNet(address) ||
|
isClassCNet(address) ||
|
||||||
isLinkLocal(address)) {
|
isLinkLocal(address)
|
||||||
|
) {
|
||||||
logger.debug(`MQTT using private network broker: ${address}`);
|
logger.debug(`MQTT using private network broker: ${address}`);
|
||||||
} else {
|
} else {
|
||||||
logger.debug(`MQTT using public network broker: ${address}`);
|
logger.debug(`MQTT using public network broker: ${address}`);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import {Link, Store} from '../store/model';
|
import {Link, Store} from '../store/model';
|
||||||
|
import {adjustPhilipsHueLights} from './philips-hue';
|
||||||
import {playSound} from './sound';
|
import {playSound} from './sound';
|
||||||
import {sendDesktopNotification} from './desktop';
|
import {sendDesktopNotification} from './desktop';
|
||||||
import {sendDiscordMessage} from './discord';
|
import {sendDiscordMessage} from './discord';
|
||||||
@@ -21,6 +22,7 @@ export function sendNotification(link: Link, store: Store) {
|
|||||||
sendSms(link, store);
|
sendSms(link, store);
|
||||||
sendDesktopNotification(link, store);
|
sendDesktopNotification(link, store);
|
||||||
// Non-priority
|
// Non-priority
|
||||||
|
adjustPhilipsHueLights();
|
||||||
sendDiscordMessage(link, store);
|
sendDiscordMessage(link, store);
|
||||||
sendMqttMessage(link, store);
|
sendMqttMessage(link, store);
|
||||||
sendPagerDutyNotification(link, store);
|
sendPagerDutyNotification(link, store);
|
||||||
|
|||||||
@@ -8,12 +8,11 @@ const pd = new PDClient('');
|
|||||||
export function sendPagerDutyNotification(link: Link, store: Store) {
|
export function sendPagerDutyNotification(link: Link, store: Store) {
|
||||||
if (config.notifications.pagerduty.integrationKey) {
|
if (config.notifications.pagerduty.integrationKey) {
|
||||||
logger.debug('↗ sending pagerduty message');
|
logger.debug('↗ sending pagerduty message');
|
||||||
const links = [
|
const links = [{href: link.url, text: 'Visit Store'}];
|
||||||
{href: link.url, text: 'Visit Store'}
|
|
||||||
];
|
|
||||||
if (link.cartUrl) {
|
if (link.cartUrl) {
|
||||||
links.push({
|
links.push({
|
||||||
href: link.cartUrl, text: 'Add to Cart'
|
href: link.cartUrl,
|
||||||
|
text: 'Add to Cart'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,125 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,10 +17,11 @@ export function sendPushbulletNotification(link: Link, store: Store) {
|
|||||||
link.cartUrl ? link.cartUrl : link.url,
|
link.cartUrl ? link.cartUrl : link.url,
|
||||||
(error: Error) => {
|
(error: Error) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
logger.error('✖ couldn\'t send pushbullet message', error);
|
logger.error("✖ couldn't send pushbullet message", error);
|
||||||
} else {
|
} else {
|
||||||
logger.info('✔ pushbullet message sent');
|
logger.info('✔ pushbullet message sent');
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export function sendPushoverNotification(link: Link, store: Store) {
|
|||||||
|
|
||||||
push.send(message, (error: Error) => {
|
push.send(message, (error: Error) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
logger.error('✖ couldn\'t send pushover message', error);
|
logger.error("✖ couldn't send pushover message", error);
|
||||||
} else {
|
} else {
|
||||||
logger.info('✔ pushover message sent');
|
logger.info('✔ pushover message sent');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ export function sendSlackMessage(link: Link, store: Store) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!result.ok) {
|
if (!result.ok) {
|
||||||
logger.error('✖ couldn\'t send slack message', result);
|
logger.error("✖ couldn't send slack message", result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info('✔ slack message sent');
|
logger.info('✔ slack message sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('✖ couldn\'t send slack message', error);
|
logger.error("✖ couldn't send slack message", error);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|||||||
+61
-34
@@ -4,48 +4,75 @@ import Mail from 'nodemailer/lib/mailer';
|
|||||||
import {config} from '../config';
|
import {config} from '../config';
|
||||||
import {transporter} from './email';
|
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];
|
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) {
|
export function sendSms(link: Link, store: Store) {
|
||||||
if (phone.number) {
|
for (
|
||||||
logger.debug('↗ sending sms');
|
let i = 0;
|
||||||
const carrier = phone.carrier;
|
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)) {
|
if (!currentNumber) {
|
||||||
const mailOptions: Mail.Options = {
|
logger.error(`✖ ${currentCarrier} is not associated with a number`);
|
||||||
attachments: link.screenshot ? [
|
continue;
|
||||||
{
|
} else if (!currentCarrier) {
|
||||||
filename: link.screenshot,
|
logger.error(`✖ ${currentNumber} is not associated with a carrier`);
|
||||||
path: `./${link.screenshot}`
|
continue;
|
||||||
}
|
|
||||||
] : 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 (!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() {
|
function generateAddress(number: string, carrier: string) {
|
||||||
const carrier = phone.carrier;
|
|
||||||
|
|
||||||
if (carrier && phone.availableCarriers.has(carrier)) {
|
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);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ if (config.notifications.playSound) {
|
|||||||
player = playerLib();
|
player = playerLib();
|
||||||
|
|
||||||
if (player.player === null) {
|
if (player.player === null) {
|
||||||
logger.warn('✖ couldn\'t find sound player');
|
logger.warn("✖ couldn't find sound player");
|
||||||
} else {
|
} else {
|
||||||
const playerName = player.player;
|
const playerName = player.player;
|
||||||
logger.info(`✔ sound player found: ${playerName}`);
|
logger.info(`✔ sound player found: ${playerName}`);
|
||||||
@@ -20,7 +20,7 @@ export function playSound() {
|
|||||||
if (config.notifications.playSound && player.player !== null) {
|
if (config.notifications.playSound && player.player !== null) {
|
||||||
logger.debug('↗ playing sound');
|
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) {
|
if (error) {
|
||||||
logger.error(`✖ error opening sound file: ${error.message}`);
|
logger.error(`✖ error opening sound file: ${error.message}`);
|
||||||
return;
|
return;
|
||||||
@@ -28,7 +28,7 @@ export function playSound() {
|
|||||||
|
|
||||||
player.play(config.notifications.playSound, (error: Error) => {
|
player.play(config.notifications.playSound, (error: Error) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
logger.error('✖ couldn\'t play sound', error);
|
logger.error("✖ couldn't play sound", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info('✔ played sound');
|
logger.info('✔ played sound');
|
||||||
|
|||||||
@@ -19,10 +19,15 @@ export function sendTelegramMessage(link: Link, store: Store) {
|
|||||||
|
|
||||||
for (const chatId of telegram.chatId) {
|
for (const chatId of telegram.chatId) {
|
||||||
try {
|
try {
|
||||||
results.push(client.sendMessage(chatId, `${Print.inStock(link, store)}\n${givenUrl}`));
|
results.push(
|
||||||
|
client.sendMessage(
|
||||||
|
chatId,
|
||||||
|
`${Print.inStock(link, store)}\n${givenUrl}`
|
||||||
|
)
|
||||||
|
);
|
||||||
logger.info('✔ telegram message sent');
|
logger.info('✔ telegram message sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('✖ couldn\'t send telegram message', error);
|
logger.error("✖ couldn't send telegram message", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export function sendTwilioMessage(link: Link, store: Store) {
|
|||||||
});
|
});
|
||||||
logger.info('✔ twilio message sent');
|
logger.info('✔ twilio message sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('✖ couldn\'t send twilio message', error);
|
logger.error("✖ couldn't send twilio message", error);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-10
@@ -17,7 +17,10 @@ let tokenData = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (existsSync('./twitch.json')) {
|
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(
|
const chatClient: ChatClient = new ChatClient(
|
||||||
@@ -25,13 +28,25 @@ const chatClient: ChatClient = new ChatClient(
|
|||||||
new StaticAuthProvider(twitch.clientId, tokenData.accessToken),
|
new StaticAuthProvider(twitch.clientId, tokenData.accessToken),
|
||||||
{
|
{
|
||||||
clientSecret: twitch.clientSecret,
|
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}) => {
|
onRefresh: async ({accessToken, refreshToken, expiryDate}) => {
|
||||||
return promises.writeFile('./twitch.json', JSON.stringify({
|
return promises.writeFile(
|
||||||
accessToken,
|
'./twitch.json',
|
||||||
expiryTimestamp: expiryDate === null ? null : expiryDate.getTime(),
|
JSON.stringify(
|
||||||
refreshToken
|
{
|
||||||
}, null, 4), 'utf-8');
|
accessToken,
|
||||||
|
expiryTimestamp:
|
||||||
|
expiryDate === null ? null : expiryDate.getTime(),
|
||||||
|
refreshToken
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
4
|
||||||
|
),
|
||||||
|
'utf-8'
|
||||||
|
);
|
||||||
},
|
},
|
||||||
refreshToken: tokenData.refreshToken
|
refreshToken: tokenData.refreshToken
|
||||||
}
|
}
|
||||||
@@ -51,7 +66,7 @@ chatClient.onJoin((channel: string, user: string) => {
|
|||||||
chatClient.say(channel, message);
|
chatClient.say(channel, message);
|
||||||
logger.info('✔ twitch message sent');
|
logger.info('✔ twitch message sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('✖ couldn\'t send twitch message', error);
|
logger.error("✖ couldn't send twitch message", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,10 +80,18 @@ chatClient.onDisconnect(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
export function sendTwitchMessage(link: Link, store: Store) {
|
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');
|
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) {
|
if (!alreadySaying) {
|
||||||
alreadySaying = true;
|
alreadySaying = true;
|
||||||
|
|||||||
@@ -13,18 +13,25 @@ const client = new Twitter({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export function sendTweet(link: Link, store: Store) {
|
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');
|
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) {
|
if (twitter.tweetTags) {
|
||||||
status += `\n\n${twitter.tweetTags}`;
|
status += `\n\n${twitter.tweetTags}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
client.post('statuses/update', {status}, error => {
|
client.post('statuses/update', {status}, (error) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
logger.error('✖ couldn\'t send twitter notification', error);
|
logger.error("✖ couldn't send twitter notification", error);
|
||||||
} else {
|
} else {
|
||||||
logger.info('✔ twitter notification sent');
|
logger.info('✔ twitter notification sent');
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-13
@@ -12,14 +12,16 @@ function addNewLinks(store: Store, links: Link[], series: Series) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const existingUrls = new Set(store.links.map(link => link.url));
|
const existingUrls = new Set(store.links.map((link) => link.url));
|
||||||
const newLinks = links.filter(link => !existingUrls.has(link.url));
|
const newLinks = links.filter((link) => !existingUrls.has(link.url));
|
||||||
|
|
||||||
if (newLinks.length === 0) {
|
if (newLinks.length === 0) {
|
||||||
return;
|
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));
|
logger.debug(JSON.stringify(newLinks, null, 2));
|
||||||
|
|
||||||
store.links = store.links.concat(newLinks);
|
store.links = store.links.concat(newLinks);
|
||||||
@@ -43,19 +45,23 @@ export async function fetchLinks(store: Store, browser: Browser) {
|
|||||||
url = [url];
|
url = [url];
|
||||||
}
|
}
|
||||||
|
|
||||||
url.map(x => promises.push(usingResponse(browser, x, async response => {
|
url.map((x) =>
|
||||||
const text = await response?.text();
|
promises.push(
|
||||||
|
usingResponse(browser, x, async (response) => {
|
||||||
|
const text = await response?.text();
|
||||||
|
|
||||||
if (!text) {
|
if (!text) {
|
||||||
logger.error(Print.message('NO RESPONSE', series, store, true));
|
logger.error(Print.message('NO RESPONSE', series, store, true));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const docElement = cheerio.load(text).root();
|
const docElement = cheerio.load(text).root();
|
||||||
const links = store.linksBuilder!.builder(docElement, series);
|
const links = store.linksBuilder!.builder(docElement, series);
|
||||||
|
|
||||||
addNewLinks(store, links, series);
|
addNewLinks(store, links, series);
|
||||||
})));
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all(promises);
|
await Promise.all(promises);
|
||||||
|
|||||||
+8
-4
@@ -30,10 +30,14 @@ function filterModel(model: Link['model'], series: Link['series']): boolean {
|
|||||||
for (const configModelEntry of config.store.showOnlyModels) {
|
for (const configModelEntry of config.store.showOnlyModels) {
|
||||||
const sanitizedConfigModel = configModelEntry.name.replace(/\s/g, '');
|
const sanitizedConfigModel = configModelEntry.name.replace(/\s/g, '');
|
||||||
const sanitizedConfigSeries = configModelEntry.series.replace(/\s/g, '');
|
const sanitizedConfigSeries = configModelEntry.series.replace(/\s/g, '');
|
||||||
if (sanitizedConfigSeries ?
|
if (sanitizedConfigSeries) {
|
||||||
sanitizedSeries === sanitizedConfigSeries && sanitizedModel === sanitizedConfigModel :
|
if (
|
||||||
sanitizedModel === sanitizedConfigModel
|
sanitizedSeries === sanitizedConfigSeries &&
|
||||||
) {
|
sanitizedModel === sanitizedConfigModel
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (sanitizedModel === sanitizedConfigModel) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,59 +9,82 @@ export type Selector = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function isElementArray(query: LabelQuery): query is Element[] {
|
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)) {
|
if (isElementArray(query)) {
|
||||||
return query.map(x => ({
|
return query.map((x) => ({
|
||||||
container: x.container ?? defaultContainer,
|
container: x.container ?? defaultContainer,
|
||||||
text: x.text
|
text: x.text
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Array.isArray(query)) {
|
if (Array.isArray(query)) {
|
||||||
return [{
|
return [
|
||||||
container: defaultContainer,
|
{
|
||||||
text: query
|
container: defaultContainer,
|
||||||
}];
|
text: query
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [{
|
return [
|
||||||
container: query.container ?? defaultContainer,
|
{
|
||||||
text: query.text
|
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 elementQueries = getQueryAsElementArray(query, options.selector);
|
||||||
|
|
||||||
const resolved = await Promise.all(elementQueries.map(async query => {
|
const resolved = await Promise.all(
|
||||||
const selector = {...options, selector: query.container};
|
elementQueries.map(async (query) => {
|
||||||
const contents = await extractPageContents(page, selector) ?? '';
|
const selector = {...options, selector: query.container};
|
||||||
|
const contents = (await extractPageContents(page, selector)) ?? '';
|
||||||
|
|
||||||
if (!contents) {
|
if (!contents) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug(contents);
|
logger.debug(contents);
|
||||||
|
|
||||||
return includesLabels(contents, query.text);
|
return includesLabels(contents, query.text);
|
||||||
}));
|
})
|
||||||
|
);
|
||||||
|
|
||||||
return resolved.includes(true);
|
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) => {
|
return page.evaluate((options: Selector) => {
|
||||||
// eslint-disable-next-line no-undef
|
// 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) {
|
if (!element) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.requireVisible && !(element.offsetWidth > 0 && element.offsetHeight > 0)) {
|
if (
|
||||||
|
options.requireVisible &&
|
||||||
|
!(element.offsetWidth > 0 && element.offsetHeight > 0)
|
||||||
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,13 +107,23 @@ export async function extractPageContents(page: Page, selector: Selector): Promi
|
|||||||
* @param domText Complete DOM of website.
|
* @param domText Complete DOM of website.
|
||||||
* @param searchLabels Search labels for a match.
|
* @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();
|
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) {
|
export async function cardPrice(
|
||||||
if (!max) {
|
page: Page,
|
||||||
|
query: Pricing,
|
||||||
|
max: number,
|
||||||
|
options: Selector
|
||||||
|
): Promise<number | null> {
|
||||||
|
if (!max || max === -1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +132,9 @@ export async function cardPrice(page: Page, query: Pricing, max: number, options
|
|||||||
|
|
||||||
if (cardPrice) {
|
if (cardPrice) {
|
||||||
const priceSeperator = query.euroFormat ? /\./g : /,/g;
|
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}`);
|
logger.debug(`Raw card price: ${cardPrice} | Limit: ${max}`);
|
||||||
return cardpriceNumber > max ? cardpriceNumber : null;
|
return cardpriceNumber > max ? cardpriceNumber : null;
|
||||||
|
|||||||
+51
-32
@@ -2,7 +2,13 @@ import {Browser, Page, Response} from 'puppeteer';
|
|||||||
import {Link, Store, getStores} from './model';
|
import {Link, Store, getStores} from './model';
|
||||||
import {Print, logger} from '../logger';
|
import {Print, logger} from '../logger';
|
||||||
import {Selector, cardPrice, pageIncludesLabels} from './includes-labels';
|
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 {config} from '../config';
|
||||||
import {disableBlockerInPage} from '../adblocker';
|
import {disableBlockerInPage} from '../adblocker';
|
||||||
import {fetchLinks} from './fetch-links';
|
import {fetchLinks} from './fetch-links';
|
||||||
@@ -39,8 +45,12 @@ async function lookup(browser: Browser, store: Store) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const context = (config.browser.isIncognito ? await browser.createIncognitoBrowserContext() : browser.defaultBrowserContext());
|
const context = config.browser.isIncognito
|
||||||
const page = (config.browser.isIncognito ? await context.newPage() : await browser.newPage());
|
? await browser.createIncognitoBrowserContext()
|
||||||
|
: browser.defaultBrowserContext();
|
||||||
|
const page = config.browser.isIncognito
|
||||||
|
? await context.newPage()
|
||||||
|
: await browser.newPage();
|
||||||
page.setDefaultNavigationTimeout(config.page.timeout);
|
page.setDefaultNavigationTimeout(config.page.timeout);
|
||||||
await page.setUserAgent(getRandomUserAgent());
|
await page.setUserAgent(getRandomUserAgent());
|
||||||
|
|
||||||
@@ -57,7 +67,11 @@ async function lookup(browser: Browser, store: Store) {
|
|||||||
try {
|
try {
|
||||||
statusCode = await lookupCard(browser, store, page, link);
|
statusCode = await lookupCard(browser, store, page, link);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error(`✖ [${store.name}] ${link.brand} ${link.series} ${link.model} - ${error.message as string}`);
|
logger.error(
|
||||||
|
`✖ [${store.name}] ${link.brand} ${link.series} ${link.model} - ${
|
||||||
|
error.message as string
|
||||||
|
}`
|
||||||
|
);
|
||||||
const client = await page.target().createCDPSession();
|
const client = await page.target().createCDPSession();
|
||||||
await client.send('Network.clearBrowserCookies');
|
await client.send('Network.clearBrowserCookies');
|
||||||
await client.send('Network.clearBrowserCache');
|
await client.send('Network.clearBrowserCache');
|
||||||
@@ -75,9 +89,16 @@ async function lookup(browser: Browser, store: Store) {
|
|||||||
/* eslint-enable no-await-in-loop */
|
/* 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 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) {
|
if (!response) {
|
||||||
logger.debug(Print.noResponse(link, store, true));
|
logger.debug(Print.noResponse(link, store, true));
|
||||||
@@ -96,7 +117,8 @@ async function lookupCard(browser: Browser, store: Store, page: Page, link: Link
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (await lookupCardInStock(store, page, 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}`);
|
logger.info(`${Print.inStock(link, store, true)}\n${givenUrl}`);
|
||||||
|
|
||||||
if (config.browser.open) {
|
if (config.browser.open) {
|
||||||
@@ -136,9 +158,13 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (store.labels.inStock) {
|
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));
|
logger.info(Print.outOfStock(link, store, true));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -152,34 +178,24 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (store.labels.bannedSeller) {
|
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));
|
logger.warn(Print.bannedSeller(link, store, true));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (store.labels.maxPrice) {
|
if (store.labels.maxPrice) {
|
||||||
let price;
|
const price = await cardPrice(
|
||||||
let maxPrice = 0;
|
page,
|
||||||
switch (link.series) {
|
store.labels.maxPrice,
|
||||||
case '3070':
|
config.store.maxPrice.series[link.series],
|
||||||
price = await cardPrice(page, store.labels.maxPrice, config.store.maxPrice.series['3070'], baseOptions);
|
baseOptions
|
||||||
maxPrice = config.store.maxPrice.series['3070'];
|
);
|
||||||
break;
|
const maxPrice = config.store.maxPrice.series[link.series];
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (price) {
|
if (price) {
|
||||||
logger.info(Print.maxPrice(link, store, price, maxPrice, true));
|
logger.info(Print.maxPrice(link, store, price, maxPrice, true));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,7 +209,10 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Do API inventory validation in realtime (no cache) if available
|
// 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);
|
return store.realTimeInventoryLookup(link.itemNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,7 +228,7 @@ export async function tryLookupAndLoop(browser: Browser, store: Store) {
|
|||||||
if (store.linksBuilder) {
|
if (store.linksBuilder) {
|
||||||
const lastRunTime = linkBuilderLastRunTimes[store.name] ?? -1;
|
const lastRunTime = linkBuilderLastRunTimes[store.name] ?? -1;
|
||||||
const ttl = store.linksBuilder.ttl ?? Number.MAX_SAFE_INTEGER;
|
const ttl = store.linksBuilder.ttl ?? Number.MAX_SAFE_INTEGER;
|
||||||
if (lastRunTime === -1 || (Date.now() - lastRunTime) > ttl) {
|
if (lastRunTime === -1 || Date.now() - lastRunTime > ttl) {
|
||||||
try {
|
try {
|
||||||
await fetchLinks(store, browser);
|
await fetchLinks(store, browser);
|
||||||
linkBuilderLastRunTimes[store.name] = Date.now();
|
linkBuilderLastRunTimes[store.name] = Date.now();
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export const Adorama: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
model: 'xlr8',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.adorama.com/pnv301tfxmpb.html'
|
url: 'https://www.adorama.com/pnv301tfxmpb.html'
|
||||||
},
|
},
|
||||||
@@ -72,13 +72,13 @@ export const Adorama: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.adorama.com/png30801tfxb.html'
|
url: 'https://www.adorama.com/png30801tfxb.html'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.adorama.com/asrx3080o10g.html'
|
url: 'https://www.adorama.com/asrx3080o10g.html'
|
||||||
},
|
},
|
||||||
@@ -120,7 +120,7 @@ export const Adorama: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.adorama.com/asrx3090o24g.html'
|
url: 'https://www.adorama.com/asrx3090o24g.html'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export const AlternateNL: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'tuf gaming',
|
model: 'tuf',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1672251'
|
url: 'https://www.alternate.nl/product/1672251'
|
||||||
},
|
},
|
||||||
@@ -54,19 +54,19 @@ export const AlternateNL: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'tuf oc gaming',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1672634'
|
url: 'https://www.alternate.nl/product/1672634'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc gaming',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1672867'
|
url: 'https://www.alternate.nl/product/1672867'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
model: 'xc3 black gaming',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1673512'
|
url: 'https://www.alternate.nl/product/1673512'
|
||||||
},
|
},
|
||||||
@@ -78,13 +78,13 @@ export const AlternateNL: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra gaming',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1674164'
|
url: 'https://www.alternate.nl/product/1674164'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix gaming',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1672868'
|
url: 'https://www.alternate.nl/product/1672868'
|
||||||
},
|
},
|
||||||
@@ -108,7 +108,7 @@ export const AlternateNL: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
model: 'xc3 gaming',
|
model: 'xc3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1673520'
|
url: 'https://www.alternate.nl/product/1673520'
|
||||||
},
|
},
|
||||||
@@ -126,7 +126,7 @@ export const AlternateNL: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra gaming',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1673524'
|
url: 'https://www.alternate.nl/product/1673524'
|
||||||
},
|
},
|
||||||
@@ -138,7 +138,7 @@ export const AlternateNL: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
model: 'ftw3 gaming',
|
model: 'ftw3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.nl/product/1673517'
|
url: 'https://www.alternate.nl/product/1673517'
|
||||||
},
|
},
|
||||||
@@ -169,4 +169,3 @@ export const AlternateNL: Store = {
|
|||||||
],
|
],
|
||||||
name: 'alternate-nl'
|
name: 'alternate-nl'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,12 @@ export const Alternate: Store = {
|
|||||||
labels: {
|
labels: {
|
||||||
inStock: {
|
inStock: {
|
||||||
container: '.stockStatus',
|
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: {
|
maxPrice: {
|
||||||
container: 'div.price > span',
|
container: 'div.price > span',
|
||||||
@@ -24,13 +29,13 @@ export const Alternate: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.de/product/1672868'
|
url: 'https://www.alternate.de/product/1672868'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.alternate.de/product/1672867'
|
url: 'https://www.alternate.de/product/1672867'
|
||||||
},
|
},
|
||||||
@@ -186,13 +191,13 @@ export const Alternate: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.alternate.de/product/1672870'
|
url: 'https://www.alternate.de/product/1672870'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.alternate.de/product/1672872'
|
url: 'https://www.alternate.de/product/1672872'
|
||||||
},
|
},
|
||||||
@@ -315,6 +320,42 @@ export const Alternate: Store = {
|
|||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.alternate.de/product/1672611'
|
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'
|
name: 'alternate'
|
||||||
|
|||||||
@@ -129,6 +129,42 @@ export const AmazonCa: Store = {
|
|||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.ca/dp/B08HJLLF7G'
|
url: 'https://www.amazon.ca/dp/B08HJLLF7G'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5600x',
|
||||||
|
series: 'ryzen5600',
|
||||||
|
url: 'https://www.amazon.ca/dp/B08166SLDF'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5800x',
|
||||||
|
series: 'ryzen5800',
|
||||||
|
url: 'https://www.amazon.ca/dp/B0815XFSGK'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5900x',
|
||||||
|
series: 'ryzen5900',
|
||||||
|
url: 'https://www.amazon.ca/dp/B08164VTWH'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5950x',
|
||||||
|
series: 'ryzen5950',
|
||||||
|
url: 'https://www.amazon.ca/dp/B0815Y8J9N'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 console',
|
||||||
|
series: 'sonyps5c',
|
||||||
|
url: 'https://www.amazon.ca/dp/B08GSC5D9G'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 digital',
|
||||||
|
series: 'sonyps5de',
|
||||||
|
url: 'https://www.amazon.ca/dp/B08GS1N24H'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'amazon-ca'
|
name: 'amazon-ca'
|
||||||
|
|||||||
@@ -5,7 +5,10 @@ export const AmazonDe: Store = {
|
|||||||
labels: {
|
labels: {
|
||||||
captcha: {
|
captcha: {
|
||||||
container: 'body',
|
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: {
|
inStock: {
|
||||||
container: '#desktop_buybox',
|
container: '#desktop_buybox',
|
||||||
@@ -25,13 +28,13 @@ export const AmazonDe: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.de/dp/B08HN7VVLJ'
|
url: 'https://www.amazon.de/dp/B08HN7VVLJ'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.de/dp/B08HN6KYS3'
|
url: 'https://www.amazon.de/dp/B08HN6KYS3'
|
||||||
},
|
},
|
||||||
@@ -139,13 +142,13 @@ export const AmazonDe: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.de/dp/B08HN642LY'
|
url: 'https://www.amazon.de/dp/B08HN642LY'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.de/dp/B08HN51T8Q'
|
url: 'https://www.amazon.de/dp/B08HN51T8Q'
|
||||||
},
|
},
|
||||||
@@ -265,13 +268,13 @@ export const AmazonDe: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.amazon.de/dp/B08HT7PR9Y'
|
url: 'https://www.amazon.de/dp/B08HT7PR9Y'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.amazon.de/dp/B08L8JNTXQ'
|
url: 'https://www.amazon.de/dp/B08L8JNTXQ'
|
||||||
},
|
},
|
||||||
@@ -349,9 +352,45 @@ export const AmazonDe: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.amazon.de/dp/B08HBJB7YD'
|
url: 'https://www.amazon.de/dp/B08HBJB7YD'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5600x',
|
||||||
|
series: 'ryzen5600',
|
||||||
|
url: 'https://www.amazon.de/dp/B08166SLDF'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5800x',
|
||||||
|
series: 'ryzen5800',
|
||||||
|
url: 'https://www.amazon.de/dp/B0815XFSGK'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5900x',
|
||||||
|
series: 'ryzen5900',
|
||||||
|
url: 'https://www.amazon.de/dp/B08164VTWH'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'amd',
|
||||||
|
model: '5950x',
|
||||||
|
series: 'ryzen5950',
|
||||||
|
url: 'https://www.amazon.de/dp/B0815Y8J9N'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 console',
|
||||||
|
series: 'sonyps5c',
|
||||||
|
url: 'https://www.amazon.de/dp/B08H93ZRK9'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 digital',
|
||||||
|
series: 'sonyps5de',
|
||||||
|
url: 'https://www.amazon.de/dp/B08H98GVK8'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'amazon-de'
|
name: 'amazon-de'
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ export const AmazonEs: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.es/dp/B08HN6KYS3'
|
url: 'https://www.amazon.es/dp/B08HN6KYS3'
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,7 +8,12 @@ export const AmazonNl: Store = {
|
|||||||
},
|
},
|
||||||
inStock: {
|
inStock: {
|
||||||
container: '#availability',
|
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: {
|
maxPrice: {
|
||||||
container: 'span[class*="PriceString"]',
|
container: 'span[class*="PriceString"]',
|
||||||
@@ -58,7 +63,7 @@ export const AmazonNl: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.nl/dp/B08HN7VVLJ'
|
url: 'https://www.amazon.nl/dp/B08HN7VVLJ'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,15 +30,34 @@ export const AmazonUk: Store = {
|
|||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
brand: 'test:brand',
|
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',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.amazon.co.uk/dp/B081265T5Z/'
|
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: {
|
linksBuilder: {
|
||||||
builder: (docElement, series) => {
|
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[] = [];
|
const links: Link[] = [];
|
||||||
for (let i = 0; i < productElements.length; i++) {
|
for (let i = 0; i < productElements.length; i++) {
|
||||||
const productElement = productElements.eq(i);
|
const productElement = productElements.eq(i);
|
||||||
@@ -49,7 +68,9 @@ export const AmazonUk: Store = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const url = `https://www.amazon.co.uk/dp/${asin}/`;
|
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();
|
const title = titleElement.text().trim();
|
||||||
|
|
||||||
if (!title || !new RegExp(`RTX.*${series}`, 'i').exec(title)) {
|
if (!title || !new RegExp(`RTX.*${series}`, 'i').exec(title)) {
|
||||||
|
|||||||
+158
-32
@@ -17,185 +17,311 @@ export const Amazon: Store = {
|
|||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
brand: 'test:brand',
|
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',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.amazon.com/dp/B07TDN1SC5'
|
url: 'https://www.amazon.com/dp/B07TDN1SC5'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
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: '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: 'pny',
|
brand: 'pny',
|
||||||
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1',
|
cartUrl:
|
||||||
model: 'xlr8',
|
'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=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: 'pny',
|
||||||
|
cartUrl:
|
||||||
|
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1',
|
||||||
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HBR7QBM'
|
url: 'https://www.amazon.com/dp/B08HBR7QBM'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1',
|
cartUrl:
|
||||||
model: 'xlr8 rgb',
|
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1',
|
||||||
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HBTJMLJ'
|
url: 'https://www.amazon.com/dp/B08HBTJMLJ'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
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',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HR7SV3M'
|
url: 'https://www.amazon.com/dp/B08HR7SV3M'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
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',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HR3Y5GQ'
|
url: 'https://www.amazon.com/dp/B08HR3Y5GQ'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
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',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HR55YB5'
|
url: 'https://www.amazon.com/dp/B08HR55YB5'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
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',
|
model: 'ftw3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HR3DPGW'
|
url: 'https://www.amazon.com/dp/B08HR3DPGW'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
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',
|
model: 'xc3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HR4RJ3Q'
|
url: 'https://www.amazon.com/dp/B08HR4RJ3Q'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
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',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HR6FMF3'
|
url: 'https://www.amazon.com/dp/B08HR6FMF3'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
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',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HJTH61J'
|
url: 'https://www.amazon.com/dp/B08HJTH61J'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
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',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HJS2JLJ'
|
url: 'https://www.amazon.com/dp/B08HJS2JLJ'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
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',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HH5WF97'
|
url: 'https://www.amazon.com/dp/B08HH5WF97'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
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',
|
model: 'tuf',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HHDP9DW'
|
url: 'https://www.amazon.com/dp/B08HHDP9DW'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1',
|
cartUrl:
|
||||||
model: 'rog strix oc',
|
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1',
|
||||||
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08J6F174Z'
|
url: 'https://www.amazon.com/dp/B08J6F174Z'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1',
|
cartUrl:
|
||||||
model: 'rog strix oc',
|
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1',
|
||||||
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08J6GMWCQ'
|
url: 'https://www.amazon.com/dp/B08J6GMWCQ'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
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',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HR5SXPS'
|
url: 'https://www.amazon.com/dp/B08HR5SXPS'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
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',
|
model: 'trinity',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.amazon.com/dp/B08HJNKT3P'
|
url: 'https://www.amazon.com/dp/B08HJNKT3P'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
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',
|
model: 'trinity',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HJQ182D'
|
url: 'https://www.amazon.com/dp/B08HJQ182D'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1',
|
cartUrl:
|
||||||
model: 'xlr8',
|
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1',
|
||||||
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HBQWBHH'
|
url: 'https://www.amazon.com/dp/B08HBQWBHH'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
cartUrl: 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1',
|
cartUrl:
|
||||||
model: 'xlr8',
|
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1',
|
||||||
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HBVX53D'
|
url: 'https://www.amazon.com/dp/B08HBVX53D'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
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',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HRBW6VB'
|
url: 'https://www.amazon.com/dp/B08HRBW6VB'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
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',
|
model: 'ventus 3x',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HR9D2JS'
|
url: 'https://www.amazon.com/dp/B08HR9D2JS'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
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',
|
model: 'gaming oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HJRF2CN'
|
url: 'https://www.amazon.com/dp/B08HJRF2CN'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
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',
|
model: 'eagle oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HJPDJTY'
|
url: 'https://www.amazon.com/dp/B08HJPDJTY'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
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',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HJGNJ81'
|
url: 'https://www.amazon.com/dp/B08HJGNJ81'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
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',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.amazon.com/dp/B08HJLLF7G'
|
url: 'https://www.amazon.com/dp/B08HJLLF7G'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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/product/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/product/B0815Y8J9N'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'amazon'
|
name: 'amazon'
|
||||||
|
|||||||
@@ -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'
|
||||||
|
};
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
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'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
name: 'amd'
|
||||||
|
};
|
||||||
@@ -9,7 +9,7 @@ export const Aria: Store = {
|
|||||||
},
|
},
|
||||||
maxPrice: {
|
maxPrice: {
|
||||||
container: '.priceBig',
|
container: '.priceBig',
|
||||||
euroFormat: false // Note: Aria uses non-euroFromat as price seperator
|
euroFormat: false // Note: Aria uses non-euroFromat as price seperator
|
||||||
},
|
},
|
||||||
outOfStock: {
|
outOfStock: {
|
||||||
container: '.fBox',
|
container: '.fBox',
|
||||||
@@ -21,7 +21,8 @@ export const Aria: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -33,11 +34,13 @@ export const Aria: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3080',
|
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',
|
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'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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
@@ -12,55 +12,64 @@ export const AsusDe: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
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'
|
name: 'asus-de'
|
||||||
|
|||||||
+31
-2
@@ -1,4 +1,5 @@
|
|||||||
import {Store} from './store';
|
import {Store} from './store';
|
||||||
|
import fetch from 'node-fetch';
|
||||||
|
|
||||||
export const Asus: Store = {
|
export const Asus: Store = {
|
||||||
labels: {
|
labels: {
|
||||||
@@ -10,41 +11,69 @@ export const Asus: Store = {
|
|||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
|
itemNumber: '202007AM020000005',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://store.asus.com/us/item/202003AM280000002'
|
url: 'https://store.asus.com/us/item/202007AM020000005'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
|
itemNumber: '202009AM160000001',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://store.asus.com/us/item/202009AM160000001'
|
url: 'https://store.asus.com/us/item/202009AM160000001'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
|
itemNumber: '202009AM150000004',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://store.asus.com/us/item/202009AM150000004'
|
url: 'https://store.asus.com/us/item/202009AM150000004'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
|
itemNumber: '202009AM150000003',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://store.asus.com/us/item/202009AM150000003'
|
url: 'https://store.asus.com/us/item/202009AM150000003'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
|
itemNumber: '202009AM150000001',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://store.asus.com/us/item/202009AM150000001'
|
url: 'https://store.asus.com/us/item/202009AM150000001'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
itemNumber: '202009AM290000002',
|
||||||
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://store.asus.com/us/item/202009AM290000002'
|
url: 'https://store.asus.com/us/item/202009AM290000002'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'asus',
|
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]
|
successStatusCodes: [[0, 399], 404]
|
||||||
};
|
};
|
||||||
|
|||||||
+53
-29
@@ -20,145 +20,169 @@ export const Azerty: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus xtreme',
|
model: 'aorus xtreme',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3070',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x4',
|
model: 'ichill x4',
|
||||||
series: '3070',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3070',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3070',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
model: 'dual fan',
|
model: 'dual fan',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3070',
|
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'
|
name: 'azerty'
|
||||||
|
|||||||
+60
-16
@@ -17,7 +17,8 @@ export const BAndH: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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'
|
||||||
},
|
},
|
||||||
// TUF was removed from BH, not sure why so commenting out listing for now
|
// TUF was removed from BH, not sure why so commenting out listing for now
|
||||||
// {
|
// {
|
||||||
@@ -30,13 +31,15 @@ export const BAndH: Store = {
|
|||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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
|
// TUF was removed from BH, not sure why so commenting out listing for now
|
||||||
// {
|
// {
|
||||||
@@ -49,79 +52,120 @@ export const BAndH: Store = {
|
|||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'bandh'
|
name: 'bandh'
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ export const BestBuyCa: Store = {
|
|||||||
text: ['available online']
|
text: ['available online']
|
||||||
},
|
},
|
||||||
maxPrice: {
|
maxPrice: {
|
||||||
container: 'div[class^="productPricingContainer"] span[class^="screenReaderOnly_"',
|
container:
|
||||||
|
'div[class^="productPricingContainer"] span[class^="screenReaderOnly_"',
|
||||||
euroFormat: false
|
euroFormat: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -16,85 +17,99 @@ export const BestBuyCa: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3070',
|
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',
|
brand: 'zotac',
|
||||||
model: 'twin edge oc',
|
model: 'twin edge oc',
|
||||||
series: '3070',
|
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',
|
brand: 'zotac',
|
||||||
model: 'twin edge',
|
model: 'twin edge',
|
||||||
series: '3070',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3070',
|
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',
|
name: 'bestbuy-ca',
|
||||||
|
|||||||
+132
-38
@@ -7,7 +7,8 @@ export const BestBuy: Store = {
|
|||||||
text: ['add to cart']
|
text: ['add to cart']
|
||||||
},
|
},
|
||||||
maxPrice: {
|
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
|
euroFormat: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -16,217 +17,310 @@ export const BestBuy: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'nvidia',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6429442/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6429442/cart',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3070',
|
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'
|
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',
|
brand: 'nvidia',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6429440/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6429440/cart',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'asus',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432445/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432445/cart',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
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/asus-geforce-rtx-3080-10gb-gddr6x-pci-express-4-0-strix-graphics-card-black/6432445.p?skuId=6432445&intl=nosplash'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6439300/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6439300/cart',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3070',
|
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'
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432399/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432399/cart',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6436194/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6436194/cart',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432400/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432400/cart',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6436196/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6436196/cart',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6436191/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6436191/cart',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3080',
|
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-3080-10gb-gddr6x-pci-express-4-0-graphics-card/6436191.p?skuId=6436191&intl=nosplash'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6437912/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6437912/cart',
|
||||||
model: 'eagle',
|
model: 'eagle',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6437909/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6437909/cart',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3070',
|
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'
|
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',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6430620/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6430620/cart',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6430621/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6430621/cart',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6436219/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6436219/cart',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6436223/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6436223/cart',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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'
|
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',
|
brand: 'msi',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6430175/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6430175/cart',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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/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',
|
brand: 'pny',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432654/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432654/cart',
|
||||||
model: 'dual fan',
|
model: 'dual fan',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432653/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432653/cart',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3070',
|
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: 'pny',
|
brand: 'pny',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432655/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432655/cart',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432658/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432658/cart',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'nvidia',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6429434/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6429434/cart',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432447/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432447/cart',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432446/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432446/cart',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6430215/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6430215/cart',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6430623/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6430623/cart',
|
||||||
model: 'gaming',
|
model: 'gaming',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6430624/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6430624/cart',
|
||||||
model: 'eagle',
|
model: 'eagle',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6434363/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6434363/cart',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6436193/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6436193/cart',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6436192/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6436192/cart',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3090',
|
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',
|
brand: 'pny',
|
||||||
cartUrl: 'https://api.bestbuy.com/click/-/6432657/cart',
|
cartUrl: 'https://api.bestbuy.com/click/-/6432657/cart',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'bestbuy'
|
name: 'bestbuy'
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ export const Box: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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: {
|
linksBuilder: {
|
||||||
|
|||||||
+120
-51
@@ -21,255 +21,324 @@ export const Caseking: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x4',
|
model: 'ichill x4',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'twin x2 oc',
|
model: 'twin x2 oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'amp holo',
|
model: 'amp holo',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3090',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'gaming x3',
|
model: 'gaming x3',
|
||||||
series: '3090',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3090',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x4',
|
model: 'ichill x4',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
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'
|
name: 'caseking'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ export const Ccl: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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/'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -34,15 +35,18 @@ export const Ccl: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3070',
|
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',
|
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',
|
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/'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,11 @@ export const Computeruniverse: Store = {
|
|||||||
labels: {
|
labels: {
|
||||||
inStock: {
|
inStock: {
|
||||||
container: '.availability',
|
container: '.availability',
|
||||||
text: ['bestellartikel', 'auf lager und sofort lieferbar', 'kurzfristig verfügbar']
|
text: [
|
||||||
|
'bestellartikel',
|
||||||
|
'auf lager und sofort lieferbar',
|
||||||
|
'kurzfristig verfügbar'
|
||||||
|
]
|
||||||
},
|
},
|
||||||
maxPrice: {
|
maxPrice: {
|
||||||
container: '.product-price',
|
container: '.product-price',
|
||||||
@@ -16,31 +20,36 @@ export const Computeruniverse: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'asus',
|
||||||
model: 'dual',
|
model: 'dual',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'dual oc',
|
model: 'dual oc',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
@@ -52,67 +61,78 @@ export const Computeruniverse: Store = {
|
|||||||
brand: 'gainward',
|
brand: 'gainward',
|
||||||
model: 'phoenix',
|
model: 'phoenix',
|
||||||
series: '3070',
|
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',
|
brand: 'gainward',
|
||||||
model: 'phoenix gs',
|
model: 'phoenix gs',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle',
|
model: 'eagle',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3070',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3070',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x4',
|
model: 'ichill x4',
|
||||||
series: '3070',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3070',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 2x oc',
|
model: 'ventus 2x oc',
|
||||||
series: '3070',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3070',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro',
|
model: 'gaming pro',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
@@ -122,333 +142,416 @@ export const Computeruniverse: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3070',
|
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',
|
brand: 'zotac',
|
||||||
model: 'twin edge oc',
|
model: 'twin edge oc',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'gainward',
|
||||||
model: 'phoenix',
|
model: 'phoenix',
|
||||||
series: '3080',
|
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',
|
brand: 'gainward',
|
||||||
model: 'phoenix gs',
|
model: 'phoenix gs',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x4',
|
model: 'ichill x4',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'twin x2 oc',
|
model: 'twin x2 oc',
|
||||||
series: '3080',
|
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',
|
brand: 'kfa2',
|
||||||
model: 'sg oc',
|
model: 'sg oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro',
|
model: 'gaming pro',
|
||||||
series: '3080',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro oc',
|
model: 'gaming pro oc',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'amp holo',
|
model: 'amp holo',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'amp extreme holo',
|
model: 'amp extreme holo',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3090',
|
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',
|
brand: 'gainward',
|
||||||
model: 'phoenix',
|
model: 'phoenix',
|
||||||
series: '3090',
|
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',
|
brand: 'gainward',
|
||||||
model: 'phoenix gs oc',
|
model: 'phoenix gs oc',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3090',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3090',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x4',
|
model: 'ichill x4',
|
||||||
series: '3090',
|
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',
|
brand: 'kfa2',
|
||||||
model: 'sg oc',
|
model: 'sg oc',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3090',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro',
|
model: 'gaming pro',
|
||||||
series: '3090',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro oc',
|
model: 'gaming pro oc',
|
||||||
series: '3090',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
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'
|
name: 'computeruniverse'
|
||||||
|
|||||||
@@ -60,13 +60,13 @@ export const Coolblue: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc gaming',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.coolblue.nl/product/868731/'
|
url: 'https://www.coolblue.nl/product/868731/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix gaming',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.coolblue.nl/product/868732/'
|
url: 'https://www.coolblue.nl/product/868732/'
|
||||||
},
|
},
|
||||||
@@ -96,13 +96,13 @@ export const Coolblue: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc gaming',
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.coolblue.nl/product/868728/'
|
url: 'https://www.coolblue.nl/product/868728/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix gaming',
|
model: 'strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.coolblue.nl/product/868729/'
|
url: 'https://www.coolblue.nl/product/868729/'
|
||||||
},
|
},
|
||||||
|
|||||||
+83
-31
@@ -16,153 +16,205 @@ export const Coolmod: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus xtreme',
|
model: 'aorus xtreme',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'kfa2',
|
||||||
model: 'sg-oc',
|
model: 'sg oc',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x4',
|
model: 'ichill x4',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'twin x2 oc',
|
model: 'twin x2 oc',
|
||||||
series: '3080',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'coolmod'
|
name: 'coolmod'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ export const Currys: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -34,11 +35,13 @@ export const Currys: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3080',
|
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',
|
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'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -24,13 +24,13 @@ export const Cyberport: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.cyberport.de?DEEP=2E07-51S'
|
url: 'https://www.cyberport.de?DEEP=2E07-51S'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.cyberport.de?DEEP=2E07-51T'
|
url: 'https://www.cyberport.de?DEEP=2E07-51T'
|
||||||
},
|
},
|
||||||
@@ -93,6 +93,30 @@ export const Cyberport: Store = {
|
|||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.cyberport.de?DEEP=2E13-1H7'
|
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'
|
name: 'cyberport'
|
||||||
|
|||||||
@@ -21,7 +21,21 @@ export const Ebuyer: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -34,15 +48,18 @@ export const Ebuyer: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3070',
|
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',
|
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',
|
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'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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'
|
||||||
|
};
|
||||||
@@ -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'
|
||||||
|
};
|
||||||
@@ -2,10 +2,16 @@ import {Store} from './store';
|
|||||||
|
|
||||||
export const Gamestop: Store = {
|
export const Gamestop: Store = {
|
||||||
labels: {
|
labels: {
|
||||||
inStock: {
|
inStock: [
|
||||||
container: '.add-to-cart',
|
{
|
||||||
text: ['add to cart']
|
container: '.add-to-cart',
|
||||||
},
|
text: ['add to cart']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
container: '.add-to-cart',
|
||||||
|
text: ['Pre-Order']
|
||||||
|
}
|
||||||
|
],
|
||||||
maxPrice: {
|
maxPrice: {
|
||||||
container: '.primary-details-row .actual-price',
|
container: '.primary-details-row .actual-price',
|
||||||
euroFormat: false
|
euroFormat: false
|
||||||
@@ -20,13 +26,43 @@ export const Gamestop: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
name: 'gamestop',
|
||||||
|
|||||||
@@ -10,7 +10,11 @@ type Backoff = {
|
|||||||
|
|
||||||
const stores: Record<string, 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
|
* We treat statusCode 0 as successful as some of the puppeteer plugins
|
||||||
* cause side-effects resulting in an empty response object even though
|
* 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;
|
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);
|
await delay(backoff.time);
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import {Link, Series} from '../store';
|
import {Link, Model, Series} from '../store';
|
||||||
import {logger} from '../../../logger';
|
import {logger} from '../../../logger';
|
||||||
|
|
||||||
export interface Card {
|
export interface Card {
|
||||||
brand: string;
|
brand: string;
|
||||||
model: string;
|
model: Model;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface LinksBuilderOptions {
|
interface LinksBuilderOptions {
|
||||||
@@ -95,7 +95,10 @@ export function parseCard(name: string): Card | null {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Split non spaced TitleCase words only after extracting brand
|
// 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,
|
// Some vendors have oc at the beginning of the product name,
|
||||||
// store whether the card contains the term "oc" and remove
|
// store whether the card contains the term "oc" and remove
|
||||||
@@ -103,28 +106,31 @@ export function parseCard(name: string): Card | null {
|
|||||||
let isOC = false;
|
let isOC = false;
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/prefer-regexp-exec */
|
/* eslint-disable @typescript-eslint/prefer-regexp-exec */
|
||||||
model = model.filter(word => {
|
model = model.filter((word) => {
|
||||||
if (word.toLowerCase() === 'oc') {
|
if (word.toLowerCase() === 'oc') {
|
||||||
isOC = true;
|
isOC = true;
|
||||||
return false;
|
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(/^(\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 */
|
/* eslint-enable @typescript-eslint/prefer-regexp-exec */
|
||||||
|
|
||||||
if (isOC) {
|
if (isOC) model.push('oc');
|
||||||
model.push('OC');
|
if (model.length === 0) return null;
|
||||||
}
|
|
||||||
|
|
||||||
if (model.length === 0) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
brand: brand.toLowerCase(),
|
brand: brand.toLowerCase(),
|
||||||
model: model.join(' ').toLowerCase().replace(/ gaming\b/g, '').trim()
|
model: model
|
||||||
|
.join(' ')
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/ gaming\b/g, '')
|
||||||
|
.trim() as Model
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,12 @@ export class NvidiaCart {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error(`✖ [nvidia] ${name} could not automatically add to cart, attempt ${i + 1} of ${config.nvidia.addToCardAttempts}`, error);
|
logger.error(
|
||||||
|
`✖ [nvidia] ${name} could not automatically add to cart, attempt ${
|
||||||
|
i + 1
|
||||||
|
} of ${config.nvidia.addToCardAttempts}`,
|
||||||
|
error
|
||||||
|
);
|
||||||
logger.debug(error);
|
logger.debug(error);
|
||||||
|
|
||||||
lastError = error;
|
lastError = error;
|
||||||
@@ -92,7 +97,9 @@ export class NvidiaCart {
|
|||||||
|
|
||||||
await open(cartUrl);
|
await open(cartUrl);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error(`✖ [nvidia] ${name} could not automatically add to cart, opening page`);
|
logger.error(
|
||||||
|
`✖ [nvidia] ${name} could not automatically add to cart, opening page`
|
||||||
|
);
|
||||||
logger.debug(error);
|
logger.debug(error);
|
||||||
|
|
||||||
cartUrl = this.fallbackCartUrl;
|
cartUrl = this.fallbackCartUrl;
|
||||||
@@ -118,10 +125,18 @@ export class NvidiaCart {
|
|||||||
public async refreshSessionToken(): Promise<void> {
|
public async refreshSessionToken(): Promise<void> {
|
||||||
logger.debug('ℹ [nvidia] refreshing session token');
|
logger.debug('ℹ [nvidia] refreshing session token');
|
||||||
try {
|
try {
|
||||||
const result = await usingResponse(this.browser, this.sessionUrl, async response => {
|
const result = await usingResponse(
|
||||||
return response?.json() as NvidiaSessionTokenJSON | undefined;
|
this.browser,
|
||||||
});
|
this.sessionUrl,
|
||||||
if (typeof result !== 'object' || result === null || !('session_token' in result)) {
|
async (response) => {
|
||||||
|
return response?.json() as NvidiaSessionTokenJSON | undefined;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (
|
||||||
|
typeof result !== 'object' ||
|
||||||
|
result === null ||
|
||||||
|
!('session_token' in result)
|
||||||
|
) {
|
||||||
throw new Error('malformed response');
|
throw new Error('malformed response');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,18 +148,20 @@ export class NvidiaCart {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 url = 'https://api-prod.nvidia.com/direct-sales-shop/DR/add-to-cart';
|
||||||
const sessionToken = await this.getSessionToken();
|
const sessionToken = await this.getSessionToken();
|
||||||
|
|
||||||
logger.info(`ℹ [nvidia] session_token=${sessionToken}`);
|
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');
|
page.removeAllListeners('request');
|
||||||
|
|
||||||
await page.setRequestInterception(true);
|
await page.setRequestInterception(true);
|
||||||
|
|
||||||
page.on('request', interceptedRequest => {
|
page.on('request', (interceptedRequest) => {
|
||||||
void interceptedRequest.continue({
|
void interceptedRequest.continue({
|
||||||
headers: {
|
headers: {
|
||||||
...interceptedRequest.headers(),
|
...interceptedRequest.headers(),
|
||||||
@@ -153,9 +170,7 @@ export class NvidiaCart {
|
|||||||
},
|
},
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
postData: JSON.stringify({
|
postData: JSON.stringify({
|
||||||
products: [
|
products: [{productId, quantity: 1}]
|
||||||
{productId, quantity: 1}
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -13,15 +13,23 @@ function getRegionInfo(): NvidiaRegionInfo {
|
|||||||
|
|
||||||
const regionInfo = regionInfos.get(country);
|
const regionInfo = regionInfos.get(country);
|
||||||
if (!regionInfo) {
|
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;
|
return regionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
function nvidiaStockUrl(id: number, drLocale: string, currency: string): string {
|
function nvidiaStockUrl(
|
||||||
return `https://api-prod.nvidia.com/direct-sales-shop/DR/products/${drLocale}/${currency}/${id}?` +
|
id: number,
|
||||||
timestampUrlParameter().slice(1);
|
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;
|
let cart: NvidiaCart;
|
||||||
@@ -45,7 +53,13 @@ export function generateOpenCartAction(id: number, cardName: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function generateLinks(): Link[] {
|
export function generateLinks(): Link[] {
|
||||||
const {drLocale, fe3080Id, fe3090Id, fe2060SuperId, currency} = getRegionInfo();
|
const {
|
||||||
|
drLocale,
|
||||||
|
fe3080Id,
|
||||||
|
fe3090Id,
|
||||||
|
fe2060SuperId,
|
||||||
|
currency
|
||||||
|
} = getRegionInfo();
|
||||||
|
|
||||||
const links: Link[] = [];
|
const links: Link[] = [];
|
||||||
|
|
||||||
@@ -63,7 +77,10 @@ export function generateLinks(): Link[] {
|
|||||||
links.push({
|
links.push({
|
||||||
brand: 'nvidia',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
openCartAction: generateOpenCartAction(fe3080Id, 'nvidia founders edition 3080'),
|
openCartAction: generateOpenCartAction(
|
||||||
|
fe3080Id,
|
||||||
|
'nvidia founders edition 3080'
|
||||||
|
),
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: nvidiaStockUrl(fe3080Id, drLocale, currency)
|
url: nvidiaStockUrl(fe3080Id, drLocale, currency)
|
||||||
});
|
});
|
||||||
@@ -73,7 +90,10 @@ export function generateLinks(): Link[] {
|
|||||||
links.push({
|
links.push({
|
||||||
brand: 'nvidia',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
openCartAction: generateOpenCartAction(fe3090Id, 'nvidia founders edition 3090'),
|
openCartAction: generateOpenCartAction(
|
||||||
|
fe3090Id,
|
||||||
|
'nvidia founders edition 3090'
|
||||||
|
),
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: nvidiaStockUrl(fe3090Id, drLocale, currency)
|
url: nvidiaStockUrl(fe3090Id, drLocale, currency)
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import {config, defaultStoreData} from '../../config';
|
import {config, defaultStoreData} from '../../config';
|
||||||
|
import {AMD} from './amd';
|
||||||
|
import {AMDDe} from './amd-de';
|
||||||
import {Adorama} from './adorama';
|
import {Adorama} from './adorama';
|
||||||
import {Alternate} from './alternate';
|
import {Alternate} from './alternate';
|
||||||
import {AlternateNL} from './alternate-nl';
|
import {AlternateNL} from './alternate-nl';
|
||||||
@@ -9,6 +11,7 @@ import {AmazonEs} from './amazon-es';
|
|||||||
import {AmazonNl} from './amazon-nl';
|
import {AmazonNl} from './amazon-nl';
|
||||||
import {AmazonUk} from './amazon-uk';
|
import {AmazonUk} from './amazon-uk';
|
||||||
import {Aria} from './aria';
|
import {Aria} from './aria';
|
||||||
|
import {Arlt} from './arlt';
|
||||||
import {Asus} from './asus';
|
import {Asus} from './asus';
|
||||||
import {AsusDe} from './asus-de';
|
import {AsusDe} from './asus-de';
|
||||||
import {Azerty} from './azerty';
|
import {Azerty} from './azerty';
|
||||||
@@ -26,8 +29,12 @@ import {Cyberport} from './cyberport';
|
|||||||
import {Ebuyer} from './ebuyer';
|
import {Ebuyer} from './ebuyer';
|
||||||
import {Evga} from './evga';
|
import {Evga} from './evga';
|
||||||
import {EvgaEu} from './evga-eu';
|
import {EvgaEu} from './evga-eu';
|
||||||
|
import {Galaxus} from './galaxus';
|
||||||
|
import {Game} from './game';
|
||||||
import {Gamestop} from './gamestop';
|
import {Gamestop} from './gamestop';
|
||||||
|
import {Kabum} from './kabum';
|
||||||
import {Mediamarkt} from './mediamarkt';
|
import {Mediamarkt} from './mediamarkt';
|
||||||
|
import {MemoryExpress} from './memoryexpress';
|
||||||
import {MicroCenter} from './microcenter';
|
import {MicroCenter} from './microcenter';
|
||||||
import {Mindfactory} from './mindfactory';
|
import {Mindfactory} from './mindfactory';
|
||||||
import {Newegg} from './newegg';
|
import {Newegg} from './newegg';
|
||||||
@@ -45,7 +52,9 @@ import {ProshopDK} from './proshop-dk';
|
|||||||
import {Saturn} from './saturn';
|
import {Saturn} from './saturn';
|
||||||
import {Scan} from './scan';
|
import {Scan} from './scan';
|
||||||
import {Store} from './store';
|
import {Store} from './store';
|
||||||
|
import {Target} from './target';
|
||||||
import {Very} from './very';
|
import {Very} from './very';
|
||||||
|
import {Walmart} from './walmart';
|
||||||
import {Zotac} from './zotac';
|
import {Zotac} from './zotac';
|
||||||
import {logger} from '../../logger';
|
import {logger} from '../../logger';
|
||||||
|
|
||||||
@@ -59,7 +68,10 @@ export const storeList = new Map([
|
|||||||
[AmazonEs.name, AmazonEs],
|
[AmazonEs.name, AmazonEs],
|
||||||
[AmazonNl.name, AmazonNl],
|
[AmazonNl.name, AmazonNl],
|
||||||
[AmazonUk.name, AmazonUk],
|
[AmazonUk.name, AmazonUk],
|
||||||
|
[AMD.name, AMD],
|
||||||
|
[AMDDe.name, AMDDe],
|
||||||
[Aria.name, Aria],
|
[Aria.name, Aria],
|
||||||
|
[Arlt.name, Arlt],
|
||||||
[Asus.name, Asus],
|
[Asus.name, Asus],
|
||||||
[AsusDe.name, AsusDe],
|
[AsusDe.name, AsusDe],
|
||||||
[Azerty.name, Azerty],
|
[Azerty.name, Azerty],
|
||||||
@@ -77,8 +89,12 @@ export const storeList = new Map([
|
|||||||
[Ebuyer.name, Ebuyer],
|
[Ebuyer.name, Ebuyer],
|
||||||
[Evga.name, Evga],
|
[Evga.name, Evga],
|
||||||
[EvgaEu.name, EvgaEu],
|
[EvgaEu.name, EvgaEu],
|
||||||
|
[Galaxus.name, Galaxus],
|
||||||
|
[Game.name, Game],
|
||||||
[Gamestop.name, Gamestop],
|
[Gamestop.name, Gamestop],
|
||||||
|
[Kabum.name, Kabum],
|
||||||
[Mediamarkt.name, Mediamarkt],
|
[Mediamarkt.name, Mediamarkt],
|
||||||
|
[MemoryExpress.name, MemoryExpress],
|
||||||
[MicroCenter.name, MicroCenter],
|
[MicroCenter.name, MicroCenter],
|
||||||
[Mindfactory.name, Mindfactory],
|
[Mindfactory.name, Mindfactory],
|
||||||
[Newegg.name, Newegg],
|
[Newegg.name, Newegg],
|
||||||
@@ -95,7 +111,9 @@ export const storeList = new Map([
|
|||||||
[ProshopDK.name, ProshopDK],
|
[ProshopDK.name, ProshopDK],
|
||||||
[Saturn.name, Saturn],
|
[Saturn.name, Saturn],
|
||||||
[Scan.name, Scan],
|
[Scan.name, Scan],
|
||||||
|
[Target.name, Target],
|
||||||
[Very.name, Very],
|
[Very.name, Very],
|
||||||
|
[Walmart.name, Walmart],
|
||||||
[Zotac.name, Zotac]
|
[Zotac.name, Zotac]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -104,12 +122,12 @@ const models = new Set();
|
|||||||
const series = new Set();
|
const series = new Set();
|
||||||
const stores = new Map();
|
const stores = new Map();
|
||||||
|
|
||||||
function filterBrandsSeriesModels(stores: Map<string, Store>) {
|
function filterBrandsSeriesModels() {
|
||||||
brands.clear();
|
brands.clear();
|
||||||
series.clear();
|
series.clear();
|
||||||
models.clear();
|
models.clear();
|
||||||
|
|
||||||
for (const store of stores.values()) {
|
for (const store of storeList.values()) {
|
||||||
for (const link of store.links) {
|
for (const link of store.links) {
|
||||||
brands.add(link.brand);
|
brands.add(link.brand);
|
||||||
series.add(link.series);
|
series.add(link.series);
|
||||||
@@ -128,7 +146,11 @@ function filterBrandsSeriesModels(stores: Map<string, Store>) {
|
|||||||
|
|
||||||
function printConfig() {
|
function printConfig() {
|
||||||
if (config.store.stores.length > 0) {
|
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) {
|
if (config.store.showOnlyBrands.length > 0) {
|
||||||
@@ -136,9 +158,15 @@ function printConfig() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (config.store.showOnlyModels.length > 0) {
|
if (config.store.showOnlyModels.length > 0) {
|
||||||
logger.info(`ℹ selected models: ${config.store.showOnlyModels.map(entry => {
|
logger.info(
|
||||||
return entry.series ? entry.name + ' (' + entry.series + ')' : entry.name;
|
`ℹ selected models: ${config.store.showOnlyModels
|
||||||
}).join(', ')}`);
|
.map((entry) => {
|
||||||
|
return entry.series
|
||||||
|
? entry.name + ' (' + entry.series + ')'
|
||||||
|
: entry.name;
|
||||||
|
})
|
||||||
|
.join(', ')}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.store.showOnlySeries.length > 0) {
|
if (config.store.showOnlySeries.length > 0) {
|
||||||
@@ -153,7 +181,9 @@ function warnIfStoreDeprecated(store: Store) {
|
|||||||
logger.warn(`${store.name} is deprecated in favor of bestbuy`);
|
logger.warn(`${store.name} is deprecated in favor of bestbuy`);
|
||||||
break;
|
break;
|
||||||
case 'evga':
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
@@ -175,7 +205,7 @@ export function updateStores() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
filterBrandsSeriesModels(stores);
|
filterBrandsSeriesModels();
|
||||||
printConfig();
|
printConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
||||||
|
};
|
||||||
@@ -6,14 +6,16 @@ export const Mediamarkt: Store = {
|
|||||||
container: 'span[font-family="price"]',
|
container: 'span[font-family="price"]',
|
||||||
euroFormat: false
|
euroFormat: false
|
||||||
},
|
},
|
||||||
outOfStock: [{
|
outOfStock: [
|
||||||
container: '#root',
|
{
|
||||||
text: ['dieser artikel ist aktuell nicht verfügbar.']
|
container: '#root',
|
||||||
},
|
text: ['dieser artikel ist aktuell nicht verfügbar.']
|
||||||
{
|
},
|
||||||
container: '#root',
|
{
|
||||||
text: ['leider keine Lieferung möglich']
|
container: '#root',
|
||||||
}]
|
text: ['leider keine Lieferung möglich']
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
@@ -24,13 +26,13 @@ export const Mediamarkt: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2691243.html'
|
url: 'https://www.mediamarkt.de/de/product/-2691243.html'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2691244.html'
|
url: 'https://www.mediamarkt.de/de/product/-2691244.html'
|
||||||
},
|
},
|
||||||
@@ -120,13 +122,13 @@ export const Mediamarkt: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2681869.html'
|
url: 'https://www.mediamarkt.de/de/product/-2681869.html'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2681871.html'
|
url: 'https://www.mediamarkt.de/de/product/-2681871.html'
|
||||||
},
|
},
|
||||||
@@ -186,13 +188,13 @@ export const Mediamarkt: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2681863.html'
|
url: 'https://www.mediamarkt.de/de/product/-2681863.html'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2681866.html'
|
url: 'https://www.mediamarkt.de/de/product/-2681866.html'
|
||||||
},
|
},
|
||||||
@@ -231,6 +233,18 @@ export const Mediamarkt: Store = {
|
|||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.mediamarkt.de/de/product/-2683226.html'
|
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'
|
name: 'mediamarkt'
|
||||||
|
|||||||
@@ -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'
|
||||||
|
};
|
||||||
@@ -89,6 +89,30 @@ for (const microCenterLocation of microCenterLocations) {
|
|||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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}`
|
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}`
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,67 +20,106 @@ export const Mindfactory: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus xtreme',
|
model: 'aorus xtreme',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro',
|
model: 'gaming pro',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3090',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro',
|
model: 'gaming pro',
|
||||||
series: '3090',
|
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'
|
name: 'mindfactory'
|
||||||
|
|||||||
+254
-84
@@ -1,4 +1,5 @@
|
|||||||
import {Store} from './store';
|
import {Store} from './store';
|
||||||
|
import fetch from 'node-fetch';
|
||||||
|
|
||||||
export const NeweggCa: Store = {
|
export const NeweggCa: Store = {
|
||||||
labels: {
|
labels: {
|
||||||
@@ -18,274 +19,443 @@ export const NeweggCa: Store = {
|
|||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
|
itemNumber: '14-500-495',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.newegg.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',
|
brand: 'asus',
|
||||||
|
itemNumber: '14-126-453',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
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',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
|
itemNumber: '14-487-521',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
|
itemNumber: '14-487-520',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
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',
|
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',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
|
itemNumber: '14-137-597',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
|
itemNumber: '149-32-329',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
|
itemNumber: '149-32-330',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
|
itemNumber: '14-950-502',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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',
|
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',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
|
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'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
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',
|
model: 'trinity',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
|
itemNumber: '14-126-454',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
itemNumber: '14-126-456',
|
||||||
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
|
itemNumber: '14-487-524',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
|
itemNumber: '14-487-523',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
|
itemNumber: '14-487-526',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3090',
|
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',
|
brand: 'evga',
|
||||||
|
itemNumber: '14-487-525',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
|
itemNumber: '14-137-602',
|
||||||
model: 'ventus 2x',
|
model: 'ventus 2x',
|
||||||
series: '3070',
|
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',
|
brand: 'msi',
|
||||||
|
itemNumber: '14-137-601',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3070',
|
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',
|
brand: 'msi',
|
||||||
|
itemNumber: '14-137-603',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
|
itemNumber: '14-126-460',
|
||||||
model: 'dual',
|
model: 'dual',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
|
itemNumber: '14-126-459',
|
||||||
model: 'dual oc',
|
model: 'dual oc',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
|
itemNumber: '14-932-342',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
itemNumber: '14-126-458',
|
||||||
|
model: 'strix',
|
||||||
series: '3070',
|
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',
|
brand: 'zotac',
|
||||||
|
itemNumber: '14-500-501',
|
||||||
model: 'twin edge',
|
model: 'twin edge',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
|
itemNumber: '14-932-344',
|
||||||
model: 'eagle',
|
model: 'eagle',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black gaming',
|
itemNumber: '14-487-528',
|
||||||
|
model: 'xc3 black',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
|
itemNumber: '14-932-360',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360'
|
url:
|
||||||
},
|
'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360'
|
||||||
{
|
|
||||||
brand: 'gigabyte',
|
|
||||||
model: 'vision oc',
|
|
||||||
series: '3080',
|
|
||||||
url: 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
|
itemNumber: '14-500-505',
|
||||||
model: 'twin edge oc',
|
model: 'twin edge oc',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
|
itemNumber: '14-133-812',
|
||||||
model: 'uprising',
|
model: 'uprising',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
|
itemNumber: '14-126-461',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 gaming',
|
itemNumber: '14-487-531',
|
||||||
|
model: 'ftw3',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
|
url:
|
||||||
},
|
'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
|
||||||
{
|
|
||||||
brand: 'evga',
|
|
||||||
model: 'ftw3 gaming',
|
|
||||||
series: '3080',
|
|
||||||
url: 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
|
itemNumber: '14-932-359',
|
||||||
model: 'aorus',
|
model: 'aorus',
|
||||||
series: '3070',
|
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',
|
brand: 'gigabyte',
|
||||||
|
itemNumber: '14-932-343',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra gaming',
|
itemNumber: '14-487-530',
|
||||||
|
model: 'xc3 ultra',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra gaming',
|
itemNumber: '14-487-532',
|
||||||
|
model: 'ftw3 ultra',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
itemNumber: '14-133-811',
|
||||||
|
model: 'xlr8 revel',
|
||||||
series: '3070',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 gaming',
|
itemNumber: '14-487-529',
|
||||||
|
model: 'xc3',
|
||||||
series: '3070',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
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
|
||||||
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
+253
-103
@@ -22,398 +22,548 @@ export const Newegg: Store = {
|
|||||||
itemNumber: '14-500-495',
|
itemNumber: '14-500-495',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.newegg.com/zotac-geforce-rtx-2060-zt-t20600k-10m/p/N82E16814500495'
|
url:
|
||||||
|
'https://www.newegg.com/zotac-geforce-rtx-2060-zt-t20600k-10m/p/N82E16814500495'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453',
|
||||||
itemNumber: '14-126-453',
|
itemNumber: '14-126-453',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
|
url:
|
||||||
|
'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518',
|
||||||
itemNumber: '14-487-518',
|
itemNumber: '14-487-518',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519',
|
||||||
itemNumber: '14-487-519',
|
itemNumber: '14-487-519',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522',
|
||||||
itemNumber: '14-487-522',
|
itemNumber: '14-487-522',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521',
|
||||||
itemNumber: '14-487-521',
|
itemNumber: '14-487-521',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600',
|
||||||
itemNumber: '14-137-600',
|
itemNumber: '14-137-600',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600'
|
url:
|
||||||
|
'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598',
|
||||||
itemNumber: '14-137-598',
|
itemNumber: '14-137-598',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
|
url:
|
||||||
|
'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597',
|
||||||
itemNumber: '14-137-597',
|
itemNumber: '14-137-597',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
|
url:
|
||||||
|
'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329',
|
||||||
itemNumber: '149-32-329',
|
itemNumber: '149-32-329',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
|
url:
|
||||||
|
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330',
|
||||||
itemNumber: '149-32-330',
|
itemNumber: '149-32-330',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
|
url:
|
||||||
|
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336',
|
||||||
itemNumber: '14-932-336',
|
itemNumber: '14-932-336',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336'
|
url:
|
||||||
|
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502',
|
||||||
itemNumber: '14-950-502',
|
itemNumber: '14-950-502',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
|
url:
|
||||||
|
'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457',
|
||||||
itemNumber: '14-126-457',
|
itemNumber: '14-126-457',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
|
url:
|
||||||
|
'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452',
|
||||||
itemNumber: '14-126-452',
|
itemNumber: '14-126-452',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
|
url:
|
||||||
|
'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504',
|
||||||
itemNumber: '14-500-504',
|
itemNumber: '14-500-504',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504'
|
url:
|
||||||
|
'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809',
|
||||||
itemNumber: '14-133-809',
|
itemNumber: '14-133-809',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809'
|
url:
|
||||||
|
'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455',
|
||||||
itemNumber: '14-126-455',
|
itemNumber: '14-126-455',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455'
|
url:
|
||||||
|
'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456',
|
||||||
itemNumber: '14-126-456',
|
itemNumber: '14-126-456',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
|
url:
|
||||||
|
'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595',
|
||||||
itemNumber: '14-137-595',
|
itemNumber: '14-137-595',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
|
url:
|
||||||
|
'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596',
|
||||||
itemNumber: '14-137-596',
|
itemNumber: '14-137-596',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
|
url:
|
||||||
|
'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503',
|
||||||
itemNumber: '14-500-503',
|
itemNumber: '14-500-503',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
|
url:
|
||||||
|
'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
brand: 'msi',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599',
|
||||||
itemNumber: '14-137-599',
|
itemNumber: '14-137-599',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599'
|
url:
|
||||||
|
'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525',
|
||||||
itemNumber: '14-487-525',
|
itemNumber: '14-487-525',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524',
|
||||||
itemNumber: '14-487-524',
|
itemNumber: '14-487-524',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526',
|
||||||
itemNumber: '14-487-526',
|
itemNumber: '14-487-526',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527',
|
||||||
itemNumber: '14-487-527',
|
itemNumber: '14-487-527',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523',
|
||||||
itemNumber: '14-487-523',
|
itemNumber: '14-487-523',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327',
|
||||||
itemNumber: '14-932-327',
|
itemNumber: '14-932-327',
|
||||||
model: 'gaming',
|
model: 'gaming',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
|
url:
|
||||||
|
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328',
|
||||||
itemNumber: '14-932-328',
|
itemNumber: '14-932-328',
|
||||||
model: 'eagle',
|
model: 'eagle',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328'
|
url:
|
||||||
|
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'msi',
|
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',
|
itemNumber: '14-137-601',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-137-602',
|
||||||
model: 'ventus 2x oc',
|
model: 'ventus 2x oc',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-137-603',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3070',
|
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: 'gigabyte',
|
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',
|
itemNumber: '14-932-360',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-126-459',
|
||||||
model: 'dual oc',
|
model: 'dual oc',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-126-458',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-500-501',
|
||||||
model: 'twin edge',
|
model: 'twin edge',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-500-505',
|
||||||
model: 'twin edge oc',
|
model: 'twin edge oc',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-932-342',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-487-532',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-487-530',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-487-528',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-932-343',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-932-344',
|
||||||
model: 'eagle',
|
model: 'eagle',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-487-529',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3070',
|
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',
|
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',
|
itemNumber: '14-126-460',
|
||||||
model: 'dual',
|
model: 'dual',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460'
|
url:
|
||||||
|
'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932359',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932359',
|
||||||
itemNumber: '14-932-359',
|
itemNumber: '14-932-359',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359'
|
url:
|
||||||
|
'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'evga',
|
brand: 'evga',
|
||||||
cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487531',
|
cartUrl:
|
||||||
|
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487531',
|
||||||
itemNumber: '14-487-531',
|
itemNumber: '14-487-531',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
|
url:
|
||||||
|
'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
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=N82E16814126461',
|
||||||
itemNumber: '14-126-461',
|
itemNumber: '14-126-461',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3070',
|
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: '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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'newegg',
|
name: 'newegg',
|
||||||
realTimeInventoryLookup: async (itemNumber: string) => {
|
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 = await fetch(request_url);
|
||||||
const response_json = await response.json();
|
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
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,203 +4,286 @@ export const Notebooksbilliger: Store = {
|
|||||||
labels: {
|
labels: {
|
||||||
inStock: {
|
inStock: {
|
||||||
container: '.warehouse',
|
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: {
|
maxPrice: {
|
||||||
container: 'form[name="cart_quantity"] span[class*="product-price__regular"]',
|
container:
|
||||||
|
'form[name="cart_quantity"] span[class*="product-price__regular"]',
|
||||||
euroFormat: true
|
euroFormat: true
|
||||||
},
|
},
|
||||||
outOfStock: [{
|
outOfStock: [
|
||||||
container: '.warehouse',
|
{
|
||||||
text: ['liefertermin noch unbestimmt']
|
container: '.warehouse',
|
||||||
},
|
text: ['liefertermin noch unbestimmt']
|
||||||
{
|
},
|
||||||
container: '.soldOut',
|
{
|
||||||
text: ['dieses produkt ist leider ausverkauft.']
|
container: '.soldOut',
|
||||||
},
|
text: ['dieses produkt ist leider ausverkauft.']
|
||||||
{
|
},
|
||||||
container: '.just_inStore',
|
{
|
||||||
text: ['dieses Produkt kann nur in unseren unten genannten Stores gekauft werden.']
|
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.']
|
},
|
||||||
}]
|
{
|
||||||
|
container: '#product_error_text',
|
||||||
|
text: ['leider ist dieser artikel nicht mehr verfügbar.']
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+ichill+x3+grafikkarte+684162'
|
url:
|
||||||
|
'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+ichill+x3+grafikkarte+684162'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'inno3d',
|
brand: 'inno3d',
|
||||||
model: 'twin x2',
|
model: 'twin x2',
|
||||||
series: '3070',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'twin x2 oc',
|
model: 'twin x2 oc',
|
||||||
series: '3070',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685357'
|
url:
|
||||||
|
'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685357'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'nvidia',
|
||||||
|
model: 'founders edition',
|
||||||
|
series: '3070',
|
||||||
|
url:
|
||||||
|
'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685359'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'gainward',
|
brand: 'gainward',
|
||||||
model: 'phoenix',
|
model: 'phoenix',
|
||||||
series: '3070',
|
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',
|
brand: 'gainward',
|
||||||
model: 'phoenix gs',
|
model: 'phoenix gs',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
model: 'uprising',
|
model: 'uprising',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3070',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf',
|
model: 'tuf',
|
||||||
series: '3070',
|
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',
|
brand: 'zotac',
|
||||||
model: 'twin edge',
|
model: 'twin edge',
|
||||||
series: '3070',
|
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',
|
brand: 'zotac',
|
||||||
model: 'twin edge oc',
|
model: 'twin edge oc',
|
||||||
series: '3070',
|
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',
|
brand: 'gainward',
|
||||||
model: 'phoenix gs',
|
model: 'phoenix gs',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill x3',
|
model: 'ichill x3',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'twin x2 oc',
|
model: 'twin x2 oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3080',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro',
|
model: 'gaming pro',
|
||||||
series: '3080',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro oc',
|
model: 'gaming pro oc',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3090',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3090',
|
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',
|
brand: 'palit',
|
||||||
model: 'gaming pro oc',
|
model: 'gaming pro oc',
|
||||||
series: '3090',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
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'
|
name: 'notebooksbilliger'
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ export const Novatech: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -39,11 +40,13 @@ export const Novatech: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3080',
|
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',
|
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
@@ -13,27 +13,227 @@ export interface NvidiaRegionInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const regionInfos = new Map<string, 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'}],
|
'austria',
|
||||||
['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'}],
|
currency: 'EUR',
|
||||||
['denmark', {currency: 'DKK', drLocale: 'en_gb', fe2060SuperId: 5394903100, fe3080Id: 5438793300, fe3090Id: null, siteLocale: 'da-dk'}],
|
drLocale: 'de_de',
|
||||||
['finland', {currency: 'EUR', drLocale: 'en_gb', fe2060SuperId: 5394903100, fe3080Id: 5438793300, fe3090Id: null, siteLocale: 'fi-fi'}],
|
fe2060SuperId: 5394902900,
|
||||||
['france', {currency: 'EUR', drLocale: 'fr_fr', fe2060SuperId: 5394903200, fe3080Id: 5438795200, fe3090Id: 5438761500, siteLocale: 'fr-fr'}],
|
fe3080Id: 5440853700,
|
||||||
['germany', {currency: 'EUR', drLocale: 'de_de', fe2060SuperId: 5394902900, fe3080Id: 5438792300, fe3090Id: 5438761400, siteLocale: 'de-de'}],
|
fe3090Id: 5444941400,
|
||||||
['great_britain', {currency: 'GBP', drLocale: 'en_gb', fe2060SuperId: 5394903300, fe3080Id: 5438792800, fe3090Id: 5438792700, siteLocale: 'en-gb'}],
|
siteLocale: 'de-at'
|
||||||
['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'}],
|
'belgium',
|
||||||
['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'}],
|
currency: 'EUR',
|
||||||
['portugal', {currency: 'EUR', drLocale: 'en_gb', fe2060SuperId: null, fe3080Id: 5438794300, fe3090Id: null, siteLocale: 'en-gb'}],
|
drLocale: 'fr_fr',
|
||||||
['russia', {currency: 'RUB', drLocale: 'ru_ru', fe2060SuperId: null, fe3080Id: null, fe3090Id: null, siteLocale: 'ru-ru'}],
|
fe2060SuperId: 5394902700,
|
||||||
['spain', {currency: 'EUR', drLocale: 'es_es', fe2060SuperId: 5394903000, fe3080Id: 5438794800, fe3090Id: 5438794700, siteLocale: 'es-es'}],
|
fe3080Id: 5438795700,
|
||||||
['sweden', {currency: 'SEK', drLocale: 'sv_se', fe2060SuperId: 5394903900, fe3080Id: 5438798100, fe3090Id: 5438761600, siteLocale: 'sv-se'}],
|
fe3090Id: 5438795600,
|
||||||
// https://github.com/jef/nvidia-snatcher/issues/407 This fe2080SuperID is for the Shield TV which is out of stock in the US
|
siteLocale: 'fr-be'
|
||||||
['usa', {currency: 'USD', drLocale: 'en_us', fe2060SuperId: 5355772500, fe3080Id: 5438481700, fe3090Id: 5438481600, siteLocale: 'en-us'}]
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'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 = {
|
export const NvidiaApi: Store = {
|
||||||
|
|||||||
@@ -34,37 +34,43 @@ export const Nvidia: Store = {
|
|||||||
brand: 'nvidia',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3080',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3080',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3090',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3090',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3070',
|
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',
|
brand: 'nvidia',
|
||||||
model: 'founders edition',
|
model: 'founders edition',
|
||||||
series: '3070',
|
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'
|
name: 'nvidia'
|
||||||
|
|||||||
@@ -20,19 +20,22 @@ export const OfficeDepot: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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'
|
name: 'officedepot'
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ export const Overclockers: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -34,7 +35,8 @@ export const Overclockers: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3070',
|
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',
|
series: '3080',
|
||||||
@@ -46,7 +48,8 @@ export const Overclockers: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
series: '3090',
|
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'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -20,19 +20,22 @@ export const PCComponentes: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
@@ -44,105 +47,121 @@ export const PCComponentes: Store = {
|
|||||||
brand: 'gigabyte',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 black',
|
model: 'xc3 black',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3 ultra',
|
model: 'xc3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
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',
|
brand: 'zotac',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'xc3',
|
model: 'xc3',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3 ultra',
|
model: 'ftw3 ultra',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus xtreme',
|
model: 'aorus xtreme',
|
||||||
series: '3080',
|
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',
|
brand: 'evga',
|
||||||
model: 'ftw3',
|
model: 'ftw3',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'pccomponentes'
|
name: 'pccomponentes'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+15
-12
@@ -10,7 +10,6 @@ export const Pny: Store = {
|
|||||||
container: 'span[itemprop="price"]',
|
container: 'span[itemprop="price"]',
|
||||||
euroFormat: false
|
euroFormat: false
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
@@ -27,35 +26,39 @@ export const Pny: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'pny',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3070',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3080',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
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',
|
brand: 'pny',
|
||||||
model: 'xlr8 rgb',
|
model: 'xlr8 revel',
|
||||||
series: '3090',
|
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'
|
name: 'pny'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ import {Store} from './store';
|
|||||||
export const ProshopDE: Store = {
|
export const ProshopDE: Store = {
|
||||||
labels: {
|
labels: {
|
||||||
maxPrice: {
|
maxPrice: {
|
||||||
container: '.site-currency-wrapper > span[class="site-currency-attention"]',
|
container:
|
||||||
|
'.site-currency-wrapper > span[class="site-currency-attention"]',
|
||||||
euroFormat: true
|
euroFormat: true
|
||||||
},
|
},
|
||||||
outOfStock: {
|
outOfStock: {
|
||||||
@@ -20,13 +21,13 @@ export const ProshopDE: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.proshop.de/2876843'
|
url: 'https://www.proshop.de/2876843'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: ' rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.proshop.de/2876845'
|
url: 'https://www.proshop.de/2876845'
|
||||||
},
|
},
|
||||||
@@ -122,13 +123,13 @@ export const ProshopDE: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.proshop.de/2876857'
|
url: 'https://www.proshop.de/2876857'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: ' rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.proshop.de/2876859'
|
url: 'https://www.proshop.de/2876859'
|
||||||
},
|
},
|
||||||
@@ -206,13 +207,13 @@ export const ProshopDE: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.proshop.de/2876865'
|
url: 'https://www.proshop.de/2876865'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.proshop.de/2876867'
|
url: 'https://www.proshop.de/2876867'
|
||||||
},
|
},
|
||||||
@@ -251,8 +252,31 @@ export const ProshopDE: Store = {
|
|||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.proshop.de/2876881'
|
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'
|
name: 'proshop-de'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ export const ProshopDK: Store = {
|
|||||||
text: ['1-2 dages levering', 'fjernlager']
|
text: ['1-2 dages levering', 'fjernlager']
|
||||||
},
|
},
|
||||||
maxPrice: {
|
maxPrice: {
|
||||||
container: '.site-currency-wrapper > span[class="site-currency-attention"]',
|
container:
|
||||||
|
'.site-currency-wrapper > span[class="site-currency-attention"]',
|
||||||
euroFormat: true
|
euroFormat: true
|
||||||
},
|
},
|
||||||
outOfStock: {
|
outOfStock: {
|
||||||
@@ -20,135 +21,156 @@ export const ProshopDK: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf gaming',
|
model: 'tuf',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf gaming oc',
|
model: 'tuf oc',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'strix gaming',
|
model: 'strix',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'strix gaming oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x',
|
model: 'ventus 3x',
|
||||||
series: '3080',
|
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',
|
brand: 'msi',
|
||||||
model: 'ventus 3x oc',
|
model: 'ventus 3x oc',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill 4x',
|
model: 'ichill x3',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'ichill 3x',
|
model: 'ichill x3',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'gaming oc',
|
model: 'gaming oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'eagle oc',
|
model: 'eagle oc',
|
||||||
series: '3080',
|
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',
|
brand: 'inno3d',
|
||||||
model: 'twin x2 oc',
|
model: 'twin x2 oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'vision oc',
|
model: 'vision oc',
|
||||||
series: '3080',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3080',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf gaming',
|
model: 'tuf',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'tuf gaming oc',
|
model: 'tuf oc',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'strix gaming',
|
model: 'strix',
|
||||||
series: '3090',
|
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',
|
brand: 'asus',
|
||||||
model: 'strix gaming oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
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',
|
brand: 'msi',
|
||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus master',
|
model: 'aorus master',
|
||||||
series: '3090',
|
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',
|
brand: 'gigabyte',
|
||||||
model: 'aorus xtreme',
|
model: 'aorus xtreme',
|
||||||
series: '3090',
|
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'
|
name: 'proshop-dk'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export const Saturn: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.saturn.de/de/product/-2691244.html'
|
url: 'https://www.saturn.de/de/product/-2691244.html'
|
||||||
},
|
},
|
||||||
@@ -44,13 +44,13 @@ export const Saturn: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.saturn.de/de/product/-2681869.html'
|
url: 'https://www.saturn.de/de/product/-2681869.html'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.saturn.de/de/product/-2681871.html'
|
url: 'https://www.saturn.de/de/product/-2681871.html'
|
||||||
},
|
},
|
||||||
@@ -110,13 +110,13 @@ export const Saturn: Store = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix',
|
model: 'strix',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.saturn.de/de/product/-2681863.html'
|
url: 'https://www.saturn.de/de/product/-2681863.html'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'asus',
|
brand: 'asus',
|
||||||
model: 'rog strix oc',
|
model: 'strix oc',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.saturn.de/de/product/-2681866.html'
|
url: 'https://www.saturn.de/de/product/-2681866.html'
|
||||||
},
|
},
|
||||||
@@ -155,6 +155,18 @@ export const Saturn: Store = {
|
|||||||
model: 'gaming x trio',
|
model: 'gaming x trio',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.saturn.de/de/product/-2683226.html'
|
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'
|
name: 'saturn'
|
||||||
|
|||||||
+26
-8
@@ -4,10 +4,12 @@ import {getProductLinksBuilder} from './helpers/card';
|
|||||||
export const Scan: Store = {
|
export const Scan: Store = {
|
||||||
disableAdBlocker: true,
|
disableAdBlocker: true,
|
||||||
labels: {
|
labels: {
|
||||||
captcha: [{
|
captcha: [
|
||||||
container: '#challenge-form',
|
{
|
||||||
text: ['hcaptcha_submit']
|
container: '#challenge-form',
|
||||||
}],
|
text: ['hcaptcha_submit']
|
||||||
|
}
|
||||||
|
],
|
||||||
inStock: {
|
inStock: {
|
||||||
container: '.buyPanel .priceAvailability',
|
container: '.buyPanel .priceAvailability',
|
||||||
text: ['add to basket', 'in stock']
|
text: ['add to basket', 'in stock']
|
||||||
@@ -26,7 +28,20 @@ export const Scan: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
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'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -40,15 +55,18 @@ export const Scan: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3070',
|
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',
|
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',
|
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'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,13 +10,104 @@ export type Pricing = {
|
|||||||
euroFormat?: boolean;
|
euroFormat?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Series = 'test:series' | '3070' | '3080' | '3090';
|
export type Brand =
|
||||||
|
| 'test:brand'
|
||||||
|
| 'amd'
|
||||||
|
| 'asus'
|
||||||
|
| 'evga'
|
||||||
|
| 'gainward'
|
||||||
|
| 'gigabyte'
|
||||||
|
| 'inno3d'
|
||||||
|
| 'kfa2'
|
||||||
|
| 'microsoft'
|
||||||
|
| 'msi'
|
||||||
|
| 'nvidia'
|
||||||
|
| 'palit'
|
||||||
|
| 'pny'
|
||||||
|
| 'sony'
|
||||||
|
| 'zotac';
|
||||||
|
|
||||||
|
export type Series =
|
||||||
|
| 'test:series'
|
||||||
|
| '3070'
|
||||||
|
| '3080'
|
||||||
|
| '3090'
|
||||||
|
| 'ryzen5950'
|
||||||
|
| 'ryzen5900'
|
||||||
|
| 'ryzen5800'
|
||||||
|
| 'ryzen5600'
|
||||||
|
| 'sonyps5c'
|
||||||
|
| 'sonyps5de'
|
||||||
|
| 'xboxsx'
|
||||||
|
| 'xboxss';
|
||||||
|
|
||||||
|
export type Model =
|
||||||
|
| 'test:model'
|
||||||
|
| '5600x'
|
||||||
|
| '5800x'
|
||||||
|
| '5900x'
|
||||||
|
| '5950x'
|
||||||
|
| 'amp extreme holo'
|
||||||
|
| 'amp holo'
|
||||||
|
| 'aorus'
|
||||||
|
| 'aorus master'
|
||||||
|
| 'aorus xtreme'
|
||||||
|
| 'dual'
|
||||||
|
| 'dual fan'
|
||||||
|
| 'dual oc'
|
||||||
|
| 'founders edition'
|
||||||
|
| 'ftw3'
|
||||||
|
| 'ftw3 ultra'
|
||||||
|
| 'eagle'
|
||||||
|
| 'eagle oc'
|
||||||
|
| 'gaming'
|
||||||
|
| 'gaming oc'
|
||||||
|
| 'gaming x3'
|
||||||
|
| 'ichill x2'
|
||||||
|
| 'ichill x3'
|
||||||
|
| 'ichill x4'
|
||||||
|
| 'gamerock oc'
|
||||||
|
| 'gaming x trio'
|
||||||
|
| 'gaming pro'
|
||||||
|
| 'gaming pro oc'
|
||||||
|
| 'ps5 console'
|
||||||
|
| 'ps5 digital'
|
||||||
|
| 'phantom gs'
|
||||||
|
| 'phoenix'
|
||||||
|
| 'phoenix gs'
|
||||||
|
| 'phoenix gs oc'
|
||||||
|
| 'sg oc'
|
||||||
|
| 'strix'
|
||||||
|
| 'strix oc'
|
||||||
|
| 'trinity'
|
||||||
|
| 'trinity oc'
|
||||||
|
| 'tuf'
|
||||||
|
| 'tuf oc'
|
||||||
|
| 'turbo'
|
||||||
|
| 'twin edge'
|
||||||
|
| 'twin edge oc'
|
||||||
|
| 'twin x2'
|
||||||
|
| 'twin x2 oc'
|
||||||
|
| 'uprising'
|
||||||
|
| 'ventus 2x'
|
||||||
|
| 'ventus 2x oc'
|
||||||
|
| 'ventus 3x'
|
||||||
|
| 'ventus 3x oc'
|
||||||
|
| 'vision'
|
||||||
|
| 'vision oc'
|
||||||
|
| 'xc3'
|
||||||
|
| 'xc3 black'
|
||||||
|
| 'xc3 ultra'
|
||||||
|
| 'xbox series s'
|
||||||
|
| 'xbox series x'
|
||||||
|
| 'xlr8 revel'
|
||||||
|
| 'xlr8 uprising';
|
||||||
|
|
||||||
export type Link = {
|
export type Link = {
|
||||||
brand: 'test:brand' | 'asus' | 'evga' | 'gainward' | 'gigabyte' | 'inno3d' | 'kfa2' | 'msi' | 'nvidia' | 'palit' | 'pny' | 'zotac';
|
brand: Brand;
|
||||||
itemNumber?: string;
|
itemNumber?: string;
|
||||||
series: Series;
|
series: Series;
|
||||||
model: string;
|
model: Model;
|
||||||
url: string;
|
url: string;
|
||||||
cartUrl?: string;
|
cartUrl?: string;
|
||||||
openCartAction?: (browser: Browser) => Promise<string>;
|
openCartAction?: (browser: Browser) => Promise<string>;
|
||||||
@@ -34,7 +125,7 @@ export type Labels = {
|
|||||||
maxPrice?: Pricing;
|
maxPrice?: Pricing;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type StatusCodeRangeArray = Array<(number | [number, number])>;
|
export type StatusCodeRangeArray = Array<number | [number, number]>;
|
||||||
|
|
||||||
export type Store = {
|
export type Store = {
|
||||||
realTimeInventoryLookup?: (itemNumber: string) => Promise<boolean>;
|
realTimeInventoryLookup?: (itemNumber: string) => Promise<boolean>;
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
import {Store} from './store';
|
||||||
|
|
||||||
|
export const Target: Store = {
|
||||||
|
labels: {
|
||||||
|
inStock: [
|
||||||
|
{
|
||||||
|
container: '[data-test="preorderButton"]',
|
||||||
|
text: ['Preorder now']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
container: '[data-test="shipItButton"]',
|
||||||
|
text: ['Ship it']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
maxPrice: {
|
||||||
|
container: '[data-test="product-price"]'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 console',
|
||||||
|
series: 'sonyps5c',
|
||||||
|
url: 'https://www.target.com/p/playstation-5-console/-/A-81114595'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 digital',
|
||||||
|
series: 'sonyps5de',
|
||||||
|
url:
|
||||||
|
'https://www.target.com/p/playstation-5-digital-edition-console/-/A-81114596'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'microsoft',
|
||||||
|
model: 'xbox series x',
|
||||||
|
series: 'xboxsx',
|
||||||
|
url: 'https://www.target.com/p/xbox-series-x-console/-/A-80790841'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'microsoft',
|
||||||
|
model: 'xbox series s',
|
||||||
|
series: 'xboxss',
|
||||||
|
url: 'https://www.target.com/p/xbox-series-s-console/-/A-80790842'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
name: 'target'
|
||||||
|
};
|
||||||
+13
-7
@@ -22,7 +22,8 @@ export const Very: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://www.very.co.uk/msi-geforce-gtx-1660-ti-gaming-x-6g-graphics-card/1600350984.prd'
|
url:
|
||||||
|
'https://www.very.co.uk/msi-geforce-gtx-1660-ti-gaming-x-6g-graphics-card/1600350984.prd'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linksBuilder: {
|
linksBuilder: {
|
||||||
@@ -34,9 +35,11 @@ export const Very: Store = {
|
|||||||
const titleElement = productElement.find('.productTitle').first();
|
const titleElement = productElement.find('.productTitle').first();
|
||||||
const title = titleElement.text()?.replace(/\n/g, ' ').trim();
|
const title = titleElement.text()?.replace(/\n/g, ' ').trim();
|
||||||
|
|
||||||
if (!title || ['RTX', series]
|
if (
|
||||||
.map(x => title.toLowerCase().includes(x.toLowerCase()))
|
!title ||
|
||||||
.filter(x => !x).length > 0
|
['RTX', series]
|
||||||
|
.map((x) => title.toLowerCase().includes(x.toLowerCase()))
|
||||||
|
.filter((x) => !x).length > 0
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -67,15 +70,18 @@ export const Very: Store = {
|
|||||||
urls: [
|
urls: [
|
||||||
{
|
{
|
||||||
series: '3070',
|
series: '3070',
|
||||||
url: 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100'
|
url:
|
||||||
|
'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100'
|
url:
|
||||||
|
'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100'
|
url:
|
||||||
|
'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import {Store} from './store';
|
||||||
|
|
||||||
|
export const Walmart: Store = {
|
||||||
|
labels: {
|
||||||
|
inStock: {
|
||||||
|
container: '#ProductPrimaryCTA-cta_add_to_cart_button',
|
||||||
|
text: ['Add to cart']
|
||||||
|
},
|
||||||
|
maxPrice: {
|
||||||
|
container: 'span[class*="price-characteristic"]'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 console',
|
||||||
|
series: 'sonyps5c',
|
||||||
|
url: 'https://www.walmart.com/ip/PlayStation5-Console/363472942'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'sony',
|
||||||
|
model: 'ps5 digital',
|
||||||
|
series: 'sonyps5de',
|
||||||
|
url:
|
||||||
|
'https://www.walmart.com/ip/Sony-PlayStation-5-Digital-Edition/493824815'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'microsoft',
|
||||||
|
model: 'xbox series x',
|
||||||
|
series: 'xboxsx',
|
||||||
|
url: 'https://www.walmart.com/ip/Xbox-Series-X/443574645'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
brand: 'microsoft',
|
||||||
|
model: 'xbox series s',
|
||||||
|
series: 'xboxss',
|
||||||
|
url: 'https://www.walmart.com/ip/Xbox-Series-S/606518560'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
name: 'walmart'
|
||||||
|
};
|
||||||
@@ -17,27 +17,30 @@ export const Zotac: Store = {
|
|||||||
brand: 'test:brand',
|
brand: 'test:brand',
|
||||||
model: 'test:model',
|
model: 'test:model',
|
||||||
series: 'test:series',
|
series: 'test:series',
|
||||||
url: 'https://store.zotac.com/zotac-gaming-geforce-rtx-2060-twin-fan-zt-t20600f-10m'
|
url:
|
||||||
|
'https://store.zotac.com/zotac-gaming-geforce-rtx-2060-twin-fan-zt-t20600f-10m'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-zt-a30800d-10p'
|
url:
|
||||||
|
'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-zt-a30800d-10p'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
model: 'trinity oc',
|
model: 'trinity oc',
|
||||||
series: '3080',
|
series: '3080',
|
||||||
url: 'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-oc-zt-a30800j-10p'
|
url:
|
||||||
|
'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-oc-zt-a30800j-10p'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
brand: 'zotac',
|
brand: 'zotac',
|
||||||
model: 'trinity',
|
model: 'trinity',
|
||||||
series: '3090',
|
series: '3090',
|
||||||
url: 'https://store.zotac.com/zotac-gaming-geforce-rtx-3090-trinity-zt-a30900d-10p'
|
url:
|
||||||
|
'https://store.zotac.com/zotac-gaming-geforce-rtx-3090-trinity-zt-a30900d-10p'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
name: 'zotac'
|
name: 'zotac'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Vendored
+6
-1
@@ -11,7 +11,12 @@ declare module 'play-sound' {
|
|||||||
export interface PlaySound {
|
export interface PlaySound {
|
||||||
player: string;
|
player: string;
|
||||||
|
|
||||||
play: ((file: string, callback: (error: Error) => void) => PlayerProcess) & ((file: string, options: PlayOptions, callback: (error: Error) => void) => PlayerProcess);
|
play: ((file: string, callback: (error: Error) => void) => PlayerProcess) &
|
||||||
|
((
|
||||||
|
file: string,
|
||||||
|
options: PlayOptions,
|
||||||
|
callback: (error: Error) => void
|
||||||
|
) => PlayerProcess);
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PlayerProcess {
|
export interface PlayerProcess {
|
||||||
|
|||||||
+13
-13
@@ -2,19 +2,19 @@ declare module 'puppeteer-extra-plugin-block-resources' {
|
|||||||
import {PuppeteerExtraPlugin} from 'puppeteer-extra';
|
import {PuppeteerExtraPlugin} from 'puppeteer-extra';
|
||||||
|
|
||||||
export type ResourceType =
|
export type ResourceType =
|
||||||
'document' |
|
| 'document'
|
||||||
'eventsource' |
|
| 'eventsource'
|
||||||
'fetch' |
|
| 'fetch'
|
||||||
'font' |
|
| 'font'
|
||||||
'image' |
|
| 'image'
|
||||||
'manifest' |
|
| 'manifest'
|
||||||
'media' |
|
| 'media'
|
||||||
'other' |
|
| 'other'
|
||||||
'script' |
|
| 'script'
|
||||||
'stylesheet' |
|
| 'stylesheet'
|
||||||
'texttrack' |
|
| 'texttrack'
|
||||||
'websocket' |
|
| 'websocket'
|
||||||
'xhr';
|
| 'xhr';
|
||||||
|
|
||||||
export interface Options {
|
export interface Options {
|
||||||
availableTypes?: Set<ResourceType>;
|
availableTypes?: Set<ResourceType>;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user