diff --git a/.env-example b/.env-example index f5915ce..954c366 100644 --- a/.env-example +++ b/.env-example @@ -57,6 +57,11 @@ TWILIO_ACCOUNT_SID= TWILIO_AUTH_TOKEN= TWILIO_FROM_NUMBER= TWILIO_TO_NUMBER= +TWITCH_ACCESS_TOKEN= +TWITCH_CHANNEL= +TWITCH_CLIENT_ID= +TWITCH_CLIENT_SECRET= +TWITCH_REFRESH_TOKEN= TWITTER_ACCESS_TOKEN_KEY= TWITTER_ACCESS_TOKEN_SECRET= TWITTER_CONSUMER_KEY= diff --git a/.gitignore b/.gitignore index 35529ad..1e9cc41 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ success-*.png *.flac *.exe desktop.ini + +twitch.json diff --git a/README.md b/README.md index 0d35fa8..891378e 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ Here is a list of variables that you can use to customize your newly copied `.en | `STORES` | [Supported stores](#supported-stores) you want to be scraped | Comma separated, default: `nvidia` | | `SCREENSHOT` | Capture screenshot of page if a card is found | Default: `true` | | `TELEGRAM_ACCESS_TOKEN` | Telegram access token | | -| `TELEGRAM_CHAT_ID` | Telegram chat ID | | +| `TELEGRAM_CHAT_ID` | Telegram chat ID | Comma seperated, e.g.: `123456789`, `123456789,987654321` | | `TWILIO_ACCOUNT_SID` | Twilio Account SID | Can be found on twilio.com/console | | `TWILIO_AUTH_TOKEN` | Twilio Auth Token | Can be found on twilio.com/console | | `TWILIO_FROM_NUMBER` | Twilio provided phone number to send messages from | Include country code e.g +4401234567890 | @@ -141,7 +141,12 @@ Here is a list of variables that you can use to customize your newly copied `.en | `TWITTER_CONSUMER_KEY` | Twitter Consumer Key | Generate all Twitter keys at: https://developer.twitter.com/ | | `TWITTER_CONSUMER_SECRET` | Twitter Consumer Secret | | | `TWITTER_TWEET_TAGS` | Optional list of hashtags to append to the tweet message | E.g.: `#nvidia #nvidiastock` | -| `USER_AGENT` | Custom User-Agents headers for HTTP requests | Newline separated, E.g.: `USER_AGENT_STRING1 \n USER_AGENT_STRING2` | | Default: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36` | +| `TWITCH_CLIENT_ID` | Twitch client ID | | +| `TWITCH_CLIENT_SECRET`| Twitch client secret | | +| `TWITCH_ACCESS_TOKEN` | Twitch access token | | +| `TWITCH_REFRESH_TOKEN` | Twitch refresh token | | +| `TWITCH_CHANNEL` | Twitch channel | | +| `USER_AGENT` | Custom User-Agents headers for HTTP requests | Newline separated, e.g.: `USER_AGENT_STRING1 \n USER_AGENT_STRING2` | | Default: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36` | > :point_right: If you have multi-factor authentication (MFA), you will need to create an [app password](https://myaccount.google.com/apppasswords) and use this instead of your Gmail password. @@ -166,21 +171,25 @@ Here is a list of variables that you can use to customize your newly copied `.en | Amazon (UK) | `amazon-uk`| | Aria PC | `aria`| | ASUS | `asus` | +| ASUS (DE) | `asus-de` | | Azerty | `azerty`| | B&H | `bandh`| | Best Buy | `bestbuy`| | Best Buy (CA) | `bestbuy-ca`| | Box | `box`| -| Caseking | `caseking`| +| Caseking (DE) | `caseking`| | CCL | `ccl`| +| Computeruniverse (DE) | `computeruniverse` | | Coolblue | `coolblue`| | Currys | `currys`| +| Cyberport (DE) | `cyberport` | | eBuyer | `ebuyer`| | EVGA | `evga`| | EVGA (EU) | `evga-eu`| | Gamestop | `gamestop`| | Mediamarkt (DE) | `mediamarkt`| | Micro Center | `microcenter`| +| Mindfactory (DE) | `mindfactory` | | Newegg | `newegg`| | Newegg (CA) | `newegg-ca`| | Notebooksbilliger (DE) |`notebooksbilliger`| @@ -193,6 +202,7 @@ Here is a list of variables that you can use to customize your newly copied `.en | PNY | `pny`| | Proshop (DE) | `proshop-de`| | Proshop (DK) | `proshop-dk`| +| Saturn (DE) | `saturn`| | Scan | `scan`| | Very | `very`| | Zotac | `zotac`| @@ -236,13 +246,17 @@ Here is a list of variables that you can use to customize your newly copied `.en | Brand | Model | |:---:|---| -| `asus` | `rog strix`, `rog strix oc`, `strix`, `tuf`, `tuf oc` | -| `evga` | `ftw3`, `ftw3 ultra`, `xc3 black`, `xc3`, `xc3 ultra` | -| `gigabyte` | `aorus master`, `aorus xtreme`, `eagle`, `eagle oc`, `gaming`, `gaming oc`, `vision oc` | +| `asus` | `rog strix`, `rog strix oc`, `tuf`, `tuf oc` | +| `evga` | `ftw3`, `ftw3 ultra`, `xc3`, `xc3 black`, `xc3 ultra` | +| `gainward` | `phoenix`, `phoenix gs`, `phoenix gs oc` | +| `gigabyte` | `aorus master`, `aorus xtreme`, `eagle`, `eagle oc`, `gaming`, `gaming oc`, `turbo`, `vision`, `vision oc` | +| `inno3d` | `gaming x3`, `ichill x3`, `ichill x4`, `twin x2 oc` | +| `kfa2` | `sg oc` | | `msi` | `gaming x trio`, `ventus 3x`, `ventus 3x oc` | | `nvidia` | `founders edition` | +| `palit` | `gaming pro`, `gaming pro oc` | | `pny` | `dual fan`, `xlr8`, `xlr8 rgb` | -| `zotac` | `trinity`, `trinity oc` | +| `zotac` | `amp holo`, `amp extreme holo`, `trinity`, `trinity oc` | #### Supported carriers diff --git a/package-lock.json b/package-lock.json index 93ce6f9..22ebe2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -204,6 +204,163 @@ "tldts-experimental": "^5.6.21" } }, + "@d-fischer/cache-decorators": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@d-fischer/cache-decorators/-/cache-decorators-2.1.0.tgz", + "integrity": "sha512-w0LJp+hBQOesVxQjMpirv3rZfxqOoWKu4GzJ+/lEVpQTrEos9ckBLnvPNBewG6/AUyuk/xYYijekp8E9r7UBrA==", + "requires": { + "@d-fischer/shared-utils": "^2.4.0", + "@types/node": "^14.11.2", + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@d-fischer/connection": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@d-fischer/connection/-/connection-6.2.0.tgz", + "integrity": "sha512-koam3kWfdkWJXlczji2iDBPILTSddDxCujjdhNDrF1DEORgjrHfBwB4CvNKjQL3jTgOuaAUcSgfgGYZJ92ngXA==", + "requires": { + "@d-fischer/isomorphic-ws": "^5.0.2", + "@d-fischer/logger": "^2.1.0", + "@d-fischer/shared-utils": "^2.4.0", + "@d-fischer/typed-event-emitter": "^3.1.0", + "@types/node": "^14.11.2", + "@types/ws": "^7.2.7", + "tslib": "^2.0.1", + "ws": "^7.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@d-fischer/cross-fetch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@d-fischer/cross-fetch/-/cross-fetch-4.0.1.tgz", + "integrity": "sha512-N2wdpOaSSLtCERlOFLPU3UpW27VSWiPfu65SKWdVrYJP2DeH2ZBwwvDz2OYAWkXb0fSUKQWuWk+yWhDpcmQljQ==", + "requires": { + "node-fetch": "2.6.0", + "whatwg-fetch": "3.0.0" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + } + } + }, + "@d-fischer/deprecate": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@d-fischer/deprecate/-/deprecate-2.0.2.tgz", + "integrity": "sha512-wlw3HwEanJFJKctwLzhfOM6LKwR70FPfGZGoKOhWBKyOPXk+3a9Cc6S9zhm6tka7xKtpmfxVIReGUwPnMbIaZg==" + }, + "@d-fischer/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@d-fischer/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-7eoxnxcto5eVPW5h1T+ePnVFukmI9f/ZR9nlBLh1t3kyzJDUNor2C+YW9H/Terw3YnbZSDgDYrpCJCHtOtAQHw==" + }, + "@d-fischer/isomorphic-ws": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@d-fischer/isomorphic-ws/-/isomorphic-ws-5.0.2.tgz", + "integrity": "sha512-FeULiS37jd5M7nroqUw7kfnntlIW6Kilr2kn38Xjoyw/WZqwdxSAihJ2Y09aoDamrVKEW9/flbo2/y/VwHVZ6g==" + }, + "@d-fischer/logger": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@d-fischer/logger/-/logger-2.1.0.tgz", + "integrity": "sha512-NK2SFtNYfzI5V0/Nws1ANJC2b0K3JB1Uhp7CdS6VH2v3wPBlfM/NXcrrsiPTbCM5QgsZxJDIlQKcI+UYw9terg==", + "requires": { + "detect-node": "^2.0.4", + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@d-fischer/promise.allsettled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@d-fischer/promise.allsettled/-/promise.allsettled-2.0.1.tgz", + "integrity": "sha512-n3DCu++HfQBsuTRzwCk4hABtjQm+RgyPHecGTg6ze8ocCPKzSllsXQWTX7PEoQHKwoHEEoDiHzddTC62n+HZBA==", + "requires": { + "array.prototype.map": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.4", + "iterate-value": "^1.0.2" + } + }, + "@d-fischer/qs": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@d-fischer/qs/-/qs-7.0.2.tgz", + "integrity": "sha512-yAu3xDooiL+ef84Jo8nLjDjWBRk7RXk163Y6aTvRB7FauYd3spQD/dWvgT7R4CrN54Juhrrc3dMY7mc+jZGurQ==" + }, + "@d-fischer/rate-limiter": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@d-fischer/rate-limiter/-/rate-limiter-0.2.6.tgz", + "integrity": "sha512-tu8OSno3WEd18CmAqezH17rRNX8rMGmsoIfOwt01r4q0vb+krvftcCLxiN8UwJsSXFgMTp11CXfdsl0wu2VjPg==", + "requires": { + "@d-fischer/logger": "^2.1.0", + "@d-fischer/promise.allsettled": "^2.0.1", + "@types/node": "^12.12.5", + "tslib": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "12.12.67", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.67.tgz", + "integrity": "sha512-R48tgL2izApf+9rYNH+3RBMbRpPeW3N8f0I9HMhggeq4UXwBDqumJ14SDs4ctTMhG11pIOduZ4z3QWGOiMc9Vg==" + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@d-fischer/shared-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@d-fischer/shared-utils/-/shared-utils-2.4.0.tgz", + "integrity": "sha512-HqS4PAyzJXzs+CtomhsqcvAl34UmDHoiP8BqOkTdMZCkcqW+SMoGekBAxDyX23p7q8E39zRy0S3uyIHD/GPmuA==", + "requires": { + "@types/node": "^14.11.2", + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@d-fischer/typed-event-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@d-fischer/typed-event-emitter/-/typed-event-emitter-3.1.0.tgz", + "integrity": "sha512-s0ZokqR2kR3NX6C7Em4gdf6sXtyH17yqhQzDEXEvFjBeWaYSRbRVUV/73DxU2ZTR+4h2obwL+Gru4TAEXrFfdQ==", + "requires": { + "@types/node": "^14.11.2", + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", @@ -662,6 +819,14 @@ "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" }, + "@types/ws": { + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.7.tgz", + "integrity": "sha512-UUFC/xxqFLP17hTva8/lVT0SybLUrfSD9c+iapKb0fEiC8uoDbA+xuZ3pAN603eW+bY8ebSMLm9jXdIPnD0ZgA==", + "requires": { + "@types/node": "*" + } + }, "@types/yauzl": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", @@ -1140,6 +1305,17 @@ "es-abstract": "^1.17.0-next.1" } }, + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" + } + }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -2399,7 +2575,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -2460,6 +2635,11 @@ "minimalistic-assert": "^1.0.0" } }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, "devtools-protocol": { "version": "0.0.799653", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.799653.tgz", @@ -2778,7 +2958,6 @@ "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -2793,11 +2972,36 @@ "string.prototype.trimstart": "^1.0.1" } }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -4058,8 +4262,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -4313,7 +4516,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -4326,8 +4528,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-value": { "version": "1.0.0", @@ -4624,6 +4825,28 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, + "ircv3": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/ircv3/-/ircv3-0.26.3.tgz", + "integrity": "sha512-W4P+vqFVHUUBSCX7lY9HnH1Rag0OLqlpLSFE69z3qKx3Fpx4EpLVJVQXRF/LVSC+Fo1efvj9hXnH+A4m9yJwVQ==", + "requires": { + "@d-fischer/connection": "^6.2.0", + "@d-fischer/escape-string-regexp": "^5.0.0", + "@d-fischer/logger": "^2.1.0", + "@d-fischer/shared-utils": "^2.4.0", + "@d-fischer/typed-event-emitter": "^3.1.0", + "@types/node": "^14.11.2", + "klona": "^2.0.4", + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, "irregular-plurals": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.2.0.tgz", @@ -4659,6 +4882,11 @@ } } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", @@ -4681,8 +4909,7 @@ "is-callable": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.1.tgz", - "integrity": "sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg==", - "dev": true + "integrity": "sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg==" }, "is-ci": { "version": "2.0.0", @@ -4716,8 +4943,7 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, "is-descriptor": { "version": "0.1.6", @@ -4803,6 +5029,11 @@ "js-types": "^1.0.0" } }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==" + }, "is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", @@ -4811,8 +5042,7 @@ "is-negative-zero": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", - "dev": true + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" }, "is-npm": { "version": "4.0.0", @@ -4890,7 +5120,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -4903,6 +5132,11 @@ "is-unc-path": "^1.0.0" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==" + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -4911,14 +5145,12 @@ "is-string": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -4975,6 +5207,20 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "requires": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, "jest-worker": { "version": "26.5.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.5.0.tgz", @@ -5149,6 +5395,11 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" + }, "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -6209,14 +6460,12 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", @@ -6231,7 +6480,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.18.0-next.0", @@ -6243,7 +6491,6 @@ "version": "1.18.0-next.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.0.tgz", "integrity": "sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==", - "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -7950,7 +8197,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -7960,7 +8206,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -8295,6 +8540,11 @@ "repeat-string": "^1.6.1" } }, + "top-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/top-package/-/top-package-1.0.1.tgz", + "integrity": "sha512-tsuhQlHSigOTTvonxHXwqSKEVSnWMh2GvpTvXa5YmoyOwL5YvU4lTd/KNVZlKM5v7gqx44UEuQxyPQEpmaIHdg==" + }, "touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", @@ -8427,6 +8677,85 @@ } } }, + "twitch": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/twitch/-/twitch-4.2.6.tgz", + "integrity": "sha512-zRDT9PtNrplPQ8IPIi476kfVpLMQKtZKZzlbRs39Bn4evAltC9KHgT6P1Orh0RiaSxn9sVZoBcyFpylOnE26VQ==", + "requires": { + "@d-fischer/cache-decorators": "^2.0.0", + "@d-fischer/deprecate": "^2.0.1", + "@d-fischer/logger": "^2.0.0", + "@d-fischer/rate-limiter": "^0.2.5", + "@d-fischer/shared-utils": "^2.3.2", + "top-package": "^1.0.0", + "tslib": "^2.0.0", + "twitch-api-call": "^4.2.6", + "twitch-auth": "^4.2.6" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "twitch-api-call": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/twitch-api-call/-/twitch-api-call-4.2.6.tgz", + "integrity": "sha512-2+dG8zIrxQrD9clEm3f7p57v1N9nLj9uoYxsLOOHU7/cqYLtFe4rOhIZVHWQCoWXZOtd3Liz3d5iu5AslHXKBQ==", + "requires": { + "@d-fischer/cross-fetch": "^4.0.1", + "@d-fischer/qs": "^7.0.2", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "twitch-auth": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/twitch-auth/-/twitch-auth-4.2.6.tgz", + "integrity": "sha512-gvuYR5O5q3KQueAXqEpfaZw4Wrp28w/ElCII7zFeccDjBQd6jpQ7fTYLFY0xHhsFbCZPYg8JvgtSjFQJXBMa2g==", + "requires": { + "@d-fischer/deprecate": "^2.0.1", + "@d-fischer/shared-utils": "^2.3.2", + "tslib": "^2.0.0", + "twitch-api-call": "^4.2.6" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "twitch-chat-client": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/twitch-chat-client/-/twitch-chat-client-4.2.6.tgz", + "integrity": "sha512-p1zj8L2aVxJjSq572rgHpwVqzszuo7mwnyO49QMS8XMR3kogaBpa0O/ilN3Hv2xd35FTlCi8FXya1HvxYBfLAg==", + "requires": { + "@d-fischer/cache-decorators": "^2.0.0", + "@d-fischer/deprecate": "^2.0.1", + "@d-fischer/logger": "^2.0.0", + "@d-fischer/shared-utils": "^2.3.2", + "@d-fischer/typed-event-emitter": "^3.0.2", + "ircv3": "^0.26.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, "twitter": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", @@ -8890,6 +9219,11 @@ } } }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 0b7727f..654063e 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,9 @@ "puppeteer-extra-plugin-stealth": "^2.6.2", "pushover-notifications": "^1.2.2", "twilio": "^3.50.0", + "twitch": "^4.2.6", + "twitch-auth": "^4.2.6", + "twitch-chat-client": "^4.2.6", "twitter": "^1.7.1", "winston": "^3.3.3" }, diff --git a/src/config.ts b/src/config.ts index 564fa0a..e0c2d45 100644 --- a/src/config.ts +++ b/src/config.ts @@ -180,7 +180,7 @@ const notifications = { }, telegram: { accessToken: envOrString(process.env.TELEGRAM_ACCESS_TOKEN), - chatId: envOrString(process.env.TELEGRAM_CHAT_ID) + chatId: envOrArray(process.env.TELEGRAM_CHAT_ID) }, twilio: { accountSid: envOrString(process.env.TWILIO_ACCOUNT_SID), @@ -188,6 +188,13 @@ const notifications = { from: envOrString(process.env.TWILIO_FROM_NUMBER), to: envOrString(process.env.TWILIO_TO_NUMBER) }, + twitch: { + accessToken: envOrString(process.env.TWITCH_ACCESS_TOKEN), + channel: envOrString(process.env.TWITCH_CHANNEL), + clientId: envOrString(process.env.TWITCH_CLIENT_ID), + clientSecret: envOrString(process.env.TWITCH_CLIENT_SECRET), + refreshToken: envOrString(process.env.TWITCH_REFRESH_TOKEN) + }, twitter: { accessTokenKey: envOrString(process.env.TWITTER_ACCESS_TOKEN_KEY), accessTokenSecret: envOrString(process.env.TWITTER_ACCESS_TOKEN_SECRET), diff --git a/src/notification/notification.ts b/src/notification/notification.ts index 130db2a..e4096fe 100644 --- a/src/notification/notification.ts +++ b/src/notification/notification.ts @@ -11,6 +11,7 @@ import {sendSms} from './sms'; import {sendTelegramMessage} from './telegram'; import {sendTweet} from './twitter'; import {sendTwilioMessage} from './twilio'; +import {sendTwitchMessage} from './twitch'; export function sendNotification(link: Link, store: Store) { // Priority @@ -20,11 +21,12 @@ export function sendNotification(link: Link, store: Store) { sendDesktopNotification(link, store); // Non-priority sendDiscordMessage(link, store); + sendMqttMessage(link, store); sendPushbulletNotification(link, store); sendPushoverNotification(link, store); sendSlackMessage(link, store); sendTelegramMessage(link, store); sendTweet(link, store); sendTwilioMessage(link, store); - sendMqttMessage(link, store); + sendTwitchMessage(link, store); } diff --git a/src/notification/telegram.ts b/src/notification/telegram.ts index a697460..3eb5a38 100644 --- a/src/notification/telegram.ts +++ b/src/notification/telegram.ts @@ -15,13 +15,18 @@ export function sendTelegramMessage(link: Link, store: Store) { (async () => { const givenUrl = link.cartUrl ? link.cartUrl : link.url; + const results = []; - try { - await client.sendMessage(telegram.chatId, `${Print.inStock(link, store)}\n${givenUrl}`); - logger.info('✔ telegram message sent'); - } catch (error) { - logger.error('✖ couldn\'t send telegram message', error); + for (const chatId of telegram.chatId) { + try { + results.push(client.sendMessage(chatId, `${Print.inStock(link, store)}\n${givenUrl}`)); + logger.info('✔ telegram message sent'); + } catch (error) { + logger.error('✖ couldn\'t send telegram message', error); + } } + + await Promise.all(results); })(); } } diff --git a/src/notification/twitch.ts b/src/notification/twitch.ts new file mode 100644 index 0000000..e8a0e6a --- /dev/null +++ b/src/notification/twitch.ts @@ -0,0 +1,78 @@ +import {Link, Store} from '../store/model'; +import {Print, logger} from '../logger'; +import {RefreshableAuthProvider, StaticAuthProvider} from 'twitch-auth'; +import {existsSync, promises, readFileSync} from 'fs'; +import {ChatClient} from 'twitch-chat-client'; +import {config} from '../config'; + +const twitch = config.notifications.twitch; + +const messages: string[] = []; +let alreadySaying = false; + +let tokenData = { + accessToken: twitch.accessToken, + expiryTimestamp: 0, + refreshToken: twitch.refreshToken +}; + +if (existsSync('./twitch.json')) { + tokenData = {...JSON.parse(readFileSync('./twitch.json', 'utf-8')), ...tokenData}; +} + +const chatClient: ChatClient = new ChatClient( + new RefreshableAuthProvider( + new StaticAuthProvider(twitch.clientId, tokenData.accessToken), + { + clientSecret: twitch.clientSecret, + expiry: tokenData.expiryTimestamp === null ? null : new Date(tokenData.expiryTimestamp), + onRefresh: async ({accessToken, refreshToken, expiryDate}) => { + return promises.writeFile('./twitch.json', JSON.stringify({ + accessToken, + expiryTimestamp: expiryDate === null ? null : expiryDate.getTime(), + refreshToken + }, null, 4), 'utf-8'); + }, + refreshToken: tokenData.refreshToken + } + ), + { + channels: [twitch.channel] + } +); + +chatClient.onJoin((channel: string, user: string) => { + if (channel === `#${twitch.channel}` && user === chatClient.currentNick) { + while (messages.length) { + const message: string | undefined = messages.shift(); + + if (message !== undefined) { + try { + chatClient.say(channel, message); + logger.info('✔ twitch message sent'); + } catch (error) { + logger.error('✖ couldn\'t send twitch message', error); + } + } + } + } + + void chatClient.quit(); +}); + +chatClient.onDisconnect(() => { + alreadySaying = false; +}); + +export function sendTwitchMessage(link: Link, store: Store) { + if (tokenData.accessToken && twitch.channel && twitch.clientId && twitch.clientSecret && tokenData.refreshToken) { + logger.debug('↗ sending twitch message'); + + messages.push(`${Print.inStock(link, store)}\n${link.cartUrl ? link.cartUrl : link.url}`); + + if (!alreadySaying) { + alreadySaying = true; + void chatClient.connect(); + } + } +} diff --git a/src/store/model/alternate.ts b/src/store/model/alternate.ts index 589e79d..33128a0 100644 --- a/src/store/model/alternate.ts +++ b/src/store/model/alternate.ts @@ -4,7 +4,7 @@ export const Alternate: Store = { labels: { inStock: { container: '.stockStatus', - text: ['auf lager'] + text: ['auf lager', 'ware neu eingetroffen', 'in kürze versandfertig', 'ware im zulauf'] }, outOfStock: { container: '.stockStatus', @@ -18,30 +18,108 @@ export const Alternate: Store = { series: 'test:series', url: 'https://www.alternate.de/product/1516616' }, + { + brand: 'asus', + model: 'rog strix', + series: '3080', + url: 'https://www.alternate.de/product/1672868' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3080', + url: 'https://www.alternate.de/product/1672867' + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.alternate.de/product/1672251' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.alternate.de/product/1672634' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.alternate.de/product/1673517' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.alternate.de/product/1673524' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.alternate.de/product/1673512' + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.alternate.de/product/1673520' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.alternate.de/product/1674164' + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: 'https://www.alternate.de/product/1673442' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.alternate.de/product/1680168' + }, { brand: 'gigabyte', model: 'eagle oc', series: '3080', url: 'https://www.alternate.de/product/1672756' }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.alternate.de/product/1672345' - }, - { - brand: 'asus', - model: 'tuf gaming', - series: '3080', - url: 'https://www.alternate.de/product/1672251' - }, { brand: 'gigabyte', model: 'gaming oc', series: '3080', url: 'https://www.alternate.de/product/1672753' }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.alternate.de/product/1681134' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.alternate.de/product/1673136' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.alternate.de/product/1673134' + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.alternate.de/product/1673137' + }, { brand: 'msi', model: 'gaming x trio', @@ -49,40 +127,10 @@ export const Alternate: Store = { url: 'https://www.alternate.de/product/1672343' }, { - brand: 'asus', - model: 'tuf oc gaming', + brand: 'msi', + model: 'ventus 3x oc', series: '3080', - url: 'https://www.alternate.de/product/1672634' - }, - { - brand: 'asus', - model: 'rog strix oc gaming', - series: '3080', - url: 'https://www.alternate.de/product/1672867' - }, - { - brand: 'evga', - model: 'xc3 black gaming', - series: '3080', - url: 'https://www.alternate.de/product/1673512' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: 'https://www.alternate.de/product/1672612' - }, - { - brand: 'evga', - model: 'xc3 ultra gaming', - series: '3080', - url: 'https://www.alternate.de/product/1674164' - }, - { - brand: 'asus', - model: 'rog strix gaming', - series: '3080', - url: 'https://www.alternate.de/product/1672868' + url: 'https://www.alternate.de/product/1672345' }, { brand: 'palit', @@ -92,51 +140,9 @@ export const Alternate: Store = { }, { brand: 'zotac', - model: 'trinity oc', + model: 'amp extreme holo', series: '3080', - url: 'https://www.alternate.de/product/1677989' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.alternate.de/product/1681134' - }, - { - brand: 'evga', - model: 'xc3 gaming', - series: '3080', - url: 'https://www.alternate.de/product/1673520' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3080', - url: 'https://www.alternate.de/product/1673442' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.alternate.de/product/1673136' - }, - { - brand: 'evga', - model: 'ftw3 ultra gaming', - series: '3080', - url: 'https://www.alternate.de/product/1673524' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.alternate.de/product/1680168' - }, - { - brand: 'evga', - model: 'ftw3 gaming', - series: '3080', - url: 'https://www.alternate.de/product/1673517' + url: 'https://www.alternate.de/product/1677982' }, { brand: 'zotac', @@ -146,23 +152,136 @@ export const Alternate: Store = { }, { brand: 'zotac', - model: 'amp extreme holo', + model: 'trinity oc', series: '3080', - url: 'https://www.alternate.de/product/1677982' + url: 'https://www.alternate.de/product/1677989' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.alternate.de/product/1672612' + }, + { + brand: 'asus', + model: 'rog strix', + series: '3090', + url: 'https://www.alternate.de/product/1672870' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3090', + url: 'https://www.alternate.de/product/1672872' + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.alternate.de/product/1672259' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.alternate.de/product/1672629' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.alternate.de/product/1673530' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.alternate.de/product/1673531' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://www.alternate.de/product/1673521' + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://www.alternate.de/product/1673525' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.alternate.de/product/1673529' + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3090', + url: 'https://www.alternate.de/product/1673440' + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.alternate.de/product/1680670' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.alternate.de/product/1672744' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.alternate.de/product/1672749' }, { brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.alternate.de/product/1673137' + model: 'gaming x3', + series: '3090', + url: 'https://www.alternate.de/product/1673131' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: 'https://www.alternate.de/product/1673135' }, { brand: 'inno3d', model: 'ichill x4', - series: '3080', - url: 'https://www.alternate.de/product/1673134' + series: '3090', + url: 'https://www.alternate.de/product/1673129' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.alternate.de/product/1672341' + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.alternate.de/product/1672346' + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: 'https://www.alternate.de/product/1673434' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: 'https://www.alternate.de/product/1672611' } ], name: 'alternate' }; - diff --git a/src/store/model/amazon-de.ts b/src/store/model/amazon-de.ts index a9851e4..8b46612 100644 --- a/src/store/model/amazon-de.ts +++ b/src/store/model/amazon-de.ts @@ -1,6 +1,7 @@ import {Store} from './store'; export const AmazonDe: Store = { + backoffStatusCodes: [403, 429, 503], labels: { captcha: { container: 'body', @@ -23,64 +24,16 @@ export const AmazonDe: Store = { url: 'https://www.amazon.de/dp/B083JX52VG/' }, { - brand: 'pny', - model: 'xlr8', + brand: 'asus', + model: 'rog strix', series: '3080', - url: 'https://www.amazon.de/dp/B08HBTJMLJ' + url: 'https://www.amazon.de/dp/B08HN7VVLJ' }, { - brand: 'pny', - model: 'xlr8 rgb', + brand: 'asus', + model: 'rog strix oc', series: '3080', - url: 'https://www.amazon.de/dp/B08HBR7QBM' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.de/dp/B08HM4V2DH' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.de/dp/B08HGYXP4C' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.de/dp/B08HJ9XFNM' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.de/dp/B08HGBYWQ6' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.de/dp/B08HGLN78Q' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.de/dp/B08HH1BMQQ' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08HLZXHZY' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08HHZVZ3N' + url: 'https://www.amazon.de/dp/B08HN6KYS3' }, { brand: 'asus', @@ -95,10 +48,70 @@ export const AmazonDe: Store = { url: 'https://www.amazon.de/dp/B08HN4DSTC' }, { - brand: 'asus', - model: 'rog strix oc', + brand: 'evga', + model: 'ftw3', series: '3080', - url: 'https://www.amazon.de/dp/B08HN6KYS3' + url: 'https://www.amazon.de/dp/B08HGBYWQ6' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.de/dp/B08HGYXP4C' + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.de/dp/B08HGLN78Q' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.de/dp/B08HH1BMQQ' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.de/dp/B08HJ9XFNM' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.amazon.de/dp/B08KHLDS72' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08HHZVZ3N' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08HLZXHZY' + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08KH7RL89' + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08JD6QPXD' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.de/dp/B08HM4V2DH' }, { brand: 'msi', @@ -106,11 +119,137 @@ export const AmazonDe: Store = { series: '3080', url: 'https://www.amazon.de/dp/B08HM4M621' }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: 'https://www.amazon.de/dp/B08JCVWTQY' + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08JCKYYL8' + }, { brand: 'zotac', model: 'trinity', series: '3080', url: 'https://www.amazon.de/dp/B08HR1NPPQ' + }, + { + brand: 'asus', + model: 'rog strix', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN642LY' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN51T8Q' + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN4FLFJ' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN5B8FJ' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGFNPJQ' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.amazon.de/dp/B08J5NMDP7' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGS1SXH' + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGZ4XSZ' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGKQ527' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGTNDL4' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.amazon.de/dp/B08KH7R4FQ' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HJPDJTY' + }, + { + brand: 'gigabyte', + model: 'turbo', + series: '3090', + url: 'https://www.amazon.de/dp/B08KHKDTSJ' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HJRF2CN' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.amazon.de/dp/B08HRBW6VB' + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HM661YM' + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3090', + url: 'https://www.amazon.de/dp/B08JQQ1VD1' + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3090', + url: 'https://www.amazon.de/dp/B08HR6ZBYJ' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: 'https://www.amazon.de/dp/B08HJQ182D' } ], name: 'amazon-de' diff --git a/src/store/model/asus-de.ts b/src/store/model/asus-de.ts index c64a190..acf1662 100644 --- a/src/store/model/asus-de.ts +++ b/src/store/model/asus-de.ts @@ -14,18 +14,6 @@ export const AsusDe: Store = { series: 'test:series', url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2766/asus-rog-strix-rtx2060s-o8g-evo-v2-gaming' }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2825/asus-tuf-rtx3080-o10g-gaming' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2824/asus-tuf-rtx3080-10g-gaming' - }, { brand: 'asus', model: 'rog strix', @@ -40,15 +28,15 @@ export const AsusDe: Store = { }, { brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2823/asus-tuf-rtx3090-o24g-gaming' + model: 'tuf', + series: '3080', + url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2824/asus-tuf-rtx3080-10g-gaming' }, { brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2822/asus-tuf-rtx3090-24g-gaming' + model: 'tuf oc', + series: '3080', + url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2825/asus-tuf-rtx3080-o10g-gaming' }, { brand: 'asus', @@ -61,8 +49,19 @@ export const AsusDe: Store = { model: 'rog strix oc', series: '3090', url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2827/asus-rog-strix-rtx3090-o24g-gaming' + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2822/asus-tuf-rtx3090-24g-gaming' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2823/asus-tuf-rtx3090-o24g-gaming' } ], name: 'asus-de' }; - diff --git a/src/store/model/caseking.ts b/src/store/model/caseking.ts index f231d25..a158f70 100644 --- a/src/store/model/caseking.ts +++ b/src/store/model/caseking.ts @@ -1,10 +1,11 @@ import {Store} from './store'; export const Caseking: Store = { + backoffStatusCodes: [403, 429], labels: { inStock: { container: '.delivery_container', - text: ['lagernd'] + text: ['lagernd', 'im zulauf', 'ab'] }, outOfStock: { container: '.delivery_container', @@ -20,39 +21,99 @@ export const Caseking: Store = { }, { brand: 'asus', - model: 'tuf gaming', - series: '3080', - url: 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-10g-10240-mb-gddr6x-gcas-394.html' - }, - { - brand: 'asus', - model: 'tuf gaming oc', - series: '3080', - url: 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-o10g-10240-mb-gddr6x-gcas-396.html' - }, - { - brand: 'asus', - model: 'strix gaming', + model: 'rog strix', series: '3080', url: 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-10g-10240-mb-gddr6x-gcas-400.html' }, { brand: 'asus', - model: 'strix gaming oc', + model: 'rog strix oc', series: '3080', url: 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-o10g-10240-mb-gddr6x-gcas-399.html' }, { - brand: 'zotac', - model: 'trinity', + brand: 'asus', + model: 'tuf', series: '3080', - url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-10240-mb-gddr6x-gczt-163.html' + url: 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-10g-10240-mb-gddr6x-gcas-394.html' }, { - brand: 'zotac', - model: 'trinity oc', + brand: 'asus', + model: 'tuf oc', series: '3080', - url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-oc-10240-mb-gddr6x-gczt-167.html' + url: 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-o10g-10240-mb-gddr6x-gcas-396.html' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-gaming-10240-mb-gddr6x-gcev-416.html' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-ultra-gaming-10240-mb-gddr6x-gcev-417.html' + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-gaming-10240-mb-gddr6x-gcev-415.html' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-black-gaming-10240-mb-gddr6x-gcev-414.html' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-ultra-gaming-10240-mb-gddr6x-gcev-423.html' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-master-10g-10240-mb-gddr6x-gcgb-331.html' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-oc-10g-10240-mb-gddr6x-gcgb-326.html' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-gaming-oc-10g-10240-mb-gddr6x-gcgb-327.html' + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-vision-oc-10g-10240-mb-gddr6x-gcgb-332.html' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x3-10240-mb-gddr6x-gci3-170.html' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x4-10240-mb-gddr6x-gci3-169.html' + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-twin-x2-oc-10240-mb-gddr6x-gci3-171.html' }, { brand: 'msi', @@ -67,28 +128,16 @@ export const Caseking: Store = { url: 'https://www.caseking.de/msi-geforce-rtx-3080-ventus-3x-10g-oc-10240-mb-gddr6x-gcmc-247.html' }, { - brand: 'inno3d', - model: 'ichill 4x', + brand: 'pny', + model: 'xlr8 rgb', series: '3080', - url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x4-10240-mb-gddr6x-gci3-169.html' + url: 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10240-mb-gddr6x-gcpn-075.html' }, { - brand: 'inno3d', - model: 'ichill 3x', + brand: 'pny', + model: 'xlr8 rgb', series: '3080', - url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x3-10240-mb-gddr6x-gci3-170.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-gaming-oc-10g-10240-mb-gddr6x-gcgb-327.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-oc-10g-10240-mb-gddr6x-gcgb-326.html' + url: 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-10240-mb-gddr6x-gcpn-076.html' }, { brand: 'zotac', @@ -97,52 +146,76 @@ export const Caseking: Store = { url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-amp-holo-10240-mb-gddr6x-gczt-166.html' }, { - brand: 'inno3d', - model: 'twin 2x oc', + brand: 'zotac', + model: 'trinity oc', series: '3080', - url: 'https://www.caseking.de/inno3d-geforce-rtx-3080-twin-x2-oc-10240-mb-gddr6x-gci3-171.html' + url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-oc-10240-mb-gddr6x-gczt-167.html' }, { - brand: 'gigabyte', - model: 'vision oc', + brand: 'zotac', + model: 'trinity', series: '3080', - url: 'https://www.caseking.de/gigabyte-geforce-rtx-3080-vision-oc-10g-10240-mb-gddr6x-gcgb-332.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-master-10g-10240-mb-gddr6x-gcgb-331.html' + url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-10240-mb-gddr6x-gczt-163.html' }, { brand: 'asus', - model: 'tuf gaming', - series: '3090', - url: 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-24g-24576-mb-gddr6x-gcas-393.html' - }, - { - brand: 'asus', - model: 'tuf gaming oc', - series: '3090', - url: 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-o24g-24576-mb-gddr6x-gcas-395.html' - }, - { - brand: 'asus', - model: 'strix gaming', + model: 'rog strix', series: '3090', url: 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-24g-24576-mb-gddr6x-gcas-397.html' }, { brand: 'asus', - model: 'strix gaming oc', + model: 'rog strix oc', series: '3090', url: 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-o24g-24576-mb-gddr6x-gcas-398.html' }, { - brand: 'msi', - model: 'gaming x trio', + brand: 'asus', + model: 'tuf', 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/asus-geforce-rtx-3090-tuf-gaming-24g-24576-mb-gddr6x-gcas-393.html' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-o24g-24576-mb-gddr6x-gcas-395.html' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-gaming-24576-mb-gddr6x-gcev-421.html' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-ultra-gaming-24576-mb-gddr6x-gcev-422.html' + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-gaming-24576-mb-gddr6x-gcev-419.html' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-black-gaming-24576-mb-gddr6x-gcev-418.html' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-ultra-gaming-24576-mb-gddr6x-gcev-420.html' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.caseking.de/gigabyte-geforce-rtx-3090-eagle-oc-24g-24576-mb-gddr6x-gcgb-329.html' }, { brand: 'gigabyte', @@ -151,10 +224,46 @@ export const Caseking: Store = { url: 'https://www.caseking.de/gigabyte-geforce-rtx-3090-gaming-oc-24g-24576-mb-gddr6x-gcgb-328.html' }, { - brand: 'gigabyte', - model: 'eagle oc', + brand: 'inno3d', + model: 'gaming x3', 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/inno3d-geforce-rtx-3090-gaming-x3-24576-mb-gddr6x-gci3-172.html' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x3-24576-mb-gddr6x-gci3-168.html' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x4-24576-mb-gddr6x-gci3-167.html' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.caseking.de/msi-geforce-rtx-3090-gaming-x-trio-24g-24576-mb-gddr6x-gcmc-244.html' + }, + { + brand: 'pny', + model: 'xlr8 rgb', + series: '3090', + url: 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-epic-x-rgb-24576-mb-gddr6x-gcpn-073.html' + }, + { + brand: 'pny', + model: 'xlr8 rgb', + series: '3090', + url: 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-revel-epic-x-rgb-24576-mb-gddr6x-gcpn-074.html' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: 'https://www.caseking.de/zotac-gaming-geforce-rtx-3090-trinity-24576-mb-gddr6x-gczt-162.html' } ], name: 'caseking' diff --git a/src/store/model/computeruniverse.ts b/src/store/model/computeruniverse.ts new file mode 100644 index 0000000..8a9ad9c --- /dev/null +++ b/src/store/model/computeruniverse.ts @@ -0,0 +1,331 @@ +import {Store} from './store'; + +export const Computeruniverse: Store = { + labels: { + inStock: { + container: '.availability', + text: ['bestellartikel', 'auf lager und sofort lieferbar', 'kurzfristig verfügbar'] + } + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.computeruniverse.net/de/gainward-geforce-gtx-1660-super-ghost-6-gb-high-end-grafikkarte' + }, + { + brand: 'asus', + model: 'rog strix', + series: '3080', + url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-oc-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-tuf-rtx3080-10g-gaming-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-oc-tuf-rtx3080-o10g-gaming-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ftw3-10-gb-high-end-grafikkarte' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ultra-ftw3-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-black-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-ultra-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3080', + url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-gs-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3080-master-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-eagle-oc-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-gaming-oc-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-vision-oc-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x3-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x4-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-twin-x2-oc-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'kfa2', + model: 'sg oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/kfa-geforce-rtx3080-sg-oc-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-gaming-x-trio-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-ventus-3x-oc-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-oc-10-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'pny', + model: 'xlr8 rgb', + series: '3080', + url: 'https://www.computeruniverse.net/de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-p-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'pny', + model: 'xlr8 rgb', + series: '3080', + url: 'https://www.computeruniverse.net/de/pny-geforce-rtx3080-xlr8-gaming-epic-x-rgb-m-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-holo-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'zotac', + model: 'amp extreme holo', + series: '3080', + url: 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-extreme-holo-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-oc-10-gb-enthusiast-grafikkarte' + }, + { + brand: 'asus', + model: 'rog strix', + series: '3090', + url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-oc-24-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-tuf-rtx3090-24g-gaming-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-oc-tuf-rtx3090-o24g-gaming-24-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-gaming-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-ultra-gaming-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-gaming-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-black-gaming-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-ultra-gaming-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3090', + url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'gainward', + model: 'phoenix gs oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-gs-24-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-eagle-oc-24-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-gaming-oc-24-gb-oc' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x3-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x4-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'kfa2', + model: 'sg oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/kfa-geforce-rtx3090-sg-oc-24-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-gaming-x-trio-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-ventus-3x-oc-24-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3090', + url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-oc-24-gb-oc-enthusiast-grafikkarte' + }, + { + brand: 'pny', + model: 'xlr8 rgb', + series: '3090', + url: 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-m-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'pny', + model: 'xlr8 rgb', + series: '3090', + url: 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-p-24-gb-enthusiast-grafikkarte' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3090-trinity-24-gb-enthusiast-grafikkarte' + } + ], + name: 'computeruniverse' +}; diff --git a/src/store/model/cyberport.ts b/src/store/model/cyberport.ts new file mode 100644 index 0000000..0b3a424 --- /dev/null +++ b/src/store/model/cyberport.ts @@ -0,0 +1,89 @@ +import {Store} from './store'; + +export const Cyberport: Store = { + labels: { + inStock: { + container: '.tooltipAvailabilityParent', + text: ['sofort verfügbar'] + }, + outOfStock: { + container: '.tooltipAvailabilityParent', + text: ['noch nicht verfügbar'] + } + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.cyberport.de?DEEP=2E12-3KL' + }, + { + brand: 'asus', + model: 'rog strix', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51S' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51T' + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51L' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51N' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E21-537' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E21-52Y' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E21-52Z' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E12-3L6' + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E12-3L7c' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E13-1H4' + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E13-1H7' + } + ], + name: 'cyberport' +}; diff --git a/src/store/model/evga-eu.ts b/src/store/model/evga-eu.ts index ae2e89b..b22a949 100644 --- a/src/store/model/evga-eu.ts +++ b/src/store/model/evga-eu.ts @@ -8,29 +8,65 @@ export const EvgaEu: Store = { } }, links: [ - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3881-KR' - }, { brand: 'evga', model: 'ftw3', series: '3080', url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3895-KR' }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3897-KR' + }, { brand: 'evga', model: 'xc3', series: '3080', url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3883-KR' }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3881-KR' + }, { brand: 'evga', model: 'xc3 ultra', series: '3080', url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3885-KR' + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3985-KR' + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3987-KR' + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3973-KR' + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3971-KR' + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3975-KR' } ], name: 'evga-eu' diff --git a/src/store/model/index.ts b/src/store/model/index.ts index 1e821f6..70b66f3 100644 --- a/src/store/model/index.ts +++ b/src/store/model/index.ts @@ -17,14 +17,17 @@ import {BestBuyCa} from './bestbuy-ca'; import {Box} from './box'; import {Caseking} from './caseking'; import {Ccl} from './ccl'; +import {Computeruniverse} from './computeruniverse'; import {Coolblue} from './coolblue'; import {Currys} from './currys'; +import {Cyberport} from './cyberport'; import {Ebuyer} from './ebuyer'; import {Evga} from './evga'; import {EvgaEu} from './evga-eu'; import {Gamestop} from './gamestop'; import {Mediamarkt} from './mediamarkt'; import {MicroCenter} from './microcenter'; +import {Mindfactory} from './mindfactory'; import {Newegg} from './newegg'; import {NeweggCa} from './newegg-ca'; import {Notebooksbilliger} from './notebooksbilliger'; @@ -37,6 +40,7 @@ import {PCComponentes} from './pccomponentes'; import {Pny} from './pny'; import {ProshopDE} from './proshop-de'; import {ProshopDK} from './proshop-dk'; +import {Saturn} from './saturn'; import {Scan} from './scan'; import {Store} from './store'; import {Very} from './very'; @@ -64,14 +68,17 @@ const masterList = new Map([ [Box.name, Box], [Caseking.name, Caseking], [Ccl.name, Ccl], + [Computeruniverse.name, Computeruniverse], [Coolblue.name, Coolblue], [Currys.name, Currys], + [Cyberport.name, Cyberport], [Ebuyer.name, Ebuyer], [Evga.name, Evga], [EvgaEu.name, EvgaEu], [Gamestop.name, Gamestop], [Mediamarkt.name, Mediamarkt], [MicroCenter.name, MicroCenter], + [Mindfactory.name, Mindfactory], [Newegg.name, Newegg], [NeweggCa.name, NeweggCa], [Notebooksbilliger.name, Notebooksbilliger], @@ -81,9 +88,10 @@ const masterList = new Map([ [OfficeDepot.name, OfficeDepot], [Overclockers.name, Overclockers], [PCComponentes.name, PCComponentes], + [Pny.name, Pny], [ProshopDE.name, ProshopDE], [ProshopDK.name, ProshopDK], - [Pny.name, Pny], + [Saturn.name, Saturn], [Scan.name, Scan], [Very.name, Very], [Zotac.name, Zotac] diff --git a/src/store/model/mediamarkt.ts b/src/store/model/mediamarkt.ts index b0e757a..252592c 100644 --- a/src/store/model/mediamarkt.ts +++ b/src/store/model/mediamarkt.ts @@ -2,10 +2,6 @@ import {Store} from './store'; export const Mediamarkt: Store = { labels: { - inStock: { - container: '#root', - text: ['lieferung'] - }, outOfStock: { container: '#root', text: ['dieser artikel ist aktuell nicht verfügbar.'] @@ -16,37 +12,55 @@ export const Mediamarkt: Store = { brand: 'test:brand', model: 'test:model', series: 'test:series', - url: 'https://www.mediamarkt.de/de/product/-2621744.html' + url: 'https://www.mediamarkt.de/de/product/-2592355.html' }, { brand: 'asus', - model: 'tuf gaming', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2681859.html' - }, - { - brand: 'asus', - model: 'tuf gaming oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2681861.html' - }, - { - brand: 'asus', - model: 'strix gaming', + model: 'rog strix', series: '3080', url: 'https://www.mediamarkt.de/de/product/-2681869.html' }, { brand: 'asus', - model: 'strix gaming oc', + model: 'rog strix oc', series: '3080', url: 'https://www.mediamarkt.de/de/product/-2681871.html' }, { - brand: 'zotac', - model: 'trinity', + brand: 'asus', + model: 'tuf', series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683243.html' + url: 'https://www.mediamarkt.de/de/product/-2681859.html' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2681861.html' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2683942.html' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2683937.html' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2684241.html' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2684238.html' }, { brand: 'msi', @@ -60,89 +74,35 @@ export const Mediamarkt: Store = { series: '3080', url: 'https://www.mediamarkt.de/de/product/-2683229.html' }, - { - brand: 'inno3d', - model: 'ichill 4x', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2684238.html' - }, - { - brand: 'inno3d', - model: 'ichill 3x', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2684241.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683937.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683942.html' - }, { brand: 'zotac', - model: 'amp extreme holo', + model: 'trinity', series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2689452.html' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2689452.html' - }, - { - brand: 'inno3d', - model: 'twin 2x oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2689452.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2689452.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2689452.html' + url: 'https://www.mediamarkt.de/de/product/-2683243.html' }, { brand: 'asus', - model: 'tuf gaming', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2681855.html' - }, - { - brand: 'asus', - model: 'tuf gaming oc', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2681857.html' - }, - { - brand: 'asus', - model: 'strix gaming', + model: 'rog strix', series: '3090', url: 'https://www.mediamarkt.de/de/product/-2681863.html' }, { brand: 'asus', - model: 'strix gaming oc', + model: 'rog strix oc', series: '3090', url: 'https://www.mediamarkt.de/de/product/-2681866.html' }, { - brand: 'msi', - model: 'gaming x trio', + brand: 'asus', + model: 'tuf', series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2683226.html' + url: 'https://www.mediamarkt.de/de/product/-2681855.html' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2681857.html' }, { brand: 'gigabyte', @@ -155,8 +115,19 @@ export const Mediamarkt: Store = { model: 'aorus xtreme', series: '3090', url: 'https://www.mediamarkt.de/de/product/-2691440.html' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2684235.html' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2683226.html' } ], name: 'mediamarkt' }; - diff --git a/src/store/model/mindfactory.ts b/src/store/model/mindfactory.ts new file mode 100644 index 0000000..332e90a --- /dev/null +++ b/src/store/model/mindfactory.ts @@ -0,0 +1,71 @@ +import {Store} from './store'; + +export const Mindfactory: Store = { + labels: { + inStock: { + container: '.pshipping', + text: ['lagernd', 'verfügbar'] + }, + outOfStock: { + container: '.pshipping', + text: ['ohne liefertermin'] + } + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.mindfactory.de/product_info.php/8GB-MSI-GeForce-RTX2070Super-GAMING-X-DDR6--Retail-_1329683.html' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-GeForce-RTX-3080-Gaming-OC-3xDP-2x-HDMI--Retail-_1376263.html' + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-VISION-OC-GDDR6X-2xHDMI-3xDP--Retail-_1378682.html' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.mindfactory.de/product_info.php/10GB-MSI-GeForce-RTX-3080-Gaming-X-TRIO--Retail-_1376481.html' + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: 'https://www.mindfactory.de/product_info.php/10GB-Palit-GeForce-RTX-3080-GamingPro--Retail-_1376483.html' + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: 'https://www.mindfactory.de/product_info.php/10GB-Zotac-GeForce-RTX-3080-TRINITY-OC--GDDR6X-_1377143.html' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.mindfactory.de/product_info.php/24GB-Gigabyte-GeForce-3090-Gaming-OC--Retail-_1377265.html' + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: 'https://www.mindfactory.de/product_info.php/24GB-MSI-GeForce-RTX-3090-VENTUS-3X-DDR6--Retail-_1377475.html' + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3090', + url: 'https://www.mindfactory.de/product_info.php/24GB-Palit-GeForce-RTX-3090-GamingPro-DDR6--Retail-_1377233.html' + } + ], + name: 'mindfactory' +}; diff --git a/src/store/model/notebooksbilliger.ts b/src/store/model/notebooksbilliger.ts index 37951cf..d2ae1e1 100644 --- a/src/store/model/notebooksbilliger.ts +++ b/src/store/model/notebooksbilliger.ts @@ -4,15 +4,51 @@ export const Notebooksbilliger: Store = { labels: { inStock: { container: '.warehouse', - text: ['sofort ab lager'] - } + text: ['sofort ab lager', 'verfügbarkeit: ca. 2-4 werktage', 'verfügbarkeit: ca. 5-10 werktage'] + }, + outOfStock: [{ + container: '.warehouse', + text: ['liefertermin noch unbestimmt'] + }, + { + container: '.soldOut', + text: ['dieses produkt ist leider ausverkauft.'] + }, + { + container: '#product_error_text', + text: ['leider ist dieser artikel nicht mehr verfügbar.'] + }] }, links: [ { brand: 'test:brand', model: 'test:model', series: 'test:series', - url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+2060+6gb+twin+x2+420215' + url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+2070+super+phoenix+v1+grafikkarte+656238' + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3080+phoenix+gs+10gb+gddr6x+grafikkarte+677618' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+eagle+oc+10gb+gddr6x+grafikkarte+677501' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+gaming+oc+10gb+gddr6x+grafikkarte+677499' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+ichill+x3+grafikkarte+678588' }, { brand: 'inno3d', @@ -20,24 +56,18 @@ export const Notebooksbilliger: Store = { series: '3080', url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+twin+x2+oc+grafikkarte+679190' }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.notebooksbilliger.de/msi+geforce+rtx+3080+gaming+x+trio+10g+grafikkarte+678527' + }, { brand: 'palit', model: 'gaming pro', series: '3080', url: 'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+10gb+gddr6x+grafikkarte+677609' }, - { - brand: 'pny', - model: 'xlr8 gaming revel expic-x', - series: '3080', - url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+10gb+xlr8+gaming+revel+epic+x+grafikkarte+677412' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+eagle+oc+10gb+gddr6x+grafikkarte+677501' - }, { brand: 'palit', model: 'gaming pro oc', @@ -46,47 +76,46 @@ export const Notebooksbilliger: Store = { }, { brand: 'pny', - model: 'xlr8 gaming', + model: 'xlr8 rgb', series: '3080', url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+xlr8+gaming+10gb+gddr6x+grafikkarte+677407' }, { - brand: 'gainward', - model: 'phoenix gs', + brand: 'pny', + model: 'xlr8 rgb', series: '3080', - url: 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3080+phoenix+gs+10gb+gddr6x+grafikkarte+677618' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.notebooksbilliger.de/msi+geforce+rtx+3080+ventus+3x+10g+oc+grafikkarte+678549' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+ichill+x3+grafikkarte+678588' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.notebooksbilliger.de/msi+geforce+rtx+3080+gaming+x+trio+10g+grafikkarte+678527' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+gaming+oc+10gb+gddr6x+grafikkarte+677499' + url: 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+10gb+xlr8+gaming+revel+epic+x+grafikkarte+677412' }, { brand: 'asus', model: 'rog strix', - series: '3080', - url: 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3080+10gb+gddr6x+grafikkarte+677363' + series: '3090', + url: 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+24gb+gddr6x+grafikkarte+677343' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3090', + url: 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+oc+24gb+gddr6x+grafikkarte+677308' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3090+master+24gb+gddr6x+grafikkarte+683868' + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: 'https://www.notebooksbilliger.de/palit+geforce+rtx+3090+gamingpro+oc+24gb+gddr6x+grafikkarte+677599' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3090+trinity+24gb+gddr6x+grafikkarte+677550' } ], name: 'notebooksbilliger' }; - diff --git a/src/store/model/proshop-de.ts b/src/store/model/proshop-de.ts index b8f9f00..637f541 100644 --- a/src/store/model/proshop-de.ts +++ b/src/store/model/proshop-de.ts @@ -2,13 +2,9 @@ import {Store} from './store'; export const ProshopDE: Store = { labels: { - inStock: { - container: '.site-currency-attention', - text: ['€'] - }, outOfStock: { container: '.site-currency-attention', - text: ['Die Ware ist leider nicht mehr verfügbar.'] + text: ['die ware ist leider nicht mehr verfügbar.'] } }, links: [ @@ -16,133 +12,133 @@ export const ProshopDE: Store = { brand: 'test:brand', model: 'test:model', series: 'test:series', - url: 'https://www.proshop.de/Grafikkarte/GIGABYTE-GeForce-RTX-2070-SUPER-GAMING-OC-White-8GB-GDDR6-Grafikkarte/2797959' + url: 'https://www.proshop.de/2797958' }, { brand: 'asus', - model: 'tuf gaming', + model: 'rog strix', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3080-TUF-10GB-GDDR6X-RAM-Grafikkarte/2876763' + url: 'https://www.proshop.de/2876857' }, { brand: 'asus', - model: 'tuf gaming oc', + model: ' rog strix oc', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3080-TUF-OC-10GB-GDDR6X-RAM-Grafikkarte/2876861' + url: 'https://www.proshop.de/2876859' }, { brand: 'asus', - model: 'strix gaming', + model: 'tuf', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3080-ROG-STRIX-10GB-GDDR6X-RAM-Grafikkarte/2876857' + url: 'https://www.proshop.de/2876763' }, { brand: 'asus', - model: 'strix gaming oc', + model: 'tuf oc', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3080-ROG-STRIX-OC-10GB-GDDR6X-RAM-Grafikkarte/2876859' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.proshop.de/Grafikkarte/MSI-GeForce-RTX-3080-GAMING-X-TRIO-10GB-GDDR6X-RAM-Grafikkarte/2876877' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3080', - url: 'https://www.proshop.de/Grafikkarte/MSI-GeForce-RTX-3080-Ventus-3X-10GB-GDDR6X-RAM-Grafikkarte/2876878' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.proshop.de/Grafikkarte/MSI-GeForce-RTX-3080-Ventus-3X-OC-10GB-GDDR6X-RAM-Grafikkarte/2876879' - }, - { - brand: 'inno3d', - model: 'ichill 4x', - series: '3080', - url: 'https://www.proshop.de/Grafikkarte/Inno3D-GeForce-RTX-3080-iCHILL-X4-10GB-GDDR6X-SDRAM-Grafikkarte/2878971' - }, - { - brand: 'inno3d', - model: 'ichill 3x', - series: '3080', - url: 'https://www.proshop.de/Grafikkarte/Inno3D-GeForce-RTX-3080-iCHILL-X3-10GB-GDDR6X-SDRAM-Grafikkarte/2878969' + url: 'https://www.proshop.de/2876861' }, { brand: 'gigabyte', - model: 'gaming oc', + model: 'aorus master', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/GIGABYTE-GeForce-RTX-3080-GAMING-OC-10GB-GDDR6X-RAM-Grafikkarte/2876838' + url: 'https://www.proshop.de/2876835' }, { brand: 'gigabyte', model: 'eagle oc', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/GIGABYTE-GeForce-RTX-3080-Eagle-OC-10GB-GDDR6X-RAM-Grafikkarte/2876837' + url: 'https://www.proshop.de/2876837' }, { - brand: 'inno3d', - model: 'twin 2x oc', + brand: 'gigabyte', + model: 'gaming oc', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/Inno3D-GeForce-RTX-3080-Twin-X2-OC-10GB-GDDR6X-SDRAM-Grafikkarte/2878968' + url: 'https://www.proshop.de/2876838' }, { brand: 'gigabyte', model: 'vision oc', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/GIGABYTE-GeForce-RTX-3080-Vision-OC-10GB-GDDR6X-RAM-Grafikkarte/2878401' + url: 'https://www.proshop.de/2878401' }, { - brand: 'gigabyte', - model: 'aorus master', + brand: 'inno3d', + model: 'ichill x3', series: '3080', - url: 'https://www.proshop.de/Grafikkarte/GIGABYTE-GeForce-RTX-3080-AORUS-Master-10GB-GDDR6X-RAM-Grafikkarte/2876835' + url: 'https://www.proshop.de/2878969' }, { - brand: 'asus', - model: 'tuf gaming', - series: '3090', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3090-TUF-24GB-GDDR6X-RAM-Grafikkarte/2876764' + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.proshop.de/2878971' }, { - brand: 'asus', - model: 'tuf gaming oc', - series: '3090', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3090-TUF-OC-24GB-GDDR6X-RAM-Grafikkarte/2876869' - }, - { - brand: 'asus', - model: 'strix gaming', - series: '3090', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3090-ROG-STRIX-24GB-GDDR6X-RAM-Grafikkarte/2876865' - }, - { - brand: 'asus', - model: 'strix gaming oc', - series: '3090', - url: 'https://www.proshop.de/Grafikkarte/ASUS-GeForce-RTX-3090-ROG-STRIX-OC-24GB-GDDR6X-RAM-Grafikkarte/2876867' + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.proshop.de/2878968' }, { brand: 'msi', model: 'gaming x trio', + series: '3080', + url: 'https://www.proshop.de/2876877' + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3080', + url: 'https://www.proshop.de/2876878' + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.proshop.de/2876879' + }, + { + brand: 'asus', + model: 'rog strix', series: '3090', - url: 'https://www.proshop.de/Grafikkarte/MSI-GeForce-RTX-3090-GAMING-X-TRIO-24GB-GDDR6X-RAM-Grafikkarte/2876881' + url: 'https://www.proshop.de/2876865' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3090', + url: 'https://www.proshop.de/2876867' + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.proshop.de/2876764' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.proshop.de/2876869' }, { brand: 'gigabyte', model: 'aorus master', series: '3090', - url: 'https://www.proshop.de/Grafikkarte/GIGABYTE-GeForce-RTX-3090-AORUS-Master-24GB-GDDR6X-RAM-Grafikkarte/2876840' + url: 'https://www.proshop.de/2876840' }, { brand: 'gigabyte', model: 'aorus xtreme', series: '3090', - url: 'https://www.proshop.de/Grafikkarte/GIGABYTE-GeForce-RTX-3090-AORUS-Xtreme-24GB-GDDR6X-RAM-Grafikkarte/2876839' + url: 'https://www.proshop.de/2876839' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.proshop.de/2876881' } ], name: 'proshop-de' diff --git a/src/store/model/saturn.ts b/src/store/model/saturn.ts new file mode 100644 index 0000000..ff81da6 --- /dev/null +++ b/src/store/model/saturn.ts @@ -0,0 +1,133 @@ +import {Store} from './store'; + +export const Saturn: Store = { + labels: { + outOfStock: { + container: '#root', + text: ['dieser artikel ist aktuell nicht verfügbar.'] + } + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.saturn.de/de/product/-2592355.html' + }, + { + brand: 'asus', + model: 'rog strix', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681869.html' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681871.html' + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681859.html' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681861.html' + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683942.html' + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683937.html' + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.saturn.de/de/product/-2684241.html' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.saturn.de/de/product/-2684238.html' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683227.html' + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683229.html' + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683243.html' + }, + { + brand: 'asus', + model: 'rog strix', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681863.html' + }, + { + brand: 'asus', + model: 'rog strix oc', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681866.html' + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681855.html' + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681857.html' + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.saturn.de/de/product/-2691441.html' + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.saturn.de/de/product/-2691440.html' + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.saturn.de/de/product/-2684235.html' + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.saturn.de/de/product/-2683226.html' + } + ], + name: 'saturn' +}; diff --git a/src/store/model/store.ts b/src/store/model/store.ts index 415af70..31e72f0 100644 --- a/src/store/model/store.ts +++ b/src/store/model/store.ts @@ -13,7 +13,7 @@ export type Pricing = { export type Series = 'test:series' | '3070' | '3080' | '3090'; export type Link = { - brand: 'test:brand' | 'asus' | 'evga' | 'gainward' | 'gigabyte' | 'inno3d' | 'kfa2' | 'palit' | 'pny' | 'msi' | 'nvidia' | 'zotac'; + brand: 'test:brand' | 'asus' | 'evga' | 'gainward' | 'gigabyte' | 'inno3d' | 'kfa2' | 'msi' | 'nvidia' | 'palit' | 'pny' | 'zotac'; series: Series; model: string; url: string;