Compare commits

...

97 Commits

Author SHA1 Message Date
Jef LeCompte afe7a70900 chore(nodejs): bump version (#2088) 2021-03-04 13:16:49 -05:00
Jef LeCompte f65aab87da docs: update node references 2021-03-02 14:58:33 -05:00
Jef LeCompte c2a22716cc ci: fix docker release 2021-03-02 12:56:43 -05:00
github-actions[bot] 89e3709440 chore: release 3.5.0 (#1745) 2021-03-02 12:52:24 -05:00
MrToshio a7be09d56e feat(store): add ldlc (FR) (#2037)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2021-03-02 12:50:01 -05:00
Jef LeCompte e3d09803ad fix: remove package-lock.json
This fixes strange bug with downloading Chromium
on node 15.
2021-03-02 12:33:09 -05:00
Jef LeCompte 40c4a8c1b9 ci: bump node-version 2021-03-02 12:14:38 -05:00
Jef LeCompte eee669b1b3 feat: use node 15, use package version (#2066) 2021-03-02 12:02:35 -05:00
Jef LeCompte 9e8c83622d ci: fix pr lint trigger 2021-03-02 11:59:01 -05:00
Jef LeCompte f583029bf3 refactor: make link labels > store labels 2021-03-02 11:53:53 -05:00
Jef LeCompte 8ee6815c0f fix(amazon-uk): add label for ps5
Fixes #2036
2021-03-02 11:52:23 -05:00
SalamUchiha 6934d5b31c chore(newegg): add 3060 links (#2039) 2021-03-02 11:11:01 -05:00
Patrick Huy cfe292eb3e chore(store): add 3060 for mediamarkt, saturn and notebooksbilliger (#2041) 2021-02-27 16:34:20 -05:00
Afonso Jorge Ramos a3c726b45c feat(store): add novoatalho (PT) (#2043) 2021-02-27 16:33:39 -05:00
Afonso Jorge Ramos 11e14655e1 chore(globaldata): add 3060, 3060ti, amd (#2044) 2021-02-27 16:32:50 -05:00
Jef LeCompte b3a88f6608 chore: bump dependencies 2021-02-26 10:50:24 -05:00
Jef LeCompte 659edcd421 ci: rerun pr lint if synced 2021-02-26 10:47:57 -05:00
Joel Calado 5effbae882 feat(store): add globaldata (#2004) 2021-02-26 10:46:40 -05:00
JW6677 4d1e1ba3e7 chore(store): add 3060 products (#2029) 2021-02-26 10:02:55 -05:00
Guillaume Malette 69e005905a docs: add information around 3060 (#2031) 2021-02-26 10:01:24 -05:00
Michael Pietersen cb7d215c3a chore: best buy & microcenter 3060 product links (#2033) 2021-02-26 10:00:10 -05:00
Guillaume Malette 1288f9271a chore(canadacomputers): add 3060 card (#2028) 2021-02-25 15:13:00 -05:00
Jef LeCompte e527e43e85 ci: update pr lint 2021-02-25 15:10:54 -05:00
Jef LeCompte 7cf60f84e1 ci: update pr lint secret 2021-02-25 15:06:48 -05:00
Jef LeCompte fbb024a9ce docs: add terraform reference
Ref: 488bc544c9
2021-02-23 12:33:37 -05:00
Joel Calado d422c7d0d3 chore(pcdiga): add 3090, 3070, 3060ti (#2003) 2021-02-23 12:26:06 -05:00
Jef LeCompte 488bc544c9 docs: add terraform to mkdocs
Ref: #1987
2021-02-23 12:14:41 -05:00
dan sweeting d341ef72aa feat: add terraform infra as code for AWS fargate (#1987) 2021-02-23 12:10:33 -05:00
dependabot[bot] 347f49b2d4 chore(deps-dev): bump webpack from 5.23.0 to 5.24.0 (#2009)
Bumps [webpack](https://github.com/webpack/webpack) from 5.23.0 to 5.24.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.23.0...v5.24.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-23 12:02:39 -05:00
Jef LeCompte 1c113efc42 ci: change pr linter 2021-02-23 11:44:49 -05:00
Jef LeCompte 03539ca666 chore: remove old problem matcher 2021-02-23 10:05:43 -05:00
Jef LeCompte 42808b836c docs: update badge 2021-02-23 10:03:06 -05:00
Jef LeCompte e8ee59fae1 ci: run ci on main 2021-02-23 10:00:44 -05:00
dependabot[bot] 4324706f32 chore(deps): bump amannn/action-semantic-pull-request from v3.3.0 to v3.4.0 (#1965)
Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from v3.3.0 to v3.4.0.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v3.3.0...db6e259b93f286e3416eef27aaae88935d16cf2e)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 00:42:16 -05:00
dependabot[bot] b6030b3cc3 chore(deps-dev): bump webpack from 5.22.0 to 5.23.0 (#1993)
Bumps [webpack](https://github.com/webpack/webpack) from 5.22.0 to 5.23.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.22.0...v5.23.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 00:42:10 -05:00
dependabot[bot] 557ff511e3 chore(deps): bump node from 14.15.4-alpine3.12 to 15.9.0-alpine3.12 (#1992)
Bumps node from 14.15.4-alpine3.12 to 15.9.0-alpine3.12.

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 00:41:59 -05:00
dependabot[bot] 9e3922e0d1 chore(deps-dev): bump @types/node from 14.14.28 to 14.14.31 (#2005)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.28 to 14.14.31.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 00:41:51 -05:00
Jef LeCompte 2c3c47b4a9 ci: pin version to major 2021-02-22 00:38:57 -05:00
Jef LeCompte 9d5af9f8f9 docs: fix badge link 2021-02-22 00:18:42 -05:00
Jef LeCompte 07306891d7 docs: update badges 2021-02-22 00:17:41 -05:00
Jef LeCompte 5f81a8a25f ci: fix nightly release 2021-02-21 23:45:10 -05:00
david e6803d4d7c feat(store): add netonnet-no (#1989) 2021-02-20 19:26:18 -05:00
Joel Calado 2501f6b5cc feat(store): add PCDiga.com (#1990) 2021-02-20 19:23:04 -05:00
david 5a5927ba1e feat(store): add Norwegian stores (#1985)
Adds elkjop.no, komplett.no, dustinhome.no, power.no and proshop.no
2021-02-18 09:53:57 -05:00
Jef LeCompte 8d5792bf9e chore: update dependencies
Removed puppeteer types and puppeteer-extra
2021-02-18 09:52:26 -05:00
Nick Baldallo b1ece9edad chore(pccomponentes): add 3090, 3060ti, rx6900xt (#1962) 2021-02-18 09:14:29 -05:00
dependabot[bot] 2cd2991cca chore(deps): bump amannn/action-semantic-pull-request from v3.2.6 to v3.3.0 (#1933)
Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from v3.2.6 to v3.3.0.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v3.2.6...3301e0e038fd3af9f257f815119b6bdf371bf2c3)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-12 12:35:20 -05:00
Jef LeCompte c1c9bc49a2 chore: bump dependencies 2021-02-10 15:49:53 -05:00
dependabot[bot] 4acf6e616f chore(deps): bump google-github-actions/release-please-action from v2.16 to v2.17 (#1916)
Bumps [google-github-actions/release-please-action](https://github.com/google-github-actions/release-please-action) from v2.16 to v2.17.
- [Release notes](https://github.com/google-github-actions/release-please-action/releases)
- [Changelog](https://github.com/google-github-actions/release-please-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google-github-actions/release-please-action/compare/v2.16...b7fac390e7d06ee9053c67ce6781c006c8ca3f47)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-10 15:32:02 -05:00
dependabot[bot] af90b1a0a3 chore(deps): bump actions/cache from v2 to v2.1.4 (#1906)
Bumps [actions/cache](https://github.com/actions/cache) from v2 to v2.1.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v2...26968a09c0ea4f3e233fdddbafd1166051a095f6)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-10 15:30:48 -05:00
TomZanna edb39f8f05 feat(notification): add Streamlabs support (#1872) 2021-02-09 08:31:21 -05:00
Ben Curtis 1009ce6636 feat: add restart time for leaking Chromium in Ubuntu (#1880)
docs: add documentation for RESTART_TIME
2021-02-07 16:05:53 -05:00
Jef LeCompte 2548ca4a74 chore: bump dependencies 2021-02-07 16:02:35 -05:00
Peter J. Milanese c22c960dc1 feat(notification): add simple SmartThings switch activation (#1902)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2021-02-07 15:32:18 -05:00
dependabot[bot] b20bd4a496 chore(deps-dev): bump @types/node from 14.14.22 to 14.14.24 (#1877)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.22 to 14.14.24.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-04 19:50:45 -05:00
dependabot[bot] d02b40b5b8 chore(deps-dev): bump webpack from 5.19.0 to 5.20.1 (#1869)
Bumps [webpack](https://github.com/webpack/webpack) from 5.19.0 to 5.20.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.19.0...v5.20.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-04 19:50:25 -05:00
dependabot[bot] 728f21a62c chore(deps-dev): bump @types/puppeteer from 5.4.2 to 5.4.3 (#1876)
Bumps [@types/puppeteer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/puppeteer) from 5.4.2 to 5.4.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/puppeteer)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-04 19:49:33 -05:00
dependabot[bot] 0cc4e4c4b2 chore(deps): bump puppeteer-extra-plugin-stealth from 2.6.7 to 2.7.4 (#1878)
Bumps [puppeteer-extra-plugin-stealth](https://github.com/berstend/puppeteer-extra) from 2.6.7 to 2.7.4.
- [Release notes](https://github.com/berstend/puppeteer-extra/releases)
- [Commits](https://github.com/berstend/puppeteer-extra/compare/puppeteer-extra-plugin-stealth@2.6.7...puppeteer-extra-plugin-stealth@2.7.4)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-04 19:49:06 -05:00
wofnull 0e65f33690 fix(amazon-ca): out of stock check was missing (#1885) 2021-02-04 19:47:43 -05:00
Jason 4455e4ed8d feat(sms): add US Cellular (#1874) 2021-02-04 19:47:09 -05:00
wofnull 2572c8af80 fix(wipoid): corrected 3070 / 3080 links (#1879) 2021-02-04 19:45:42 -05:00
dependabot[bot] 233c4496e2 chore(deps): bump twitch-auth from 4.4.5 to 4.4.7 (#1855)
Bumps [twitch-auth](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch-auth) from 4.4.5 to 4.4.7.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.4.7/packages/twitch-auth)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-03 10:53:36 -05:00
dependabot[bot] 7aa2212115 chore(deps-dev): bump c8 from 7.4.0 to 7.5.0 (#1863)
Bumps [c8](https://github.com/bcoe/c8) from 7.4.0 to 7.5.0.
- [Release notes](https://github.com/bcoe/c8/releases)
- [Changelog](https://github.com/bcoe/c8/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bcoe/c8/compare/v7.4.0...v7.5.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-03 10:52:12 -05:00
Yildirim 4f57df016b fix(nvidia): update inStock text (#1850)
Co-authored-by: ssaddique <ssaddique@axway.com>
2021-02-02 15:25:09 -05:00
wofnull 329318427f fix(amazon-ca): update selector (#1851) 2021-02-02 15:24:42 -05:00
dependabot[bot] 630f46ce47 chore(deps-dev): bump webpack from 5.18.0 to 5.19.0 (#1849)
Bumps [webpack](https://github.com/webpack/webpack) from 5.18.0 to 5.19.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.18.0...v5.19.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-02 15:24:09 -05:00
dependabot[bot] 1cc63c051c chore(deps): bump dorny/paths-filter from v2.7.0 to v2.8.0 (#1848)
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from v2.7.0 to v2.8.0.
- [Release notes](https://github.com/dorny/paths-filter/releases)
- [Changelog](https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dorny/paths-filter/compare/v2.7.0...7c0f15b688b020e95e00f15c61299b022f08ca95)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-02 15:23:59 -05:00
dependabot[bot] 127d846fbe chore(deps): bump open from 7.3.1 to 7.4.0 (#1856)
Bumps [open](https://github.com/sindresorhus/open) from 7.3.1 to 7.4.0.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v7.3.1...v7.4.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-02 15:23:33 -05:00
dependabot[bot] 4b8b6feda6 chore(deps): bump google-github-actions/release-please-action from v2.15 to v2.16 (#1857)
Bumps [google-github-actions/release-please-action](https://github.com/google-github-actions/release-please-action) from v2.15 to v2.16.
- [Release notes](https://github.com/google-github-actions/release-please-action/releases)
- [Changelog](https://github.com/google-github-actions/release-please-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google-github-actions/release-please-action/compare/v2.15...61a3f25af95f0c859244635ec47bc92ed9116a21)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-02 15:23:27 -05:00
dependabot[bot] b6d03317ba chore(deps): bump twitch from 4.4.6 to 4.4.7 (#1858)
Bumps [twitch](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch) from 4.4.6 to 4.4.7.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.4.7/packages/twitch)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-02 15:23:17 -05:00
Ben Curtis 8df4339bdb feat: clean up proxy logging with n/N in each lookup (#1839) 2021-01-31 14:36:58 -05:00
dependabot[bot] bb8c89b775 chore(deps): bump twitch from 4.4.5 to 4.4.6 (#1831)
Bumps [twitch](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch) from 4.4.5 to 4.4.6.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.4.6/packages/twitch)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-29 10:43:13 -05:00
Christian d63685f290 fix(alternate): update URLs (#1814) 2021-01-28 16:46:24 -05:00
wofnull 95b4a153bd fix(web): 404 Error / page not visible (#1825) 2021-01-28 16:44:32 -05:00
dependabot[bot] 4fe0f50941 chore(deps): bump twilio from 3.55.0 to 3.55.1 (#1824)
Bumps [twilio](https://github.com/twilio/twilio-node) from 3.55.0 to 3.55.1.
- [Release notes](https://github.com/twilio/twilio-node/releases)
- [Changelog](https://github.com/twilio/twilio-node/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-node/compare/3.55.0...3.55.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-28 16:43:53 -05:00
dependabot[bot] e488ef22fb chore(deps-dev): bump webpack from 5.17.0 to 5.18.0 (#1807)
Bumps [webpack](https://github.com/webpack/webpack) from 5.17.0 to 5.18.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.17.0...v5.18.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-27 10:10:37 -05:00
Yildirim de1427c076 fix(docs): nvidia store changes (#1797)
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2021-01-26 08:10:01 -05:00
wofnull 1015358b50 fix(galaxus): update selector (#1730) 2021-01-26 07:21:17 -05:00
dependabot[bot] a2072449d2 chore(deps-dev): bump webpack from 5.16.0 to 5.17.0 (#1793)
Bumps [webpack](https://github.com/webpack/webpack) from 5.16.0 to 5.17.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.16.0...v5.17.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-26 07:20:37 -05:00
dependabot[bot] 8c17d21dfd chore(deps-dev): bump @types/node from 14.14.21 to 14.14.22 (#1751)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.21 to 14.14.22.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-26 07:20:24 -05:00
dependabot[bot] 8ac3a3bc37 chore(deps-dev): bump sinon from 9.2.3 to 9.2.4 (#1781)
Bumps [sinon](https://github.com/sinonjs/sinon) from 9.2.3 to 9.2.4.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v9.2.3...v9.2.4)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-26 07:20:05 -05:00
dependabot[bot] 8c383235af chore(deps): bump twitch-chat-client from 4.4.0 to 4.4.5 (#1784)
Bumps [twitch-chat-client](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch-chat-client) from 4.4.0 to 4.4.5.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.4.5/packages/twitch-chat-client)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-26 07:19:51 -05:00
Jef LeCompte ecb27ebf0a chore(config): remove old nvidia config
Ref: 2143b15809
2021-01-26 07:14:51 -05:00
dependabot[bot] 3b204f15ac chore(deps): bump puppeteer-extra-plugin-stealth from 2.6.6 to 2.6.7 (#1794)
Bumps [puppeteer-extra-plugin-stealth](https://github.com/berstend/puppeteer-extra) from 2.6.6 to 2.6.7.
- [Release notes](https://github.com/berstend/puppeteer-extra/releases)
- [Commits](https://github.com/berstend/puppeteer-extra/compare/puppeteer-extra-plugin-stealth@2.6.6...puppeteer-extra-plugin-stealth@2.6.7)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-26 07:12:08 -05:00
Yildirim 2143b15809 feat(nvidia): updated store for europe (#1732) 2021-01-26 07:11:20 -05:00
dependabot[bot] f932009c01 chore(deps): bump amannn/action-semantic-pull-request from v3.2.3 to v3.2.6 (#1795)
Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from v3.2.3 to v3.2.6.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v3.2.3...81acd1c603cf23bd6f6fbe16be9e882cd25cd4e6)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-26 07:07:31 -05:00
dependabot[bot] a10ae42454 chore(deps): bump twitch-auth from 4.4.0 to 4.4.5 (#1782)
Bumps [twitch-auth](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch-auth) from 4.4.0 to 4.4.5.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.4.5/packages/twitch-auth)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-25 17:26:15 -05:00
dependabot[bot] ba6eccc90a chore(deps): bump twitch from 4.4.0 to 4.4.5 (#1783)
Bumps [twitch](https://github.com/d-fischer/twitch/tree/HEAD/packages/twitch) from 4.4.0 to 4.4.5.
- [Release notes](https://github.com/d-fischer/twitch/releases)
- [Commits](https://github.com/d-fischer/twitch/commits/v4.4.5/packages/twitch)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-25 15:40:42 -05:00
Jordan Tucker 9791568cd4 fix(discord): ensure first group in list is notified (#1788)
This fix ensures that the `series` of a `link` is found in
`notifyGroupSeries`. Before this fix, the first key in
`notifyGroupSeries` was excluded.
2021-01-25 15:40:30 -05:00
hifihedgehog ce609fb518 fix(microcenter): properly flag in stock items (#1754) 2021-01-20 12:51:57 -05:00
dependabot[bot] 5f0c656b30 chore(deps): bump amannn/action-semantic-pull-request from v3.1.0 to v3.2.3 (#1750)
Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from v3.1.0 to v3.2.3.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v3.1.0...71a74e9d131e8d7c16cd672a42937ac88b1375db)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-20 17:39:23 +00:00
dependabot[bot] 113e92df8b chore(deps-dev): bump webpack from 5.15.0 to 5.16.0 (#1752)
Bumps [webpack](https://github.com/webpack/webpack) from 5.15.0 to 5.16.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.15.0...v5.16.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-20 12:37:52 -05:00
sohaiiil c81282ef9f feat(store): corsair-uk (#1733) 2021-01-19 12:34:12 -05:00
wofnull aec8cfdae2 chore(newegg-sg): add missing 3060ti, 3070, 3080, 3090 cards (#1742) 2021-01-19 12:33:25 -05:00
wofnull 9bf0e30222 chore(newegg): add missing 3060ti, 3070, 3080, 3090 cards (#1741) 2021-01-19 12:31:34 -05:00
wofnull 13f1c3d50c chore(neweggca): add missing 3060ti, 3070, 3080, 3090 cards (#1743) 2021-01-19 12:25:38 -05:00
wofnull 9695e29a02 fix(vuugo): add out of stock check (#1731) 2021-01-18 13:23:05 -05:00
92 changed files with 19935 additions and 2125 deletions
+9 -1
View File
@@ -1,3 +1,11 @@
{ {
"extends": "./node_modules/gts/" "extends": "./node_modules/gts/",
"rules": {
"prettier/prettier": [
"error",
{
"endOfLine": "auto"
}
]
}
} }
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
npm run test
+6 -3
View File
@@ -3,6 +3,9 @@ on:
pull_request: pull_request:
branches: branches:
- main - main
push:
branches:
- main
jobs: jobs:
build-lint: build-lint:
name: Build and lint name: Build and lint
@@ -11,9 +14,9 @@ jobs:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v2.1.4 uses: actions/setup-node@v2
with: with:
node-version: 14.15.4 node-version: 15.11.0
- name: Setup build cache - name: Setup build cache
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@@ -33,7 +36,7 @@ jobs:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Run paths filter - name: Run paths filter
uses: dorny/paths-filter@v2.7.0 uses: dorny/paths-filter@v2
id: filter id: filter
with: with:
filters: | filters: |
+3 -1
View File
@@ -18,4 +18,6 @@ jobs:
-t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \ -t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \
-t "ghcr.io/${GITHUB_REPOSITORY}:nightly" . -t "ghcr.io/${GITHUB_REPOSITORY}:nightly" .
- name: Release Docker image - name: Release Docker image
run: docker push "ghcr.io/${GITHUB_REPOSITORY}" run: |
docker push "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}"
docker push "ghcr.io/${GITHUB_REPOSITORY}:nightly"
+18
View File
@@ -0,0 +1,18 @@
name: Pull Request Linter
on:
pull_request:
types:
- opened
- edited
- reopened
- synchronize
jobs:
lint-pr:
name: Lint pull request title
runs-on: ubuntu-latest
steps:
- name: Lint pull request title
uses: jef/conventional-commits-pr-action@v1
with:
comment: false
token: ${{ secrets.GITHUB_TOKEN }}
-17
View File
@@ -1,17 +0,0 @@
name: Pull Request Lint
on:
pull_request_target:
types:
- opened
- edited
- reopened
- synchronize
jobs:
pull-request-lint:
name: Lint pull request
runs-on: ubuntu-latest
steps:
- name: Lint pull request
uses: amannn/action-semantic-pull-request@v3.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+7 -7
View File
@@ -11,12 +11,12 @@ jobs:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Setup release please - name: Setup release please
uses: google-github-actions/release-please-action@v2.15 uses: google-github-actions/release-please-action@v2
id: release id: release
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
release-type: simple release-type: node
changelog-path: docs/changelog.md changelog-path: CHANGELOG.md
package-name: streetmerchant package-name: streetmerchant
- name: Login into GitHub Container Registry - name: Login into GitHub Container Registry
if: ${{ steps.release.outputs.release_created }} if: ${{ steps.release.outputs.release_created }}
@@ -25,10 +25,10 @@ jobs:
if: ${{ steps.release.outputs.release_created }} if: ${{ steps.release.outputs.release_created }}
run: | run: |
docker build \ docker build \
-t "ghcr.io/${GITHUB_REPOSITORY}:${TAG_NAME}" \ -t "ghcr.io/${GITHUB_REPOSITORY}:${{ steps.release.outputs.tag_name }}" \
-t "ghcr.io/${GITHUB_REPOSITORY}:latest" . -t "ghcr.io/${GITHUB_REPOSITORY}:latest" .
env:
TAG_NAME: ${{ steps.release.outputs.tag_name }}
- name: Release Docker image - name: Release Docker image
if: ${{ steps.release.outputs.release_created }} if: ${{ steps.release.outputs.release_created }}
run: docker push "ghcr.io/${GITHUB_REPOSITORY}" run: |
docker push "ghcr.io/${GITHUB_REPOSITORY}:${{ steps.release.outputs.tag_name }}"
docker push "ghcr.io/${GITHUB_REPOSITORY}:latest"
-21
View File
@@ -1,21 +0,0 @@
{
"problemMatcher": [
{
"owner": "xo",
"pattern": [
{
"regexp": "^\\s+(.*):(\\d+):(\\d+)$",
"file": 1
},
{
"regexp": "^\\s+✖\\s+(\\d+):(\\d+)\\s+(.*)\\s+(.*)$",
"line": 1,
"column": 2,
"message": 3,
"code": 4,
"loop": true
}
]
}
]
}
+2
View File
@@ -17,3 +17,5 @@ success-*.png
desktop.ini desktop.ini
twitch.json twitch.json
terraform/terraform.tfstate
terraform/terraform.tfstate.backup
+1 -1
View File
@@ -1 +1 @@
14.15.4 15.11.0
+38
View File
@@ -1,5 +1,43 @@
# Changelog # Changelog
## [3.5.0](https://www.github.com/jef/streetmerchant/compare/v3.4.1...v3.5.0) (2021-03-02)
### Features
* add restart time for leaking Chromium in Ubuntu ([#1880](https://www.github.com/jef/streetmerchant/issues/1880)) ([1009ce6](https://www.github.com/jef/streetmerchant/commit/1009ce6636c21c378121bd83b251a371a1b8568e))
* add terraform infra as code for AWS fargate ([#1987](https://www.github.com/jef/streetmerchant/issues/1987)) ([d341ef7](https://www.github.com/jef/streetmerchant/commit/d341ef72aa6b74e54c11aeb455516b2a69a8a664))
* clean up proxy logging with n/N in each lookup ([#1839](https://www.github.com/jef/streetmerchant/issues/1839)) ([8df4339](https://www.github.com/jef/streetmerchant/commit/8df4339bdb3d96cb448e3acb727fdc534688bfc0))
* **notification:** add simple SmartThings switch activation ([#1902](https://www.github.com/jef/streetmerchant/issues/1902)) ([c22c960](https://www.github.com/jef/streetmerchant/commit/c22c960dc179f5ed74ae41a25178e6d2feed0bf9))
* **notification:** add Streamlabs support ([#1872](https://www.github.com/jef/streetmerchant/issues/1872)) ([edb39f8](https://www.github.com/jef/streetmerchant/commit/edb39f8f05451c3cc1994c0beb2338bae04ab585))
* **nvidia:** updated store for europe ([#1732](https://www.github.com/jef/streetmerchant/issues/1732)) ([2143b15](https://www.github.com/jef/streetmerchant/commit/2143b158090dc065a29bdde4c6dc592a5a745c07))
* **sms:** add US Cellular ([#1874](https://www.github.com/jef/streetmerchant/issues/1874)) ([4455e4e](https://www.github.com/jef/streetmerchant/commit/4455e4ed8df84a37fa16fdc58d130c11a997f9b5))
* **store:** add globaldata ([#2004](https://www.github.com/jef/streetmerchant/issues/2004)) ([5effbae](https://www.github.com/jef/streetmerchant/commit/5effbae882bed9d287f8ccc84e9dd38a6ebdebb1))
* **store:** add ldlc (FR) ([#2037](https://www.github.com/jef/streetmerchant/issues/2037)) ([a7be09d](https://www.github.com/jef/streetmerchant/commit/a7be09d56eda441cb1625ebb642cccab63d71f31))
* **store:** add netonnet-no ([#1989](https://www.github.com/jef/streetmerchant/issues/1989)) ([e6803d4](https://www.github.com/jef/streetmerchant/commit/e6803d4d7c60424c043b540f0cb555bd29b9d7aa))
* **store:** add Norwegian stores ([#1985](https://www.github.com/jef/streetmerchant/issues/1985)) ([5a5927b](https://www.github.com/jef/streetmerchant/commit/5a5927ba1ef5d138f5741b672b1fe2466e5760c2))
* **store:** add novoatalho (PT) ([#2043](https://www.github.com/jef/streetmerchant/issues/2043)) ([a3c726b](https://www.github.com/jef/streetmerchant/commit/a3c726b45c5ab8f0a6c8a239e0de0a913c4e0c55))
* **store:** add PCDiga.com ([#1990](https://www.github.com/jef/streetmerchant/issues/1990)) ([2501f6b](https://www.github.com/jef/streetmerchant/commit/2501f6b5cc46aa05bfe94ca238b5866e4fd60f36))
* **store:** corsair-uk ([#1733](https://www.github.com/jef/streetmerchant/issues/1733)) ([c81282e](https://www.github.com/jef/streetmerchant/commit/c81282ef9fd95c39dc6d338f3d79de16906c89b6))
* use node 15, use package version ([#2066](https://www.github.com/jef/streetmerchant/issues/2066)) ([eee669b](https://www.github.com/jef/streetmerchant/commit/eee669b1b3e54ada1180877fe766aaded9e02936))
### Bug Fixes
* **alternate:** update URLs ([#1814](https://www.github.com/jef/streetmerchant/issues/1814)) ([d63685f](https://www.github.com/jef/streetmerchant/commit/d63685f2905eb7f207f13da7682ad6a81d9d7aca))
* **amazon-ca:** out of stock check was missing ([#1885](https://www.github.com/jef/streetmerchant/issues/1885)) ([0e65f33](https://www.github.com/jef/streetmerchant/commit/0e65f336902dec99aa10a4b4823f4d2411674cae))
* **amazon-ca:** update selector ([#1851](https://www.github.com/jef/streetmerchant/issues/1851)) ([3293184](https://www.github.com/jef/streetmerchant/commit/329318427fc3eb1081751289401269119a252905))
* **amazon-uk:** add label for ps5 ([8ee6815](https://www.github.com/jef/streetmerchant/commit/8ee6815c0fb6ea129d2de600d10e6732e90ce924)), closes [#2036](https://www.github.com/jef/streetmerchant/issues/2036)
* **discord:** ensure first group in list is notified ([#1788](https://www.github.com/jef/streetmerchant/issues/1788)) ([9791568](https://www.github.com/jef/streetmerchant/commit/9791568cd4205b00ce9c5d301937efc17089b769))
* **docs:** nvidia store changes ([#1797](https://www.github.com/jef/streetmerchant/issues/1797)) ([de1427c](https://www.github.com/jef/streetmerchant/commit/de1427c076e5051673635fb9ec7e9880f0e3c260))
* **galaxus:** update selector ([#1730](https://www.github.com/jef/streetmerchant/issues/1730)) ([1015358](https://www.github.com/jef/streetmerchant/commit/1015358b502a30a8cfc9fedfeab2dc09098d9615))
* **microcenter:** properly flag in stock items ([#1754](https://www.github.com/jef/streetmerchant/issues/1754)) ([ce609fb](https://www.github.com/jef/streetmerchant/commit/ce609fb518fa7811a77e3ab7d26ecacf86ac35e6))
* **nvidia:** update inStock text ([#1850](https://www.github.com/jef/streetmerchant/issues/1850)) ([4f57df0](https://www.github.com/jef/streetmerchant/commit/4f57df016ba2ab6fdd5e7ca7e98ea6d9fba463a7))
* remove package-lock.json ([e3d0980](https://www.github.com/jef/streetmerchant/commit/e3d09803ad3d53b5c4310b3e369a69c99515fd8c))
* **vuugo:** add out of stock check ([#1731](https://www.github.com/jef/streetmerchant/issues/1731)) ([9695e29](https://www.github.com/jef/streetmerchant/commit/9695e29a02ea320842954db9f2ea51612b983490))
* **web:** 404 Error / page not visible ([#1825](https://www.github.com/jef/streetmerchant/issues/1825)) ([95b4a15](https://www.github.com/jef/streetmerchant/commit/95b4a153bd8b708cfefd07e3f16e787bb069da48))
* **wipoid:** corrected 3070 / 3080 links ([#1879](https://www.github.com/jef/streetmerchant/issues/1879)) ([2572c8a](https://www.github.com/jef/streetmerchant/commit/2572c8af80685be514ff762f8203e7de7cab8634))
### [3.4.1](https://www.github.com/jef/streetmerchant/compare/v3.4.0...v3.4.1) (2021-01-17) ### [3.4.1](https://www.github.com/jef/streetmerchant/compare/v3.4.0...v3.4.1) (2021-01-17)
+2 -3
View File
@@ -1,4 +1,4 @@
FROM node:14.15.4-alpine3.12 AS builder FROM node:15.11.0-alpine3.13 AS builder
LABEL org.opencontainers.image.source="https://github.com/jef/streetmerchant" LABEL org.opencontainers.image.source="https://github.com/jef/streetmerchant"
@@ -15,7 +15,7 @@ COPY src/ src/
RUN npm run compile RUN npm run compile
RUN npm prune --production RUN npm prune --production
FROM node:14.15.4-alpine3.12 FROM node:15.11.0-alpine3.13
RUN apk add --no-cache chromium RUN apk add --no-cache chromium
@@ -35,7 +35,6 @@ COPY --from=builder /build/node_modules/ node_modules/
COPY --from=builder /build/build/ build/ COPY --from=builder /build/build/ build/
COPY web/ web/ COPY web/ web/
COPY package.json package.json COPY package.json package.json
COPY version.txt version.txt
ENTRYPOINT ["npm", "run"] ENTRYPOINT ["npm", "run"]
CMD ["start:production"] CMD ["start:production"]
+4 -20
View File
@@ -1,28 +1,12 @@
<p align="center"> <p align="center">
<a href="https://jef.codes/streetmerchant" <a href="https://jef.codes/streetmerchant"><img src="https://raw.githubusercontent.com/jef/streetmerchant/main/docs/assets/images/streetmerchant-banner.png" /></a>
><img
src="https://raw.githubusercontent.com/jef/streetmerchant/main/docs/assets/images/streetmerchant-banner.png"
alt="streetmerchant"
/></a>
</p> </p>
<p align="center"> <p align="center">
<strong>The world's easiest, most powerful stock checker</strong> <strong>The world's easiest, most powerful stock checker</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/jef/streetmerchant/actions?query=workflow%3ARelease" <a href="https://github.com/jef/streetmerchant/actions/workflows/ci.yaml"><img src="https://img.shields.io/github/workflow/status/jef/streetmerchant/ci?color=24292e&label=ci&logo=github&logoColor=tewt&style=flat-square" /></a>
><img src="https://github.com/jef/streetmerchant/workflows/Release/badge.svg" <a href="https://discord.gg/gbVY4vB9JF"><img src="https://img.shields.io/discord/773913070665859073.svg?color=24292e&label=%20&logo=discord&logoColor=ffffff&style=flat-square" /></a>
/></a>
<a href="https://discord.gg/gbVY4vB9JF"
><img
src="https://img.shields.io/discord/773913070665859073.svg?label=chat&logo=discord&logoColor=ffffff&color=7389D8"
alt="Tweet"
/></a>
<a
href="https://twitter.com/intent/tweet?text=Beat%20the%20masses%20with%20streetmerchant&url=https://github.com/jef/streetmerchant&hashtags=typescript,opensource,bot,shopping"
><img
src="https://img.shields.io/badge/twitter-share-green?logo=twitter&style=social"
alt="Tweet"
/></a>
</p> </p>
<p align="center"> <p align="center">
<em>To get started, visit <a href="https://jef.codes/streetmerchant">jef.codes/streetmerchant</a></em> <em>To get started, visit <a href="https://jef.codes/streetmerchant">jef.codes/streetmerchant</a></em>
@@ -38,7 +22,7 @@ First and foremost, this service _will not_ automatically buy for you.
## Quick start ## Quick start
streetmerchant runs on Node.js 14: streetmerchant runs on Node.js:
```shell ```shell
git clone https://github.com/jef/streetmerchant.git git clone https://github.com/jef/streetmerchant.git
+2 -2
View File
@@ -5,7 +5,7 @@ You do not need any computer skills, smarts, or anything of that nature. You are
## Prerequisites ## Prerequisites
- [git](https://git-scm.com/) - [git](https://git-scm.com/)
- Either [Node.js 14](https://nodejs.org/en/) or [Docker (1.13.0+)](https://docs.docker.com/get-docker/) (advanced users) - Either [Node.js 15](https://nodejs.org/en/) or [Docker (1.13.0+)](https://docs.docker.com/get-docker/) (advanced users)
## Using Node.js ## Using Node.js
@@ -14,7 +14,7 @@ You do not need any computer skills, smarts, or anything of that nature. You are
| tag | Example, `v1.0.0`; stable | | tag | Example, `v1.0.0`; stable |
| `main` | Latest HEAD; not tagged, could be unstable | | `main` | Latest HEAD; not tagged, could be unstable |
1. Download [Node.js 14](https://nodejs.org/en/) 1. Download [Node.js 15](https://nodejs.org/en/)
1. Clone this project `git clone https://github.com/jef/streetmerchant.git`. 1. Clone this project `git clone https://github.com/jef/streetmerchant.git`.
1. To checkout a particular reference, use `git checkout <ref name>` after cloning. 1. To checkout a particular reference, use `git checkout <ref name>` after cloning.
1. Navigate to this project by entering `cd streetmerchant`. 1. Navigate to this project by entering `cd streetmerchant`.
+1
View File
@@ -18,6 +18,7 @@
| `PROXY_PROTOCOL` | Protocol of proxy server, such as `socks5`. Default: `http` | | `PROXY_PROTOCOL` | Protocol of proxy server, such as `socks5`. Default: `http` |
| `PROXY_ADDRESS` | IP Address or fqdn of proxy server | | `PROXY_ADDRESS` | IP Address or fqdn of proxy server |
| `PROXY_PORT` | TCP Port number on which the proxy is listening for connections. Default: `80` | | `PROXY_PORT` | TCP Port number on which the proxy is listening for connections. Default: `80` |
| `RESTART_TIME` | Restarts chrome after defined milliseconds. `0` for never, default: `0` |
| `SCREENSHOT` | Capture screenshot of page if a card is found. Default: `true` | | `SCREENSHOT` | Capture screenshot of page if a card is found. Default: `true` |
| `WEB_PORT` | Starts a webserver to be able to control the bot while it is running. Setting this value starts this service. | | `WEB_PORT` | Starts a webserver to be able to control the bot while it is running. Setting this value starts this service. |
+35 -37
View File
@@ -2,7 +2,7 @@
| Environment variable | Description | | Environment variable | Description |
|:---:|---| |:---:|---|
| `COUNTRY` | [Supported country](#supported-countries) you want to be scraped | Only used with `nvidia-api`, default: `usa` | | `MAX_PRICE_SERIES_3060` | Maximum price allowed for a match, applies 3060 series cards (does not apply to these sites: Nvidia, Asus, EVGA) |
| `MAX_PRICE_SERIES_3060TI` | Maximum price allowed for a match, applies 3060 Ti series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3060TI` | Maximum price allowed for a match, applies 3060 Ti series cards (does not apply to these sites: Nvidia, Asus, EVGA) |
| `MAX_PRICE_SERIES_3070` | Maximum price allowed for a match, applies 3070 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3070` | Maximum price allowed for a match, applies 3070 series cards (does not apply to these sites: Nvidia, Asus, EVGA) |
| `MAX_PRICE_SERIES_3080` | Maximum price allowed for a match, applies 3080 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3080` | Maximum price allowed for a match, applies 3080 series cards (does not apply to these sites: Nvidia, Asus, EVGA) |
@@ -22,15 +22,13 @@
| `MAX_PRICE_SERIES_XBOXSX` | Maximum price allowed for a match, applies PS5 digital edition | | `MAX_PRICE_SERIES_XBOXSX` | Maximum price allowed for a match, applies PS5 digital edition |
| `MAX_PRICE_SERIES_TEST` | Maximum price allowed for a match, applies `test:series` | | `MAX_PRICE_SERIES_TEST` | Maximum price allowed for a match, applies `test:series` |
| `MICROCENTER_LOCATION` | Specific MicroCenter location(s) to search. Comma separated, e.g.: `marietta,duluth`, default: `web` | | `MICROCENTER_LOCATION` | Specific MicroCenter location(s) to search. Comma separated, e.g.: `marietta,duluth`, default: `web` |
| `NVIDIA_ADD_TO_CART_ATTEMPTS` | The maximum number of times the `nvidia-api` add to cart feature will be attempted before failing. Default: `10` |
| `NVIDIA_SESSION_TTL` | The time in milliseconds to keep the cart active while using `nvidia-api`. Default: `60000` |
| `SHOW_ONLY_BRANDS` | Filter to show specified brands. Comma separated, e.g.: `evga,zotac` | | `SHOW_ONLY_BRANDS` | Filter to show specified brands. Comma separated, e.g.: `evga,zotac` |
| `SHOW_ONLY_MODELS` | Filter to show specified models. Comma separated, can include series. E.g.: `founders edition:3090,rog strix` | | `SHOW_ONLY_MODELS` | Filter to show specified models. Comma separated, can include series. E.g.: `founders edition:3090,rog strix` |
| `SHOW_ONLY_SERIES` | Filter to show specified series. Comma separated, e.g.: `3080,ryzen5900` | | `SHOW_ONLY_SERIES` | Filter to show specified series. Comma separated, e.g.: `3080,ryzen5900` |
| `STORES` | [Supported stores](#supported-stores) you want to be scraped. Default: `amazon,bestbuy`. Comma separated, can include `PAGE_SLEEP_MIN` and `PAGE_SLEEP_MAX` values. E.g.: `amazon:10000:30000,bestbuy,newegg:50000:80000`. | | `STORES` | [Supported stores](#supported-stores) you want to be scraped. Default: `amazon,bestbuy`. Comma separated, can include `PAGE_SLEEP_MIN` and `PAGE_SLEEP_MAX` values. E.g.: `amazon:10000:30000,bestbuy,newegg:50000:80000`. |
???+ note ???+ note
For `MAX_PRICE_SERIES_*` variables: enter a price (enter whole dollar amounts only, avoid use of: dollar symbols, commas, and periods). E.g.: `1234`. Merchandise found above this price will be skipped. For `MAX_PRICE_SERIES_*` variables: Use whole numbers only (no currency symbol is required). Avoid using any commas or decimal points. Example: `1234`. Merchandise found above this price will be skipped.
## Supported stores ## Supported stores
@@ -84,18 +82,21 @@ Used with the `STORES` variable.
| Coolblue | NL | `coolblue`| | Coolblue | NL | `coolblue`|
| Coolmod | ES | `coolmod`| | Coolmod | ES | `coolmod`|
| Corsair | US | `corsair`| | Corsair | US | `corsair`|
| Corsair | UK | `corsair-uk`|
| CPL | AU | `cpl`| | CPL | AU | `cpl`|
| Currys | UK | `currys`| | Currys | UK | `currys`|
| Cyberport | DE | `cyberport` | | Cyberport | DE | `cyberport` |
| DComp | AU | `dcomp`| | DComp | AU | `dcomp`|
| Drako | IT | `drako` | | Drako | IT | `drako` |
| DustinHome | NO | `dustinhome-no` |
| EBGames | CA | `ebgames`| | EBGames | CA | `ebgames`|
| eBuyer | UK | `ebuyer`| | eBuyer | UK | `ebuyer`|
| El Corte Inglés | ES | `elcorteingles`| | El Corte Inglés | ES | `elcorteingles`|
| Elkjop | NO | `elkjop`|
| ePrice | IT | `eprice`| | ePrice | IT | `eprice`|
| Equippr | DE | `equippr`|
| Euronics | IT | `euronics`| | Euronics | IT | `euronics`|
| Euronics | DE | `euronics-de`| | Euronics | DE | `euronics-de`|
| Equippr | DE | `equippr`|
| Evatech | AU | `evatech`| | Evatech | AU | `evatech`|
| EVGA | US | `evga`| | EVGA | US | `evga`|
| EVGA | EU | `evga-eu`| | EVGA | EU | `evga-eu`|
@@ -107,13 +108,16 @@ Used with the `STORES` variable.
| Gamestop | DE | `gamestop-de`| | Gamestop | DE | `gamestop-de`|
| Gamestop | IE | `gamestop-ie`| | Gamestop | IE | `gamestop-ie`|
| Gamestop | IT | `gamestop-it`| | Gamestop | IT | `gamestop-it`|
| Globaldata | PT | `globaldata`|
| Hardware Planet | IT | | `hardware-planet` |
| HarrisTechnology | AU | `harristechnology`| | HarrisTechnology | AU | `harristechnology`|
| Harvey Normans | IE | `harveynorman-ie` | | Harvey Normans | IE | `harveynorman-ie` |
| Hardware Planet | IT | | `hardware-planet` |
| iGame Computer | AU | `igame-computer`| | iGame Computer | AU | `igame-computer`|
| John Lewis | UK | `johnlewis`| | John Lewis | UK | `johnlewis`|
| Kabum | BR | `kabum`| | Kabum | BR | `kabum`|
| Komplett | NO | `komplett-no`|
| Landmark Computers | AU | `landmark-computers`| | Landmark Computers | AU | `landmark-computers`|
| Ldlc | FR | `ldlc`|
| Mediamarkt | DE | `mediamarkt`| | Mediamarkt | DE | `mediamarkt`|
| Medimax | DE | `medimax`| | Medimax | DE | `medimax`|
| Megekko | NL | `megekko`| | Megekko | NL | `megekko`|
@@ -122,13 +126,14 @@ Used with the `STORES` variable.
| Mindfactory | DE | `mindfactory` | | Mindfactory | DE | `mindfactory` |
| MSY | AU | `msy`| | MSY | AU | `msy`|
| Mwave | AU | `mwave`| | Mwave | AU | `mwave`|
| Netonnet | NO | `netonnet-no`|
| Newegg | US | `newegg`| | Newegg | US | `newegg`|
| Newegg | CA | `newegg-ca`| | Newegg | CA | `newegg-ca`|
| Newegg | SG | `newegg-sg`| | Newegg | SG | `newegg-sg`|
| Notebooksbilliger | DE |`notebooksbilliger`| | Notebooksbilliger | DE |`notebooksbilliger`|
| Novatech | UK | `novatech`| | Novatech | UK | `novatech`|
| Nvidia | US | `nvidia`| | Novo Atalho | PT | `novoatalho`|
| Nvidia API | | `nvidia-api`| | Nvidia | EU/UK | [See below](#nvidia-store-reference) |
| Office Depot | US | `officedepot`| | Office Depot | US | `officedepot`|
| Ollo | IT | `ollo`| | Ollo | IT | `ollo`|
| Otto | DE | `otto`| | Otto | DE | `otto`|
@@ -137,11 +142,14 @@ Used with the `STORES` variable.
| PCByte | AU | `pcbyte`| | PCByte | AU | `pcbyte`|
| PCCG | AU | `pccg`| | PCCG | AU | `pccg`|
| PCComponentes | ES | `pccomponentes`| | PCComponentes | ES | `pccomponentes`|
| PCDiga | PT | `pcdiga`|
| PCKing | DE | `pcking` | | PCKing | DE | `pcking` |
| PlayStation | US | `playstation`| | PlayStation | US | `playstation`|
| PNY | US | `pny`| | PNY | US | `pny`|
| Power | NO | `power-no`|
| Proshop | DE | `proshop-de`| | Proshop | DE | `proshop-de`|
| Proshop | DK | `proshop-dk`| | Proshop | DK | `proshop-dk`|
| Proshop | NO | `proshop-no`|
| Rosman | AU | `rosman`| | Rosman | AU | `rosman`|
| Rosman-Melb | AU | `rosman-melb`| | Rosman-Melb | AU | `rosman-melb`|
| Saturn | DE | `saturn`| | Saturn | DE | `saturn`|
@@ -155,6 +163,7 @@ Used with the `STORES` variable.
| Storm Computers | AU | `storm-computer`| | Storm Computers | AU | `storm-computer`|
| Target | US | `target`| | Target | US | `target`|
| Tesco | IE | `tesco-ie`| | Tesco | IE | `tesco-ie`|
| TopAchat | GR | `topachat`|
| Toys R Us | US | `toysrus` | | Toys R Us | US | `toysrus` |
| Umart | AU | `umart`| | Umart | AU | `umart`|
| Unieuro | IT | `unieuro`| | Unieuro | IT | `unieuro`|
@@ -165,7 +174,6 @@ Used with the `STORES` variable.
| Wells Technology | AU | `wellstechnology`| | Wells Technology | AU | `wellstechnology`|
| Wipoid | ES | `wipoid`| | Wipoid | ES | `wipoid`|
| Zotac | US | `zotac`| | Zotac | US | `zotac`|
| TopAchat | GR | `topachat`|
### Micro Center stores ### Micro Center stores
@@ -192,7 +200,7 @@ Used with the `SHOW_ONLY_BRANDS` and `SHOW_ONLY_MODELS` variables.
|:---:|---| |:---:|---|
| `amd` | `5600x`, `5800x`, `5900x`, `5950x`, `amd reference` | | `amd` | `5600x`, `5800x`, `5900x`, `5950x`, `amd reference` |
| `asus` | `crosshair viii`, `dual`, `dual oc`, `ekwb`, `strix`, `strix oc`, `strix white`, `tuf`, `tuf oc` | | `asus` | `crosshair viii`, `dual`, `dual oc`, `ekwb`, `strix`, `strix oc`, `strix white`, `tuf`, `tuf oc` |
| `corsair` | `750 platinum`, `600 platinum` | | `corsair` | `750 platinum`, `600 platinum`, `600 gold` |
| `colorful` | `igame advanced oc`, `igame vulcan oc` | | `colorful` | `igame advanced oc`, `igame vulcan oc` |
| `evga` | `ftw3`, `ftw3 black`, `ftw3 ultra`, `ftw3 ultra hybrid`, `ftw3 ultra hydro copper`, `xc3`, `xc black`, `xc gaming`, `xc3 black`, `xc3 ultra`, `xc3 ultra hybrid` | | `evga` | `ftw3`, `ftw3 black`, `ftw3 ultra`, `ftw3 ultra hybrid`, `ftw3 ultra hydro copper`, `xc3`, `xc black`, `xc gaming`, `xc3 black`, `xc3 ultra`, `xc3 ultra hybrid` |
| `gainward` | `phantom gs`, `phoenix`, `phoenix gs`, `phoenix gs oc` | | `gainward` | `phantom gs`, `phoenix`, `phoenix gs`, `phoenix gs oc` |
@@ -208,7 +216,7 @@ Used with the `SHOW_ONLY_BRANDS` and `SHOW_ONLY_MODELS` variables.
| `pny` | `dual fan`, `xlr8 epic x`, `xlr8 revel`, `xlr8 uprising` | | `pny` | `dual fan`, `xlr8 epic x`, `xlr8 revel`, `xlr8 uprising` |
| `sony` | `ps5 console`, `ps5 digital` | | `sony` | `ps5 console`, `ps5 digital` |
| `xfx` | `merc`, `amd reference` | | `xfx` | `merc`, `amd reference` |
| `zotac` | `amp holo`, `amp extreme holo`, `trinity`, `trinity oc`, `twin edge`, `twin edge oc`, `twin edge oc white` | | `zotac` | `amp holo`, `amp extreme holo`, `amp white`, `trinity`, `trinity oc`, `twin edge`, `twin edge oc`, `twin edge oc white` |
## Supported series ## Supported series
@@ -223,6 +231,7 @@ Used with the `SHOW_ONLY_SERIES` variable.
| AMD RX 6800 | `rx6800` | | AMD RX 6800 | `rx6800` |
| AMD RX 6800XT | `rx6800xt` | | AMD RX 6800XT | `rx6800xt` |
| AMD RX 6900XT | `rx6900xt` | | AMD RX 6900XT | `rx6900xt` |
| Nvidia RTX 3060 | `3060` |
| Nvidia RTX 3060 Ti | `3060ti` | | Nvidia RTX 3060 Ti | `3060ti` |
| Nvidia RTX 3070 | `3070` | | Nvidia RTX 3070 | `3070` |
| Nvidia RTX 3080 | `3080` | | Nvidia RTX 3080 | `3080` |
@@ -234,32 +243,21 @@ Used with the `SHOW_ONLY_SERIES` variable.
| Xbox Series S | `xboxss` | | Xbox Series S | `xboxss` |
| Xbox Series X | `xboxsx` | | Xbox Series X | `xboxsx` |
## Supported countries ## Nvidia Store Reference
Used with the `COUNTRY` variable. ???+ note
Use the Nvidia Store to check stock for Founders Edition cards only (3060 Ti/3070/3080/3090). For USA use `bestbuy` instead.
???+ attention ???+ info
Used _only_ with `nvidia` and `nvidia-api`. Use the `STORE` variable for your chosen country. For example, to check for a FE card in Belgium you would use the `nvidia-fr` store.
| Country | 3080 FE | 3090 FE | Test Card | Notes |
|:---:|:---:|:---:|:---:|:---:|
| `austria` | `✔` | `✔` | `✔` | |
| `belgium` | `✔` | `✔` | `✔` | |
| `canada` | `✔` | `✔` | `✔` | |
| `czechia` | `✔` | `✔` | `✔` | |
| `denmark` | `✔` | | `✔` | Missing RTX 3090 |
| `finland` | `✔` | | `✔` | Missing RTX 3090 |
| `france` | `✔` | `✔` | `✔` | |
| `germany` | `✔` | `✔` | `✔` | |
| `great_britain` | `✔` | `✔` | `✔` | |
| `ireland` | `✔` | `✔` | `✔` | |
| `italy` | `✔` | `✔` | `✔` | |
| `luxembourg` | `✔` | `✔` | `✔` | |
| `netherlands` | `✔` | `✔` | `✔` | |
| `norway` | `✔` | `✔` | `✔` | |
| `poland` | `✔` | `✔` | `✔` | |
| `portugal` | `✔` | | | RTX 3080 only |
| `spain` | `✔` | `✔` | `✔` | |
| `sweden` | `✔` | `✔` | `✔` | |
| `usa` | `✔` | `✔` | `✔` | |
| Country | Store | Retailer
|:---:|:---:|:---:|
| Austria | `nvidia-de`| NBB |
| Belgium | `nvidia-fr` | LDLC |
| France | `nvidia-fr` | LDLC |
| Germany | `nvidia-de` | NBB |
| Ireland | `nvidia-gb` | Scan |
| Luxembourg | `nvidia-fr` | LDLC |
| Spain | `nvidia-es` | LDLC |
| United Kingdom | `nvidia-gb` | Scan |
+24
View File
@@ -18,6 +18,7 @@ You can test your notification configuration by running `npm run test:notificati
| Environment variable | Description | | Environment variable | Description |
|:---:|---| |:---:|---|
| `DISCORD_NOTIFY_GROUP` | Discord group you would like to notify | | `DISCORD_NOTIFY_GROUP` | Discord group you would like to notify |
| `DISCORD_NOTIFY_GROUP_3060` | Discord group to notify on 3060 stock |
| `DISCORD_NOTIFY_GROUP_3060TI` | Discord group to notify on 3060 Ti stock | | `DISCORD_NOTIFY_GROUP_3060TI` | Discord group to notify on 3060 Ti stock |
| `DISCORD_NOTIFY_GROUP_3070` | Discord group to notify on 3070 stock | | `DISCORD_NOTIFY_GROUP_3070` | Discord group to notify on 3070 stock |
| `DISCORD_NOTIFY_GROUP_3080` | Discord group to notify on 3080 stock | | `DISCORD_NOTIFY_GROUP_3080` | Discord group to notify on 3080 stock |
@@ -73,6 +74,7 @@ Default provider is Gmail. If you use a different email provider, you must provi
| Sprint | `sprint`| | Sprint | `sprint`|
| Telus | `telus`| | Telus | `telus`|
| T-Mobile | `tmobile`| | T-Mobile | `tmobile`|
| USCC | `uscc`|
| Verizon | `verizon`| | Verizon | `verizon`|
| Virgin | `virgin`| | Virgin | `virgin`|
| Virgin (CA) | `virgin-ca`| | Virgin (CA) | `virgin-ca`|
@@ -155,6 +157,15 @@ Generate token at [pushover.net/apps/build](https://pushover.net/apps/build).
| `SLACK_CHANNEL` | Channel for posting | | `SLACK_CHANNEL` | Channel for posting |
| `SLACK_TOKEN` | API token | | `SLACK_TOKEN` | API token |
## SmartThings
Generate token at [account.smartthings.com/tokens](https://account.smartthings.com/tokens).
| Environment variable | Description |
|:---:|---|
| `SMARTTHINGS_TOKEN` | Access token |
| `SMARTTHINGS_SWITCH_LABEL` | Switch Label of switch to activate|
## Telegram ## Telegram
| Environment variable | Description | | Environment variable | Description |
@@ -199,3 +210,16 @@ Instructions on how to set up tokens can be found at [d-fischer.github.io/twitch
| `TWITCH_ACCESS_TOKEN` | Twitch access token | | `TWITCH_ACCESS_TOKEN` | Twitch access token |
| `TWITCH_REFRESH_TOKEN` | Twitch refresh token | | `TWITCH_REFRESH_TOKEN` | Twitch refresh token |
| `TWITCH_CHANNEL` | Twitch channel | | `TWITCH_CHANNEL` | Twitch channel |
## StreamLabs
Instructions on how to set up tokens can be found at [dev.streamlabs.com](https://dev.streamlabs.com/docs/register-your-application).
You don't need to submit your application for review, just whitelist yourself!
| Environment variable | Description |
|:---:|---|
| `STREAMLABS_ACCESS_TOKEN` | StreamLabs access token |
| `STREAMLABS_TYPE` | StreamLabs alert type |
| `STREAMLABS_IMAGE`| Custom image to display. Leave it blank for default |
| `STREAMLABS_SOUND` | Custom image to play. Leave it blank for default |
| `STREAMLABS_DURATION` | StreamLabs alert duration (in milliseconds) |
+1
View File
@@ -0,0 +1 @@
../../terraform/README.md
+10 -3
View File
@@ -7,9 +7,9 @@ ASCII_BANNER=
ASCII_COLOR= ASCII_COLOR=
AUTO_ADD_TO_CART= AUTO_ADD_TO_CART=
BROWSER_TRUSTED= BROWSER_TRUSTED=
COUNTRY=
DESKTOP_NOTIFICATIONS= DESKTOP_NOTIFICATIONS=
DISCORD_NOTIFY_GROUP= DISCORD_NOTIFY_GROUP=
DISCORD_NOTIFY_GROUP_3060=
DISCORD_NOTIFY_GROUP_3060TI= DISCORD_NOTIFY_GROUP_3060TI=
DISCORD_NOTIFY_GROUP_3070= DISCORD_NOTIFY_GROUP_3070=
DISCORD_NOTIFY_GROUP_3080= DISCORD_NOTIFY_GROUP_3080=
@@ -35,6 +35,7 @@ HEADLESS=
IN_STOCK_WAIT_TIME= IN_STOCK_WAIT_TIME=
LOG_LEVEL= LOG_LEVEL=
LOW_BANDWIDTH= LOW_BANDWIDTH=
MAX_PRICE_SERIES_3060=
MAX_PRICE_SERIES_3060TI= MAX_PRICE_SERIES_3060TI=
MAX_PRICE_SERIES_3070= MAX_PRICE_SERIES_3070=
MAX_PRICE_SERIES_3080= MAX_PRICE_SERIES_3080=
@@ -60,8 +61,6 @@ MQTT_PASSWORD=
MQTT_QOS= MQTT_QOS=
MQTT_TOPIC= MQTT_TOPIC=
MQTT_USERNAME= MQTT_USERNAME=
NVIDIA_ADD_TO_CART_ATTEMPTS=
NVIDIA_SESSION_TTL=
OPEN_BROWSER= OPEN_BROWSER=
PAGE_BACKOFF_MIN= PAGE_BACKOFF_MIN=
PAGE_BACKOFF_MAX= PAGE_BACKOFF_MAX=
@@ -91,12 +90,15 @@ PUSHOVER_RETRY=
PUSHOVER_TOKEN= PUSHOVER_TOKEN=
PUSHOVER_USER= PUSHOVER_USER=
PUSHOVER_PRIORITY= PUSHOVER_PRIORITY=
RESTART_TIME=
SCREENSHOT= SCREENSHOT=
SHOW_ONLY_BRANDS= SHOW_ONLY_BRANDS=
SHOW_ONLY_MODELS= SHOW_ONLY_MODELS=
SHOW_ONLY_SERIES= SHOW_ONLY_SERIES=
SLACK_CHANNEL= SLACK_CHANNEL=
SLACK_TOKEN= SLACK_TOKEN=
SMARTTHINGS_TOKEN=
SMARTTHINGS_SWITCH_LABEL=
SMTP_ADDRESS= SMTP_ADDRESS=
SMTP_PORT= SMTP_PORT=
STORES= STORES=
@@ -116,4 +118,9 @@ TWITTER_ACCESS_TOKEN_SECRET=
TWITTER_CONSUMER_KEY= TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET= TWITTER_CONSUMER_SECRET=
TWITTER_TWEET_TAGS= TWITTER_TWEET_TAGS=
STREAMLABS_ACCESS_TOKEN=
STREAMLABS_TYPE=
STREAMLABS_IMAGE=
STREAMLABS_SOUND=
STREAMLABS_DURATION=
WEB_PORT= WEB_PORT=
+1
View File
@@ -85,6 +85,7 @@ nav:
- Filter: reference/filter.md - Filter: reference/filter.md
- Notification: reference/notification.md - Notification: reference/notification.md
- Proxy: reference/proxy.md - Proxy: reference/proxy.md
- Terraform: reference/terraform.md
- Help: - Help:
- General: help/general.md - General: help/general.md
- Troubleshoot: help/troubleshoot.md - Troubleshoot: help/troubleshoot.md
+14673 -1207
View File
File diff suppressed because it is too large Load Diff
+24 -23
View File
@@ -1,5 +1,6 @@
{ {
"name": "streetmerchant", "name": "streetmerchant",
"version": "3.5.0",
"description": "The world's easiest, most powerful stock checker", "description": "The world's easiest, most powerful stock checker",
"main": "src/index.ts", "main": "src/index.ts",
"scripts": { "scripts": {
@@ -9,7 +10,8 @@
"compile": "tsc", "compile": "tsc",
"pretest": "npm run compile", "pretest": "npm run compile",
"posttest": "npm run lint", "posttest": "npm run lint",
"start": "npm run compile && node build/src/index.js", "prestart": "npm run compile",
"start": "node build/src/index.js",
"start:dev": "nodemon --config nodemon.json", "start:dev": "nodemon --config nodemon.json",
"start:production": "node build/src/index.js", "start:production": "node build/src/index.js",
"test": "c8 mocha 'build/test/**/test-*.js' --exclude 'build/test/functional/**/test-*.js'", "test": "c8 mocha 'build/test/**/test-*.js' --exclude 'build/test/functional/**/test-*.js'",
@@ -17,7 +19,7 @@
"test:notification:production": "node build/test/functional/test-notification.js" "test:notification:production": "node build/test/functional/test-notification.js"
}, },
"engines": { "engines": {
"node": ">=12.0.0 <15.0.0" "node": ">=12.0.0"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@@ -31,11 +33,10 @@
}, },
"homepage": "https://github.com/jef/streetmerchant#readme", "homepage": "https://github.com/jef/streetmerchant#readme",
"dependencies": { "dependencies": {
"@bridgerakol/samsung-smart-api": "^2.8.1",
"@doridian/puppeteer-page-proxy": "^1.2.11", "@doridian/puppeteer-page-proxy": "^1.2.11",
"@jef/pushbullet": "^2.4.3", "@jef/pushbullet": "^2.4.3",
"@slack/web-api": "^6.0.0", "@slack/web-api": "^6.0.0",
"@types/random-useragent": "^0.3.0",
"@types/redis": "^2.8.28",
"chalk": "^4.1.0", "chalk": "^4.1.0",
"cheerio": "^1.0.0-rc.5", "cheerio": "^1.0.0-rc.5",
"discord.js": "^12.5.1", "discord.js": "^12.5.1",
@@ -46,42 +47,42 @@
"node-hue-api": "^4.0.10", "node-hue-api": "^4.0.10",
"node-notifier": "^9.0.0", "node-notifier": "^9.0.0",
"node-pagerduty": "^1.3.6", "node-pagerduty": "^1.3.6",
"nodemailer": "^6.4.17", "nodemailer": "^6.5.0",
"open": "^7.3.1", "open": "^7.4.2",
"play-sound": "^1.1.3", "play-sound": "^1.1.3",
"puppeteer": "^5.5.0", "puppeteer": "^8.0.0",
"puppeteer-extra": "^3.1.16", "puppeteer-extra": "^3.1.17",
"puppeteer-extra-plugin-adblocker": "^2.11.10", "puppeteer-extra-plugin-adblocker": "^2.11.10",
"puppeteer-extra-plugin-block-resources": "^2.2.8", "puppeteer-extra-plugin-block-resources": "^2.2.8",
"puppeteer-extra-plugin-stealth": "^2.6.6", "puppeteer-extra-plugin-stealth": "^2.7.5",
"pushover-notifications": "^1.2.2", "pushover-notifications": "^1.2.2",
"redis": "^3.0.2", "redis": "^3.0.2",
"top-user-agents": "^1.0.19", "top-user-agents": "^1.0.21",
"twilio": "^3.55.0", "twilio": "^3.57.0",
"twitch": "^4.4.0", "twitch": "^4.4.12",
"twitch-auth": "^4.4.0", "twitch-auth": "^4.4.12",
"twitch-chat-client": "^4.4.0", "twitch-chat-client": "^4.4.12",
"twitter": "^1.7.1", "twitter": "^1.7.1",
"winston": "^3.3.3" "winston": "^3.3.3"
}, },
"devDependencies": { "devDependencies": {
"@types/async": "^3.2.5", "@types/async": "^3.2.5",
"@types/cheerio": "^0.22.23", "@types/cheerio": "^0.22.24",
"@types/mocha": "^8.2.0", "@types/mocha": "^8.2.1",
"@types/node": "^14.14.21", "@types/node": "^14.14.31",
"@types/node-fetch": "^2.5.8", "@types/node-fetch": "^2.5.8",
"@types/node-notifier": "^8.0.0", "@types/node-notifier": "^8.0.0",
"@types/nodemailer": "^6.4.0", "@types/nodemailer": "^6.4.0",
"@types/puppeteer": "^5.4.2", "@types/redis": "^2.8.28",
"@types/sinon": "^9.0.10", "@types/sinon": "^9.0.10",
"@types/twitter": "^1.7.0", "@types/twitter": "^1.7.0",
"c8": "^7.4.0", "c8": "^7.6.0",
"gts": "^3.1.0", "gts": "^3.1.0",
"mocha": "^8.2.1", "mocha": "^8.3.0",
"nodemon": "^2.0.7", "nodemon": "^2.0.7",
"sinon": "^9.2.3", "sinon": "^9.2.4",
"ts-node": "^9.1.1", "ts-node": "^9.1.1",
"typescript": "^4.1.3", "typescript": "^4.2.2",
"webpack": "^5.14.0" "webpack": "^5.24.2"
} }
} }
+2 -5
View File
@@ -1,7 +1,4 @@
import chalk from 'chalk'; import chalk from 'chalk';
import {readFileSync} from 'fs';
const version = readFileSync('version.txt', 'utf8');
export const banner = { export const banner = {
asciiVersion: ` asciiVersion: `
@@ -14,12 +11,12 @@ export const banner = {
░ ░▒ ░ ░ ░ ░▒ ░ ▒░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒ ░▒░ ░ ▒ ▒▒ ░░ ░░ ░ ▒░ ░ ░ ░▒ ░ ░ ░ ░▒ ░ ▒░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒ ░▒░ ░ ▒ ▒▒ ░░ ░░ ░ ▒░ ░
░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
${version}`, ${process.env.npm_package_version}`,
render(ascii: boolean, hexColor: string) { render(ascii: boolean, hexColor: string) {
return chalk return chalk
.hex(hexColor) .hex(hexColor)
.bold(ascii ? this.asciiVersion : this.stringVersion); .bold(ascii ? this.asciiVersion : this.stringVersion);
}, },
stringVersion: `STREETMERCHANT stringVersion: `STREETMERCHANT
${version}`, ${process.env.npm_package_version}`,
}; };
+19
View File
@@ -208,6 +208,7 @@ const notifications = {
discord: { discord: {
notifyGroup: envOrArray(process.env.DISCORD_NOTIFY_GROUP), notifyGroup: envOrArray(process.env.DISCORD_NOTIFY_GROUP),
notifyGroupSeries: { notifyGroupSeries: {
3060: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3060),
'3060ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_3060TI), '3060ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_3060TI),
3070: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3070), 3070: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3070),
3080: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3080), 3080: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3080),
@@ -278,6 +279,7 @@ const notifications = {
['sprint', 'messaging.sprintpcs.com'], ['sprint', 'messaging.sprintpcs.com'],
['telus', 'msg.telus.com'], ['telus', 'msg.telus.com'],
['tmobile', 'tmomail.net'], ['tmobile', 'tmomail.net'],
['uscc', 'mms.uscc.net'],
['verizon', 'vtext.com'], ['verizon', 'vtext.com'],
['virgin', 'vmobl.com'], ['virgin', 'vmobl.com'],
['virgin-ca', 'vmobile.ca'], ['virgin-ca', 'vmobile.ca'],
@@ -302,6 +304,10 @@ const notifications = {
channel: envOrString(process.env.SLACK_CHANNEL), channel: envOrString(process.env.SLACK_CHANNEL),
token: envOrString(process.env.SLACK_TOKEN), token: envOrString(process.env.SLACK_TOKEN),
}, },
smartthings: {
token: envOrString(process.env.SMARTTHINGS_TOKEN),
device: envOrString(process.env.SMARTTHINGS_SWITCH_LABEL),
},
soundPlayer: envOrString(process.env.SOUND_PLAYER), soundPlayer: envOrString(process.env.SOUND_PLAYER),
telegram: { telegram: {
accessToken: envOrString(process.env.TELEGRAM_ACCESS_TOKEN), accessToken: envOrString(process.env.TELEGRAM_ACCESS_TOKEN),
@@ -327,6 +333,13 @@ const notifications = {
consumerSecret: envOrString(process.env.TWITTER_CONSUMER_SECRET), consumerSecret: envOrString(process.env.TWITTER_CONSUMER_SECRET),
tweetTags: envOrString(process.env.TWITTER_TWEET_TAGS), tweetTags: envOrString(process.env.TWITTER_TWEET_TAGS),
}, },
streamlabs: {
accessToken: envOrString(process.env.STREAMLABS_ACCESS_TOKEN),
type: envOrString(process.env.STREAMLABS_TYPE),
imageHref: envOrString(process.env.STREAMLABS_IMAGE),
soundHref: envOrString(process.env.STREAMLABS_SOUND),
duration: envOrNumber(process.env.STREAMLABS_DURATION),
},
}; };
const nvidia = { const nvidia = {
@@ -360,6 +373,7 @@ const store = {
country: envOrString(process.env.COUNTRY, 'usa'), country: envOrString(process.env.COUNTRY, 'usa'),
maxPrice: { maxPrice: {
series: { series: {
3060: envOrNumber(process.env.MAX_PRICE_SERIES_3060),
'3060ti': envOrNumber(process.env.MAX_PRICE_SERIES_3060TI), '3060ti': envOrNumber(process.env.MAX_PRICE_SERIES_3060TI),
3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070), 3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070),
3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080), 3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080),
@@ -391,6 +405,7 @@ const store = {
}; };
}), }),
showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, [ showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, [
'3060',
'3060ti', '3060ti',
'3070', '3070',
'3080', '3080',
@@ -402,6 +417,7 @@ const store = {
'ryzen5800', 'ryzen5800',
'ryzen5900', 'ryzen5900',
'ryzen5950', 'ryzen5950',
'sf',
'sonyps5c', 'sonyps5c',
'sonyps5de', 'sonyps5de',
'xboxss', 'xboxss',
@@ -433,6 +449,8 @@ const store = {
}), }),
}; };
const restartTime = envOrNumber(process.env.RESTART_TIME, 0);
export const defaultStoreData = { export const defaultStoreData = {
maxPageSleep: browser.maxSleep, maxPageSleep: browser.maxSleep,
minPageSleep: browser.minSleep, minPageSleep: browser.minSleep,
@@ -447,6 +465,7 @@ export const config = {
page, page,
proxy, proxy,
store, store,
restartTime,
}; };
export function setConfig(newConfig: any) { export function setConfig(newConfig: any) {
+19 -7
View File
@@ -1,18 +1,29 @@
import * as Process from 'process'; import * as Process from 'process';
import {config} from './config'; // Needs to be loaded first import {config} from './config'; // Needs to be loaded first
import {startAPIServer, stopAPIServer} from './web'; // eslint-disable-line sort-imports import {startAPIServer, stopAPIServer} from './web';
import {Browser} from 'puppeteer'; import {Browser, launch} from 'puppeteer';
import {getSleepTime} from './util'; import {getSleepTime} from './util';
import {logger} from './logger'; import {logger} from './logger';
import puppeteer from 'puppeteer-extra';
import stealthPlugin from 'puppeteer-extra-plugin-stealth';
import {storeList} from './store/model'; import {storeList} from './store/model';
import {tryLookupAndLoop} from './store'; import {tryLookupAndLoop} from './store';
puppeteer.use(stealthPlugin());
let browser: Browser | undefined; let browser: Browser | undefined;
async function sleep(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
/**
* Schedules a restart of the bot
*/
async function restartMain() {
if (config.restartTime > 0) {
await sleep(config.restartTime);
await stop();
loopMain();
}
}
/** /**
* Starts the bot. * Starts the bot.
*/ */
@@ -48,7 +59,7 @@ async function main() {
} }
await stop(); await stop();
browser = await puppeteer.launch({ browser = await launch({
args, args,
defaultViewport: { defaultViewport: {
height: config.page.height, height: config.page.height,
@@ -92,6 +103,7 @@ async function stopAndExit() {
*/ */
async function loopMain() { async function loopMain() {
try { try {
restartMain();
await main(); await main();
} catch (error: unknown) { } catch (error: unknown) {
logger.error( logger.error(
+14
View File
@@ -241,11 +241,25 @@ function buildSetupString(
function buildProductString(link: Link, store: Store, color?: boolean): string { function buildProductString(link: Link, store: Store, color?: boolean): string {
if (color) { if (color) {
if (store.currentProxyIndex !== undefined && store.proxyList) {
const proxy = `${store.currentProxyIndex + 1}/${store.proxyList.length}`;
return (
chalk.gray(`[${proxy}]`) +
chalk.cyan(` [${store.name}]`) +
chalk.grey(` [${link.brand} (${link.series})] ${link.model}`)
);
} else {
return ( return (
chalk.cyan(`[${store.name}]`) + chalk.cyan(`[${store.name}]`) +
chalk.grey(` [${link.brand} (${link.series})] ${link.model}`) chalk.grey(` [${link.brand} (${link.series})] ${link.model}`)
); );
} }
}
if (store.currentProxyIndex !== undefined && store.proxyList) {
const proxy = `${store.currentProxyIndex + 1}/${store.proxyList.length}`;
return `[${proxy}] [${store.name}] [${link.brand} (${link.series})] ${link.model}`;
} else {
return `[${store.name}] [${link.brand} (${link.series})] ${link.model}`; return `[${store.name}] [${link.brand} (${link.series})] ${link.model}`;
} }
}
+1 -1
View File
@@ -52,7 +52,7 @@ export function sendDiscordMessage(link: Link, store: Store) {
notifyText = notifyText.concat(notifyGroup); notifyText = notifyText.concat(notifyGroup);
} }
if (Object.keys(notifyGroupSeries).indexOf(link.series) !== 0) { if (Object.keys(notifyGroupSeries).indexOf(link.series) !== -1) {
notifyText = notifyText.concat(notifyGroupSeries[link.series]); notifyText = notifyText.concat(notifyGroupSeries[link.series]);
} }
+4
View File
@@ -15,6 +15,8 @@ import {sendTweet} from './twitter';
import {sendTwilioMessage} from './twilio'; import {sendTwilioMessage} from './twilio';
import {sendTwitchMessage} from './twitch'; import {sendTwitchMessage} from './twitch';
import {updateRedis} from './redis'; import {updateRedis} from './redis';
import {activateSmartthingsSwitch} from './smartthings';
import {sendStreamLabsAlert} from './streamlabs';
export function sendNotification(link: Link, store: Store) { export function sendNotification(link: Link, store: Store) {
// Priority // Priority
@@ -24,6 +26,7 @@ export function sendNotification(link: Link, store: Store) {
sendEmail(link, store); sendEmail(link, store);
sendSms(link, store); sendSms(link, store);
// Non-priority // Non-priority
activateSmartthingsSwitch();
adjustPhilipsHueLights(); adjustPhilipsHueLights();
sendMqttMessage(link, store); sendMqttMessage(link, store);
sendPagerDutyNotification(link, store); sendPagerDutyNotification(link, store);
@@ -35,4 +38,5 @@ export function sendNotification(link: Link, store: Store) {
sendTwilioMessage(link, store); sendTwilioMessage(link, store);
sendTwitchMessage(link, store); sendTwitchMessage(link, store);
updateRedis(link, store); updateRedis(link, store);
sendStreamLabsAlert(link, store);
} }
+41
View File
@@ -0,0 +1,41 @@
import {SmartThings} from '@bridgerakol/samsung-smart-api';
import {logger} from '../logger';
import {config} from '../config';
const {smartthings} = config.notifications;
export async function activateSmartthingsSwitch() {
if (!smartthings.token || !smartthings.device) {
return;
}
const st = new SmartThings(smartthings.token);
let match = false;
try {
await st.devices.getList().then(res => {
res.data.items.forEach(
async (item: {label: string; deviceId: string}) => {
if (smartthings.device === item.label) {
match = true;
const device_status = (await st.devices.getStatus(item.deviceId))
.data.components.main.switch.switch.value;
if (device_status !== 'on') {
logger.debug(`Turning on ${smartthings.device}`);
st.devices.commands(item.deviceId, 'on');
}
}
}
);
});
} catch (TypeError) {
logger.warn(
'SmartThings : Problem getting data from hub, check SMARTTHINGS_TOKEN'
);
return;
}
if (!match) {
logger.warn(
`SmartThings : No switch called ${smartthings.device}, check SMARTTHINGS_SWITCH_LABEL`
);
return;
}
}
+42
View File
@@ -0,0 +1,42 @@
import {Link, Store} from '../store/model';
import {Print, logger} from '../logger';
import {config} from '../config';
import {URLSearchParams} from 'url';
import fetch from 'node-fetch';
const {streamlabs} = config.notifications;
let requestParams: URLSearchParams;
if (streamlabs.accessToken && streamlabs.type) {
requestParams = new URLSearchParams();
requestParams.append('access_token', streamlabs.accessToken);
requestParams.append('type', streamlabs.type);
requestParams.append('image_href', streamlabs.imageHref);
requestParams.append('sound_href', streamlabs.soundHref);
requestParams.append('duration', streamlabs.duration.toString());
}
export function sendStreamLabsAlert(link: Link, store: Store) {
if (requestParams) {
logger.debug('↗ sending StreamLabs alert');
(async () => {
const message = `${Print.inStock(link, store)}`;
requestParams.set('message', message);
try {
const response = await fetch('https://streamlabs.com/api/v1.0/alerts', {
method: 'POST',
body: requestParams,
});
const json = await response.json();
if (!json.success) throw Error(JSON.stringify(json));
logger.info('✔ StreamLabs alert sent');
} catch (error: unknown) {
logger.error("✖ couldn't send StreamLabs alert", error);
}
})();
}
}
+41 -37
View File
@@ -1,10 +1,9 @@
import { import {
Browser, Browser,
Page, Page,
PageEventObj, HTTPRequest,
Request, HTTPResponse,
RespondOptions, ResponseForRequest,
Response,
} from 'puppeteer'; } from 'puppeteer';
import {Link, Store, getStores} from './model'; import {Link, Store, getStores} from './model';
import {Print, logger} from '../logger'; import {Print, logger} from '../logger';
@@ -37,21 +36,24 @@ function nextProxy(store: Store) {
if (store.currentProxyIndex === undefined) { if (store.currentProxyIndex === undefined) {
store.currentProxyIndex = 0; store.currentProxyIndex = 0;
} else {
store.currentProxyIndex++;
} }
store.currentProxyIndex++;
if (store.currentProxyIndex >= store.proxyList.length) { if (store.currentProxyIndex >= store.proxyList.length) {
store.currentProxyIndex = 0; store.currentProxyIndex = 0;
} }
logger.info( logger.debug(
` [${store.name}] Next proxy index: ${store.currentProxyIndex} / Count: ${store.proxyList.length}` ` [${store.name}] Next proxy index: ${store.currentProxyIndex} / Count: ${
store.proxyList.length
} (${store.proxyList[store.currentProxyIndex]})`
); );
return store.proxyList[store.currentProxyIndex]; return store.proxyList[store.currentProxyIndex];
} }
async function handleLowBandwidth(request: Request) { async function handleLowBandwidth(request: HTTPRequest) {
if (!config.browser.lowBandwidth) { if (!config.browser.lowBandwidth) {
return false; return false;
} }
@@ -70,7 +72,7 @@ async function handleLowBandwidth(request: Request) {
return false; return false;
} }
async function handleProxy(request: Request, proxy?: string) { async function handleProxy(request: HTTPRequest, proxy?: string) {
if (!proxy) { if (!proxy) {
return false; return false;
} }
@@ -89,7 +91,7 @@ async function handleProxy(request: Request, proxy?: string) {
return true; return true;
} }
async function handleAdBlock(request: Request, adBlockRequestHandler: any) { async function handleAdBlock(request: HTTPRequest, adBlockRequestHandler: any) {
if (!adBlockRequestHandler) { if (!adBlockRequestHandler) {
return false; return false;
} }
@@ -109,7 +111,7 @@ async function handleAdBlock(request: Request, adBlockRequestHandler: any) {
resolve(true); resolve(true);
}; };
const respondFunc = async (response: RespondOptions) => { const respondFunc = async (response: ResponseForRequest) => {
try { try {
await request.respond(response); await request.respond(response);
} catch { } catch {
@@ -196,7 +198,7 @@ async function lookup(browser: Browser, store: Store) {
let adBlockRequestHandler: any; let adBlockRequestHandler: any;
let pageProxy; let pageProxy;
if (useAdBlock) { if (useAdBlock) {
const onProxyFunc = (event: keyof PageEventObj, handler: any) => { const onProxyFunc = (event: string, handler: any) => {
if (event !== 'request') { if (event !== 'request') {
page.on(event, handler); page.on(event, handler);
return; return;
@@ -252,11 +254,22 @@ async function lookup(browser: Browser, store: Store) {
try { try {
statusCode = await lookupCard(browser, store, page, link); statusCode = await lookupCard(browser, store, page, link);
} catch (error: unknown) { } catch (error: unknown) {
if (store.currentProxyIndex !== undefined && store.proxyList) {
const proxy = `${store.currentProxyIndex + 1}/${
store.proxyList.length
}`;
logger.error(
`✖ [${proxy}] [${store.name}] ${link.brand} ${link.series} ${
link.model
} - ${(error as Error).message}`
);
} else {
logger.error( logger.error(
`✖ [${store.name}] ${link.brand} ${link.series} ${link.model} - ${ `✖ [${store.name}] ${link.brand} ${link.series} ${link.model} - ${
(error as Error).message (error as Error).message
}` }`
); );
}
const client = await page.target().createCDPSession(); const client = await page.target().createCDPSession();
await client.send('Network.clearBrowserCookies'); await client.send('Network.clearBrowserCookies');
} }
@@ -284,7 +297,7 @@ async function lookupCard(
link: Link link: Link
): Promise<number> { ): Promise<number> {
const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0'; const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0';
const response: Response | null = await page.goto(link.url, { const response: HTTPResponse | null = await page.goto(link.url, {
waitUntil: givenWaitFor, waitUntil: givenWaitFor,
}); });
@@ -333,7 +346,7 @@ async function handleResponse(
store: Store, store: Store,
page: Page, page: Page,
link: Link, link: Link,
response?: Response | null, response?: HTTPResponse | null,
recursionDepth = 0 recursionDepth = 0
) { ) {
if (!response) { if (!response) {
@@ -350,7 +363,7 @@ async function handleResponse(
if (recursionDepth > 4) { if (recursionDepth > 4) {
logger.warn(Print.recursionLimit(link, store, true)); logger.warn(Print.recursionLimit(link, store, true));
} else { } else {
const response: Response | null = await page.waitForNavigation({ const response: HTTPResponse | null = await page.waitForNavigation({
waitUntil: 'networkidle0', waitUntil: 'networkidle0',
}); });
recursionDepth++; recursionDepth++;
@@ -436,14 +449,18 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
} }
} }
// Fixme: currently causing issues if (link.labels?.inStock) {
// Do API inventory validation in realtime (no cache) if available const options = {
// if ( ...baseOptions,
// store.realTimeInventoryLookup !== undefined && requireVisible: true,
// link.itemNumber !== undefined type: 'outerHTML' as const,
// ) { };
// return store.realTimeInventoryLookup(link.itemNumber);
// } if (!(await pageIncludesLabels(page, link.labels.inStock, options))) {
logger.info(Print.outOfStock(link, store, true));
return false;
}
}
if (store.labels.inStock) { if (store.labels.inStock) {
const options = { const options = {
@@ -458,19 +475,6 @@ async function lookupCardInStock(store: Store, page: Page, link: Link) {
} }
} }
if (link.labels?.inStock) {
const options = {
...baseOptions,
requireVisible: true,
type: 'outerHTML' as const,
};
if (!(await pageIncludesLabels(page, link.labels.inStock, options))) {
logger.info(Print.outOfStock(link, store, true));
return false;
}
}
return true; return true;
} }
@@ -508,7 +512,7 @@ async function runCaptchaDeterrent(browser: Browser, store: Store, page: Page) {
try { try {
const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0'; const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0';
const response: Response | null = await page.goto(link.url, { const response: HTTPResponse | null = await page.goto(link.url, {
waitUntil: givenWaitFor, waitUntil: givenWaitFor,
}); });
statusCode = await handleResponse(browser, store, page, link, response); statusCode = await handleResponse(browser, store, page, link, response);
+67 -67
View File
@@ -32,403 +32,403 @@ export const Alternate: Store = {
brand: 'test:brand', brand: 'test:brand',
model: 'test:model', model: 'test:model',
series: 'test:series', series: 'test:series',
url: 'https://www.alternate.de/product/1662088', url: 'https://www.alternate.de/html/product/1662088',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'strix', model: 'strix',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672868', url: 'https://www.alternate.de/html/product/1672868',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'strix oc', model: 'strix oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672867', url: 'https://www.alternate.de/html/product/1672867',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'tuf', model: 'tuf',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672251', url: 'https://www.alternate.de/html/product/1672251',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'tuf oc', model: 'tuf oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672634', url: 'https://www.alternate.de/html/product/1672634',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'ftw3', model: 'ftw3',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673517', url: 'https://www.alternate.de/html/product/1673517',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'ftw3 ultra', model: 'ftw3 ultra',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673524', url: 'https://www.alternate.de/html/product/1673524',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'xc3 black', model: 'xc3 black',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673512', url: 'https://www.alternate.de/html/product/1673512',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'xc3', model: 'xc3',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673520', url: 'https://www.alternate.de/html/product/1673520',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'xc3 ultra', model: 'xc3 ultra',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1674164', url: 'https://www.alternate.de/html/product/1674164',
}, },
{ {
brand: 'gainward', brand: 'gainward',
model: 'phantom gs', model: 'phantom gs',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1688597', url: 'https://www.alternate.de/html/product/1688597',
}, },
{ {
brand: 'gainward', brand: 'gainward',
model: 'phoenix gs', model: 'phoenix gs',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673442', url: 'https://www.alternate.de/html/product/1673442',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'aorus master', model: 'aorus master',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1680168', url: 'https://www.alternate.de/html/product/1680168',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'aorus xtreme', model: 'aorus xtreme',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1680168', url: 'https://www.alternate.de/html/product/1680168',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'eagle oc', model: 'eagle oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672756', url: 'https://www.alternate.de/html/product/1672756',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'gaming oc', model: 'gaming oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672753', url: 'https://www.alternate.de/html/product/1672753',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'vision oc', model: 'vision oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1681134', url: 'https://www.alternate.de/html/product/1681134',
}, },
{ {
brand: 'inno3d', brand: 'inno3d',
model: 'ichill x3', model: 'ichill x3',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673136', url: 'https://www.alternate.de/html/product/1673136',
}, },
{ {
brand: 'inno3d', brand: 'inno3d',
model: 'ichill x4', model: 'ichill x4',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673134', url: 'https://www.alternate.de/html/product/1673134',
}, },
{ {
brand: 'inno3d', brand: 'inno3d',
model: 'twin x2 oc', model: 'twin x2 oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673137', url: 'https://www.alternate.de/html/product/1673137',
}, },
{ {
brand: 'msi', brand: 'msi',
model: 'gaming x trio', model: 'gaming x trio',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672343', url: 'https://www.alternate.de/html/product/1672343',
}, },
{ {
brand: 'msi', brand: 'msi',
model: 'ventus 3x oc', model: 'ventus 3x oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672345', url: 'https://www.alternate.de/html/product/1672345',
}, },
{ {
brand: 'palit', brand: 'palit',
model: 'gamerock oc', model: 'gamerock oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1688594', url: 'https://www.alternate.de/html/product/1688594',
}, },
{ {
brand: 'palit', brand: 'palit',
model: 'gaming pro oc', model: 'gaming pro oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1673431', url: 'https://www.alternate.de/html/product/1673431',
}, },
{ {
brand: 'zotac', brand: 'zotac',
model: 'amp extreme holo', model: 'amp extreme holo',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1677982', url: 'https://www.alternate.de/html/product/1677982',
}, },
{ {
brand: 'zotac', brand: 'zotac',
model: 'amp holo', model: 'amp holo',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1677985', url: 'https://www.alternate.de/html/product/1677985',
}, },
{ {
brand: 'zotac', brand: 'zotac',
model: 'trinity oc', model: 'trinity oc',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1677989', url: 'https://www.alternate.de/html/product/1677989',
}, },
{ {
brand: 'zotac', brand: 'zotac',
model: 'trinity', model: 'trinity',
series: '3080', series: '3080',
url: 'https://www.alternate.de/product/1672612', url: 'https://www.alternate.de/html/product/1672612',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'strix', model: 'strix',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672870', url: 'https://www.alternate.de/html/product/1672870',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'strix oc', model: 'strix oc',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672872', url: 'https://www.alternate.de/html/product/1672872',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'tuf', model: 'tuf',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672259', url: 'https://www.alternate.de/html/product/1672259',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'tuf oc', model: 'tuf oc',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672629', url: 'https://www.alternate.de/html/product/1672629',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'ftw3', model: 'ftw3',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673530', url: 'https://www.alternate.de/html/product/1673530',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'ftw3 ultra', model: 'ftw3 ultra',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673531', url: 'https://www.alternate.de/html/product/1673531',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'xc3 black', model: 'xc3 black',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673521', url: 'https://www.alternate.de/html/product/1673521',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'xc3', model: 'xc3',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673525', url: 'https://www.alternate.de/html/product/1673525',
}, },
{ {
brand: 'evga', brand: 'evga',
model: 'xc3 ultra', model: 'xc3 ultra',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673529', url: 'https://www.alternate.de/html/product/1673529',
}, },
{ {
brand: 'gainward', brand: 'gainward',
model: 'phoenix gs', model: 'phoenix gs',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673440', url: 'https://www.alternate.de/html/product/1673440',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'aorus xtreme', model: 'aorus xtreme',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1680670', url: 'https://www.alternate.de/html/product/1680670',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'aorus master', model: 'aorus master',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1687793', url: 'https://www.alternate.de/html/product/1687793',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'eagle oc', model: 'eagle oc',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672744', url: 'https://www.alternate.de/html/product/1672744',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'gaming oc', model: 'gaming oc',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672749', url: 'https://www.alternate.de/html/product/1672749',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'turbo', model: 'turbo',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1687703', url: 'https://www.alternate.de/html/product/1687703',
}, },
{ {
brand: 'inno3d', brand: 'inno3d',
model: 'gaming x3', model: 'gaming x3',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673131', url: 'https://www.alternate.de/html/product/1673131',
}, },
{ {
brand: 'inno3d', brand: 'inno3d',
model: 'ichill x3', model: 'ichill x3',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673135', url: 'https://www.alternate.de/html/product/1673135',
}, },
{ {
brand: 'inno3d', brand: 'inno3d',
model: 'ichill x4', model: 'ichill x4',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673129', url: 'https://www.alternate.de/html/product/1673129',
}, },
{ {
brand: 'msi', brand: 'msi',
model: 'gaming x trio', model: 'gaming x trio',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672341', url: 'https://www.alternate.de/html/product/1672341',
}, },
{ {
brand: 'msi', brand: 'msi',
model: 'ventus 3x oc', model: 'ventus 3x oc',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672346', url: 'https://www.alternate.de/html/product/1672346',
}, },
{ {
brand: 'palit', brand: 'palit',
model: 'gaming pro oc', model: 'gaming pro oc',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1673434', url: 'https://www.alternate.de/html/product/1673434',
}, },
{ {
brand: 'zotac', brand: 'zotac',
model: 'trinity', model: 'trinity',
series: '3090', series: '3090',
url: 'https://www.alternate.de/product/1672611', url: 'https://www.alternate.de/html/product/1672611',
}, },
{ {
brand: 'amd', brand: 'amd',
model: '5600x', model: '5600x',
series: 'ryzen5600', series: 'ryzen5600',
url: 'https://www.alternate.de/product/1685588', url: 'https://www.alternate.de/html/product/1685588',
}, },
{ {
brand: 'amd', brand: 'amd',
model: '5800x', model: '5800x',
series: 'ryzen5800', series: 'ryzen5800',
url: 'https://www.alternate.de/product/1685585', url: 'https://www.alternate.de/html/product/1685585',
}, },
{ {
brand: 'amd', brand: 'amd',
model: '5900x', model: '5900x',
series: 'ryzen5900', series: 'ryzen5900',
url: 'https://www.alternate.de/product/1685590', url: 'https://www.alternate.de/html/product/1685590',
}, },
{ {
brand: 'amd', brand: 'amd',
model: '5950x', model: '5950x',
series: 'ryzen5950', series: 'ryzen5950',
url: 'https://www.alternate.de/product/1685584', url: 'https://www.alternate.de/html/product/1685584',
}, },
{ {
brand: 'sony', brand: 'sony',
model: 'ps5 console', model: 'ps5 console',
series: 'sonyps5c', series: 'sonyps5c',
url: 'https://www.alternate.de/product/1651220', url: 'https://www.alternate.de/html/product/1651220',
}, },
{ {
brand: 'sony', brand: 'sony',
model: 'ps5 digital', model: 'ps5 digital',
series: 'sonyps5de', series: 'sonyps5de',
url: 'https://www.alternate.de/product/1651221', url: 'https://www.alternate.de/html/product/1651221',
}, },
{ {
brand: 'xfx', brand: 'xfx',
model: 'merc', model: 'merc',
series: 'rx6800xt', series: 'rx6800xt',
url: 'https://www.alternate.de/product/1698792', url: 'https://www.alternate.de/html/product/1698792',
}, },
{ {
brand: 'sapphire', brand: 'sapphire',
model: 'nitro oc se', model: 'nitro oc se',
series: 'rx6800xt', series: 'rx6800xt',
url: 'https://www.alternate.de/product/1696478', url: 'https://www.alternate.de/html/product/1696478',
}, },
{ {
brand: 'sapphire', brand: 'sapphire',
model: 'nitro oc', model: 'nitro oc',
series: 'rx6800xt', series: 'rx6800xt',
url: 'https://www.alternate.de/product/1696482', url: 'https://www.alternate.de/html/product/1696482',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'strix lc', model: 'strix lc',
series: 'rx6800xt', series: 'rx6800xt',
url: 'https://www.alternate.de/product/1695392', url: 'https://www.alternate.de/html/product/1695392',
}, },
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'gaming oc', model: 'gaming oc',
series: 'rx6800xt', series: 'rx6800xt',
url: 'https://www.alternate.de/product/1697044', url: 'https://www.alternate.de/html/product/1697044',
}, },
{ {
brand: 'asus', brand: 'asus',
model: 'tuf oc', model: 'tuf oc',
series: 'rx6900xt', series: 'rx6900xt',
url: 'https://www.alternate.de/product/1702773', url: 'https://www.alternate.de/html/product/1702773',
}, },
{ {
brand: 'msi', brand: 'msi',
model: 'amd reference', model: 'amd reference',
series: 'rx6900xt', series: 'rx6900xt',
url: 'https://www.alternate.de/product/1700508', url: 'https://www.alternate.de/html/product/1700508',
}, },
{ {
brand: 'xfx', brand: 'xfx',
model: 'merc', model: 'merc',
series: 'rx6900xt', series: 'rx6900xt',
url: 'https://www.alternate.de/product/1704614', url: 'https://www.alternate.de/html/product/1704614',
}, },
{ {
brand: 'microsoft', brand: 'microsoft',
model: 'xbox series x', model: 'xbox series x',
series: 'xboxsx', series: 'xboxsx',
url: 'https://www.alternate.de/product/1675115', url: 'https://www.alternate.de/html/product/1675115',
}, },
{ {
brand: 'microsoft', brand: 'microsoft',
model: 'xbox series s', model: 'xbox series s',
series: 'xboxss', series: 'xboxss',
url: 'https://www.alternate.de/product/1675117', url: 'https://www.alternate.de/html/product/1675117',
}, },
{ {
brand: 'sony', brand: 'sony',
model: 'ps5 console', model: 'ps5 console',
series: 'sonyps5c', series: 'sonyps5c',
url: 'https://www.alternate.de/product/1676874', url: 'https://www.alternate.de/html/product/1651220',
}, },
], ],
name: 'alternate', name: 'alternate',
+5 -1
View File
@@ -12,7 +12,11 @@ export const AmazonCa: Store = {
text: ['add to cart'], text: ['add to cart'],
}, },
maxPrice: { maxPrice: {
container: '#priceblock_ourprice', container: '.a-color-price',
},
outOfStock: {
container: '.a-color-price',
text: ['currently unavailable.'],
}, },
}, },
links: [ links: [
+6
View File
@@ -708,6 +708,12 @@ export const Amazon: Store = {
brand: 'sony', brand: 'sony',
cartUrl: cartUrl:
'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1', 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1',
labels: {
inStock: {
container: '#productTitle',
text: ['playstation 5 console'],
},
},
model: 'ps5 console', model: 'ps5 console',
series: 'sonyps5c', series: 'sonyps5c',
url: 'https://www.amazon.com/dp/B08FC5L3RG', url: 'https://www.amazon.com/dp/B08FC5L3RG',
+5
View File
@@ -40,6 +40,11 @@ export const Aria: Store = {
titleSelector: 'strong > a[href]', titleSelector: 'strong > a[href]',
}), }),
urls: [ urls: [
{
series: '3060',
url:
'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3060',
},
{ {
series: '3060ti', series: '3060ti',
url: url:
+21
View File
@@ -20,6 +20,27 @@ export const BestBuyCa: Store = {
url: url:
'https://www.bestbuy.ca/en-ca/product/google-nest-hello-wi-fi-video-doorbell-black-white/12222651', 'https://www.bestbuy.ca/en-ca/product/google-nest-hello-wi-fi-video-doorbell-black-white/12222651',
}, },
{
brand: 'msi',
model: 'ventus 3x',
series: '3060',
url:
'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3060-ventus-3x-12gb-gddr6-video-card/15324508',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060',
url:
'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3060-twin-edge-oc-12gb-gddr6-video-card/15309503',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3060',
url:
'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3060-twin-edge-12gb-gddr6-video-card/15309504',
},
{ {
brand: 'msi', brand: 'msi',
model: 'ventus 2x oc', model: 'ventus 2x oc',
+14
View File
@@ -306,6 +306,20 @@ export const BestBuy: Store = {
series: '3060ti', series: '3060ti',
url: 'https://api.bestbuy.com/click/-/6442485/pdp', url: 'https://api.bestbuy.com/click/-/6442485/pdp',
}, },
{
brand: 'msi',
cartUrl: 'https://api.bestbuy.com/click/-/6452940/cart',
model: 'ventus 3x',
series: '3060',
url: 'https://api.bestbuy.com/click/-/6452940/pdp',
},
{
brand: 'evga',
cartUrl: 'https://api.bestbuy.com/click/-/6454328/cart',
model: 'xc gaming',
series: '3060',
url: 'https://api.bestbuy.com/click/-/6454328/pdp',
},
{ {
brand: 'amd', brand: 'amd',
cartUrl: 'https://api.bestbuy.com/click/-/6438942/cart', cartUrl: 'https://api.bestbuy.com/click/-/6438942/cart',
+4
View File
@@ -67,6 +67,10 @@ export const Box: Store = {
titleSelector: '.p-list-section > h3 > a[href]', titleSelector: '.p-list-section > h3 > a[href]',
}), }),
urls: [ urls: [
{
series: '3060',
url: 'https://www.box.co.uk/rtx-3060-graphics-cards',
},
{ {
series: '3060ti', series: '3060ti',
url: 'https://www.box.co.uk/rtx-3060-ti-graphics-cards', url: 'https://www.box.co.uk/rtx-3060-ti-graphics-cards',
+63
View File
@@ -482,6 +482,69 @@ export const CanadaComputers: Store = {
url: url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185168&language=en', 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185168&language=en',
}, },
{
brand: 'msi',
model: 'ventus 2x',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=188914&language=en',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189034&language=en',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189035&language=en',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189411&language=en',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189542&language=en',
},
{
brand: 'evga',
model: 'xc gaming',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189460&language=en',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189615&language=en',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189625&language=en',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060',
url:
'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=189626&language=en',
},
{ {
brand: 'msi', brand: 'msi',
model: 'gaming x trio', model: 'gaming x trio',
+5
View File
@@ -63,6 +63,11 @@ export const Ccl: Store = {
titleSelector: '.productList_Detail a[title]', titleSelector: '.productList_Detail a[title]',
}), }),
urls: [ urls: [
{
series: '3060',
url:
'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3060-Graphics-Cards/',
},
{ {
series: '3060ti', series: '3060ti',
url: url:
+46
View File
@@ -0,0 +1,46 @@
import {Store} from './store';
export const CorsairUK: Store = {
currency: '£',
labels: {
inStock: {
container: '#addToCartForm',
text: ['add to cart'],
},
outOfStock: {
container: '#addToCartForm',
text: ['notify me when in stock'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.corsair.com/uk/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020181-UK',
},
{
brand: 'corsair',
model: '750 platinum',
series: 'sf',
url:
'https://www.corsair.com/uk/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020186-UK',
},
{
brand: 'corsair',
model: '600 platinum',
series: 'sf',
url:
'https://www.corsair.com/uk/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020182-UK',
},
{
brand: 'corsair',
model: '600 gold',
series: 'sf',
url:
'https://www.corsair.com/uk/en/Categories/Products/Power-Supply-Units/SF-Series%E2%84%A2-80-PLUS-Gold-Power-Supplies/p/CP-9020105-UK',
},
],
name: 'corsair-uk',
};
+5
View File
@@ -90,6 +90,11 @@ export const Currys: Store = {
urlSelector: 'a[href]', urlSelector: 'a[href]',
}), }),
urls: [ urls: [
{
series: '3060',
url:
'https://www.currys.co.uk/gbuk/rtx-3060/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00314002/xx-criteria.html',
},
{ {
series: '3060ti', series: '3060ti',
url: url:
+76
View File
@@ -0,0 +1,76 @@
import {Store} from './store';
export const DustinHomeNO: Store = {
currency: 'kr.',
labels: {
inStock: {
container:
'div.c-product-main-info > div.c-product-buy-wrapper > div.u-pt-16.u-relative.d-flex > div > span',
text: ['Kan sendes omgående'],
},
outOfStock: {
container:
'div.c-product-main-info > div.c-product-buy-wrapper > div.u-pt-16.u-relative.d-flex > div > span',
text: [
'Vi venter produktet til lager, men har foreløpig ingen bekreftet leveringsdato. Vi sender produktet så snart det er på lager.',
],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.dustinhome.no/product/5011216501/',
},
{
brand: 'msi',
model: 'suprim x',
series: '3080',
url: 'https://www.dustinhome.no/product/5011216707/',
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.dustinhome.no/product/5011197759/',
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url: 'https://www.dustinhome.no/product/5011197760/',
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.dustinhome.no/product/5011197756/',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3080',
url: 'https://www.dustinhome.no/product/5011196134/',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3080',
url: 'https://www.dustinhome.no/product/5011196133/',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce wb',
series: '3080',
url: 'https://www.dustinhome.no/product/5011212484/',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.dustinhome.no/product/5011199977/',
},
],
name: 'dustinhome-no',
};
+10
View File
@@ -109,6 +109,16 @@ export const Ebuyer: Store = {
url: url:
'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3060-Ti', 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3060-Ti',
}, },
{
series: '3060ti',
url:
'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3060-Ti?page=2',
},
{
series: '3060',
url:
'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3060',
},
{ {
series: '3070', series: '3070',
url: url:
+82
View File
@@ -0,0 +1,82 @@
import {Store} from './store';
export const Elkjop: Store = {
currency: 'kr.',
labels: {
inStock: {
container:
'#product-detail-wrapper > div.col.any-5-12.M-2-5.information > div.buy-button-container.align-left.any-1-1.table-btn > div > div > div.product-price-button-wrap > div > div > span > span',
text: ['Legg i handlevogn'],
},
outOfStock: {
container:
'#product-detail-wrapper > div.col.any-5-12.M-2-5.information > div.buy-button-container.align-left.any-1-1.table-btn > div > div > div.product-price-button-wrap > div > div > span > span',
text: ['Ikke tilgjengelig'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/218425/evga-geforce-rtx-3080-xc3-black',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3090',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/215370/pny-rtx-3090-24gb-xlr8-gaming-epic-x-rgb-3-fan-2-7slot',
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.dustinhome.no/product/5011197759/',
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/218419/evga-geforce-rtx-3080-xc3',
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/218425/evga-geforce-rtx-3080-xc3-black',
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/220655/evga-geforce-rtx-3080-ftw3',
},
{
brand: 'palit',
model: 'gaming pro oc',
series: '3080',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/222470/geforce-rtx-3080-gamingpro-oc',
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3080',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/222467/geforce-rtx-3080-phoenix-gs',
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3090',
url:
'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/224771/evga-geforce-rtx-3090-xc3-ultra-24gb',
},
],
name: 'elkjop',
};
+1 -1
View File
@@ -8,7 +8,7 @@ export const Galaxus: Store = {
text: ['In den Warenkorb'], text: ['In den Warenkorb'],
}, },
maxPrice: { maxPrice: {
container: '.productDetail .Z1d7', container: '.productDetail .Z1c8',
euroFormat: true, euroFormat: true,
}, },
outOfStock: [ outOfStock: [
+581
View File
@@ -0,0 +1,581 @@
import {Store} from './store';
export const Globaldata: Store = {
currency: '€',
labels: {
inStock: {
container:
'body > main > div.main-container > div.container.mb-5 > div.row.align-items-lg-start.z-above-pattern > ck-product-cta-box > div > div.d-flex.mt-4 > div.w-100 > ck-addto-cart-wrapper > form > div > div.w-100.pl-3 > button > span',
text: ['Adicionar ao carrinho'],
},
outOfStock: {
container:
'body > main > div.main-container > div.container.mb-5 > div.row.align-items-lg-start.z-above-pattern > ck-product-cta-box > div > div.d-flex.mt-4 > div.w-100 > button',
text: ['Notifique-me quando estiver em stock'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.globaldata.pt/drive-externa-dvdr-asus-sdrw-08d2s-u-lite-8x-branco-usb-20-90-dq0436-ua221kz',
},
{
brand: 'asus',
model: 'ekwb',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3070-gaming-oc-8gb-gd6-gv-n3070gam-oc-8g',
},
{
brand: 'asus',
model: 'ekwb',
series: '3080',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3080-ek-10gd6x-90yv0f60-m0nm00',
},
{
brand: 'asus',
model: 'strix oc',
series: '3080',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3080-rog-strix-oc-10gd6x-90yv0fa1-m0nm00',
},
{
brand: 'asus',
model: 'strix oc white',
series: '3080',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3080-rog-strix-oc-white-10gd6x-90yv0fa5-m0nm00',
},
{
brand: 'asus',
model: 'strix white',
series: '3080',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3080-rog-strix-white-10gd6x-90yv0fa6-m0nm00',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3080-tuf-gaming-10gd6x-90yv0fb0-m0nm00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3080-tuf-gaming-oc-10gd6x-90yv0fb1-m0nm00',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3080-aorus-master-10gb-gd6x-gvn3080aorusm',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3080-aorus-master-oc-10gb-gd6x-gvn3080am-00-10',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3080-aorus-xtreme-10gb-gd6x-gvn3080ax-00-10',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3080-eagle-10gb-gd6x-gv-n3080eagle-10gd',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3080-eagle-oc-10gb-gd6x-gvn3080eagleoc10gd',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3080-gaming-oc-10gb-gd6x-gvn3080gamingoc10g',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3080-vision-oc-10gb-gd6x-gvn3080visoc-10',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3080-gaming-x-trio-10g-4719072762544',
},
{
brand: 'msi',
model: 'suprim x',
series: '3080',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3080-suprim-x-10g-4719072762537',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3080-ventus-3x-10g-oc-4719072762520',
},
{
brand: 'zotac',
model: 'amp extreme holo',
series: '3080',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3080-amp-extreme-holo-10gb-gd6x-zt-a30800b-10p',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3080',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3080-amp-holo-10gb-gd6x-zt-a30800f-10p',
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3080-trinity-10gb-gd6x-zt-a30800d-10p',
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3080-trinity-oc-10gb-gd6x-zt-a30800j-10p',
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-dual-8gb-gd6-90yv0fq1-m0na00',
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-dual-oc-8gb-gd6-90yv0fq0-m0na00',
},
{
brand: 'asus',
model: 'ekwb',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-ek-8gb-gd6-90yv0fu0-m0na00',
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-rog-strix-8gb-gd6-90yv0fr0-m0na00',
},
{
brand: 'asus',
model: 'strix oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-rog-strix-oc-8gb-gd6-90yv0fr1-m0na00',
},
{
brand: 'asus',
model: 'strix oc white',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-rog-strix-oc-white-8gb-gd6-90yv0fr5-m0na00',
},
{
brand: 'asus',
model: 'strix white',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-rog-strix-white-8gb-gd6-90yv0fr6-m0na00',
},
{
brand: 'asus',
model: 'tuf',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-tuf-gaming-8gb-gd6-90yv0fq7-m0na00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3070-tuf-gaming-oc-8gb-gd6-90yv0fq6-m0na00',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3070',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3070-aorus-master-8gb-gd6-gvn3070am-00-11',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3070',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3070-eagle-8gb-gd6-gvn3070e-00-10',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3070-eagle-oc-8gb-gd6-gvn3070eo-00-10',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3070-gaming-oc-8gb-gd6-gv-n3070gam-oc-8g',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3070-vision-oc-8gb-gd6-gvn3070vo-00-10',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3070-gaming-x-trio-8g-912-v390-006',
},
{
brand: 'msi',
model: 'suprim x',
series: '3070',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3070-suprim-x-8g-4719072763046',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3070',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3070-ventus-2x-oc-8g-912-v390-008',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3070-ventus-3x-oc-8g-912-v390-007',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3070',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3070-amp-holo-8gb-gd6-zt-a30700f-10p',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3070-twin-edge-8gb-gd6-zt-a30700e-10p',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3070',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3070-twin-edge-oc-8gb-gd6-zt-a30700h-10p',
},
{
brand: 'zotac',
model: 'twin edge oc white',
series: '3070',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3070-twin-edge-white-oc-8gb-gd6-zt-a30700j-10p',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3060-ti-aorus-master-8gb-gd6-gvn306tam-00-10',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3060-ti-eagle-8gb-gd6-gvn306te-00-10',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3060-ti-eagle-oc-8gb-gd6-gvn306teo-00-10',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3060-ti-gaming-oc-8gb-gd6-gvn306tgo-00-10',
},
{
brand: 'gigabyte',
model: 'gaming oc pro',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3060-ti-gaming-oc-pro-8gb-gd6-gvn306tgop-00-10',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-ti-ventus-3x-oc-8g-4719072763152',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-ti-gaming-x-trio-8g-912-v390-053',
},
{
brand: 'asus',
model: 'strix',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-ti-rog-strix-8gb-gd6-90yv0g00-m0na00',
},
{
brand: 'asus',
model: 'dual',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-ti-dual-8gb-gd6-90yv0g13-m0na00',
},
{
brand: 'asus',
model: 'dual oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-ti-dual-oc-8gb-gd6-90yv0g12-m0na00',
},
{
brand: 'asus',
model: 'tuf',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-ti-tuf-gaming-8gb-gd6-90yv0g11-m0na00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-ti-tuf-gaming-oc-8gb-gd6-90yv0g10-m0na00',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-ti-rog-strix-oc-8gb-gd6-90yv0g02-m0na00',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3060-ti-twin-edge-8gb-gd6-zt-a30610e-10m',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3060-ti-twin-edge-oc-8gb-gd6-zt-a30610h-10m',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-ti-ventus-2x-ocv1-8g-912-v397-003',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3060-ti-vision-oc-8gb-gd6-gv-n306tvisoc-8gd',
},
{
brand: 'asus',
model: 'strix',
series: '3060',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-rog-strix-12gb-gd6-90yv0gc4-m0na00',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-rog-strix-oc-12gb-gd6-90yv0gc2-m0na00',
},
{
brand: 'asus',
model: 'tuf',
series: '3060',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-tuf-gaming-12gb-gd6-90yv0gc1-m0na00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-tuf-gaming-oc-12gb-gd6-90yv0gc0-m0na00',
},
{
brand: 'asus',
model: 'dual mini oc',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-asus-geforce-rtx-3060-ti-dual-mini-oc-8gb-gd6-90yv0ft0-m0na00',
},
{
brand: 'msi',
model: 'gaming x',
series: '3060ti',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-ti-gaming-x-8g-4719072781767',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3060',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3060-twin-edge-12gb-gd6-zt-a30600e-10m',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3060',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3060-amp-edition-white-12gb-gd6-zt-a30600f-10p',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060',
url:
'https://www.globaldata.pt/grafica-zotac-geforce-rtx-3060-twin-edge-oc-12gb-gd6-zt-a30600h-10m',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-gaming-x-trio-12g-912-v390-081',
},
{
brand: 'msi',
model: 'gaming x',
series: '3060',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-gaming-x-12g-912-v397-037',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3060',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-ventus-2x-12g-oc-912-v397-039',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060',
url:
'https://www.globaldata.pt/grafica-gigabyte-geforce-rtx-3060-gaming-oc-12gb-gd6-gvn3060go-00-10',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3060',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-ventus-3x-12g-oc-912-v397-038',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3060',
url:
'https://www.globaldata.pt/grafica-msi-geforce-rtx-3060-ventus-2x-12g-4719072803407',
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.globaldata.pt/processador-amd-ryzen-5-5600x-6-core-37ghz-46ghz-35mb-am4-100-100000065box',
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.globaldata.pt/processador-amd-ryzen-7-5800x-8-core-38ghz-47ghz-36mb-am4-100-100000063wof',
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url:
'https://www.globaldata.pt/processador-amd-ryzen-9-5900x-12-core-37ghz-48ghz-70mb-am4-100-100000061wof',
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url:
'https://www.globaldata.pt/processador-amd-ryzen-9-5950x-16-core-34ghz-49ghz-72mb-am4-100-100000059wof',
},
],
name: 'globaldata',
waitUntil: 'domcontentloaded',
};
-192
View File
@@ -1,192 +0,0 @@
import {NvidiaRegionInfo, regionInfos} from '../nvidia-api';
import {usingPage, usingResponse} from '../../../util';
import {Browser} from 'puppeteer';
import {config} from '../../../config';
import {logger} from '../../../logger';
import open from 'open';
interface NvidiaSessionTokenJSON {
session_token: string;
}
interface NvidiaAddToCardJSON {
location: string;
}
export class NvidiaCart {
protected readonly browser: Browser;
protected isKeepAlive = false;
protected sessionToken: string | null = null;
public constructor(browser: Browser) {
this.browser = browser;
}
public keepAlive() {
if (this.isKeepAlive) {
return;
}
const callback = async () => {
if (!this.isKeepAlive) {
return;
}
await this.refreshSessionToken();
setTimeout(callback, config.nvidia.sessionTtl);
};
this.isKeepAlive = true;
void callback();
}
public get fallbackCartUrl(): string {
return `https://www.nvidia.com/${this.regionInfo.siteLocale}/geforce/`;
}
public get regionInfo(): NvidiaRegionInfo {
const country = config.store.country.toLowerCase();
const regionInfo = regionInfos.get(country);
if (!regionInfo) {
throw new Error(`Unknown country ${country}`);
}
return regionInfo;
}
public get sessionUrl(): string {
return `https://store.nvidia.com/store/nvidia/SessionToken?format=json&locale=${this.regionInfo.drLocale}`;
}
public async addToCard(productId: number, name: string): Promise<string> {
let cartUrl: string | undefined;
logger.info(`🚀🚀🚀 [nvidia] ${name}, starting auto add to cart 🚀🚀🚀`);
try {
logger.info(`🚀🚀🚀 [nvidia] ${name}, adding to cart 🚀🚀🚀`);
let lastError: Error | string | undefined;
/* eslint-disable no-await-in-loop */
for (let i = 0; i < config.nvidia.addToCardAttempts; i++) {
try {
cartUrl = await this.addToCartAndGetLocationRedirect(productId);
break;
} catch (error: unknown) {
logger.error(
`✖ [nvidia] ${name} could not automatically add to cart, attempt ${
i + 1
} of ${config.nvidia.addToCardAttempts}`,
error
);
logger.debug(error);
lastError = error as Error;
}
}
/* eslint-enable no-await-in-loop */
if (!cartUrl) {
// eslint-disable-next-line @typescript-eslint/no-throw-literal
throw lastError;
}
logger.info(`🚀🚀🚀 [nvidia] ${name}, opening checkout page 🚀🚀🚀`);
logger.info(cartUrl);
await open(cartUrl);
} catch (error: unknown) {
logger.error(
`✖ [nvidia] ${name} could not automatically add to cart, opening page`,
error
);
cartUrl = this.fallbackCartUrl;
await open(cartUrl);
}
return cartUrl;
}
public async getSessionToken(): Promise<string> {
if (!this.sessionToken) {
await this.refreshSessionToken();
}
if (!this.sessionToken) {
throw new Error('Failed to create the session_token.');
}
return this.sessionToken;
}
public async refreshSessionToken(): Promise<void> {
logger.debug(' [nvidia] refreshing session token');
try {
const result = await usingResponse(
this.browser,
this.sessionUrl,
async response => {
return response?.json() as NvidiaSessionTokenJSON | undefined;
}
);
if (
typeof result !== 'object' ||
result === null ||
!('session_token' in result)
) {
throw new Error('malformed response');
}
this.sessionToken = result.session_token;
logger.debug(` [nvidia] session_token=${result.session_token}`);
} catch (error: unknown) {
const message: string =
typeof error === 'object'
? (error as Error).message
: (error as string);
logger.error(`✖ [nvidia] ${message}`);
}
}
protected async addToCartAndGetLocationRedirect(
productId: number
): Promise<string> {
const url = 'https://api-prod.nvidia.com/direct-sales-shop/DR/add-to-cart';
const sessionToken = await this.getSessionToken();
logger.info(` [nvidia] session_token=${sessionToken}`);
const locationData = await usingPage(this.browser, async page => {
page.removeAllListeners('request');
await page.setRequestInterception(true);
page.on('request', interceptedRequest => {
void interceptedRequest.continue({
headers: {
...interceptedRequest.headers(),
'content-type': 'application/json',
nvidia_shop_id: sessionToken,
},
method: 'POST',
postData: JSON.stringify({
products: [{productId, quantity: 1}],
}),
});
});
const response = await page.goto(url, {waitUntil: 'networkidle0'});
if (response === null) {
throw new Error('NvidiaAddToCartUnavailable');
}
return response.json() as Promise<NvidiaAddToCardJSON>;
});
return locationData.location;
}
}
-103
View File
@@ -1,103 +0,0 @@
import {NvidiaRegionInfo, regionInfos} from '../nvidia-api';
import {Browser} from 'puppeteer';
import {Link} from '../store';
import {NvidiaCart} from './nvidia-cart';
import {config} from '../../../config';
import {timestampUrlParameter} from '../../timestamp-url-parameter';
function getRegionInfo(): NvidiaRegionInfo {
let country = config.store.country.toLowerCase();
if (!regionInfos.has(country)) {
country = 'usa';
}
const regionInfo = regionInfos.get(country);
if (!regionInfo) {
throw new Error(
`LogicException could not retrieve region info for ${country}`
);
}
return regionInfo;
}
function nvidiaStockUrl(
id: number,
drLocale: string,
currency: string
): string {
return (
`https://api-prod.nvidia.com/direct-sales-shop/DR/products/${drLocale}/${currency}/${id}?` +
timestampUrlParameter().slice(1)
);
}
let cart: NvidiaCart;
export function generateSetupAction() {
return async (browser: Browser) => {
cart = new NvidiaCart(browser);
if (config.browser.open) {
cart.keepAlive();
}
};
}
export function generateOpenCartAction(id: number, cardName: string) {
return async () => {
const url = await cart.addToCard(id, cardName);
return url;
};
}
export function generateLinks(): Link[] {
const {
drLocale,
fe3080Id,
fe3090Id,
fe2060SuperId,
currency,
} = getRegionInfo();
const links: Link[] = [];
if (fe2060SuperId) {
links.push({
brand: 'test:brand',
model: 'test:model',
openCartAction: generateOpenCartAction(fe2060SuperId, 'TEST CARD debug'),
series: 'test:series',
url: nvidiaStockUrl(fe2060SuperId, drLocale, currency),
});
}
if (fe3080Id) {
links.push({
brand: 'nvidia',
model: 'founders edition',
openCartAction: generateOpenCartAction(
fe3080Id,
'nvidia founders edition 3080'
),
series: '3080',
url: nvidiaStockUrl(fe3080Id, drLocale, currency),
});
}
if (fe3090Id) {
links.push({
brand: 'nvidia',
model: 'founders edition',
openCartAction: generateOpenCartAction(
fe3090Id,
'nvidia founders edition 3090'
),
series: '3090',
url: nvidiaStockUrl(fe3090Id, drLocale, currency),
});
}
return links;
}
+39 -18
View File
@@ -1,5 +1,6 @@
import {config, defaultStoreData} from '../../config'; import {config, defaultStoreData} from '../../config';
import {AComPC} from './acompc'; import {AComPC} from './acompc';
import {Ldlc} from './ldlc';
import {Adorama} from './adorama'; import {Adorama} from './adorama';
import {Akinformatica} from './akinformatica'; import {Akinformatica} from './akinformatica';
import {Allneeds} from './allneeds'; import {Allneeds} from './allneeds';
@@ -45,14 +46,17 @@ import {Computeruniverse} from './computeruniverse';
import {Coolblue} from './coolblue'; import {Coolblue} from './coolblue';
import {Coolmod} from './coolmod'; import {Coolmod} from './coolmod';
import {Corsair} from './corsair'; import {Corsair} from './corsair';
import {CorsairUK} from './corsair-uk';
import {Cpl} from './cpl'; import {Cpl} from './cpl';
import {Currys} from './currys'; import {Currys} from './currys';
import {Cyberport} from './cyberport'; import {Cyberport} from './cyberport';
import {Dcomp} from './dcomp'; import {Dcomp} from './dcomp';
import {Drako} from './drako'; import {Drako} from './drako';
import {DustinHomeNO} from './dustinhome-no';
import {EbGames} from './ebgames'; import {EbGames} from './ebgames';
import {Ebuyer} from './ebuyer'; import {Ebuyer} from './ebuyer';
import {Elcorteingles} from './elcorteingles'; import {Elcorteingles} from './elcorteingles';
import {Elkjop} from './elkjop';
import {Eprice} from './eprice'; import {Eprice} from './eprice';
import {Equippr} from './equippr'; import {Equippr} from './equippr';
import {Euronics} from './euronics'; import {Euronics} from './euronics';
@@ -68,12 +72,14 @@ import {Gamestop} from './gamestop';
import {GamestopDE} from './gamestop-de'; import {GamestopDE} from './gamestop-de';
import {GamestopIE} from './gamestop-ie'; import {GamestopIE} from './gamestop-ie';
import {GamestopIT} from './gamestop-it'; import {GamestopIT} from './gamestop-it';
import {Globaldata} from './globaldata';
import {HardwarePlanet} from './hardware-planet'; import {HardwarePlanet} from './hardware-planet';
import {HarrisTechnology} from './harristechnology'; import {HarrisTechnology} from './harristechnology';
import {HarveyNormanIE} from './harveynorman-ie'; import {HarveyNormanIE} from './harveynorman-ie';
import {Igamecomputer} from './igame'; import {Igamecomputer} from './igame';
import {JohnLewis} from './johnlewis'; import {JohnLewis} from './johnlewis';
import {Kabum} from './kabum'; import {Kabum} from './kabum';
import {KomplettNO} from './komplett-no';
import {LandmarkComputers} from './lmc'; import {LandmarkComputers} from './lmc';
import {Mediamarkt} from './mediamarkt'; import {Mediamarkt} from './mediamarkt';
import {Medimax} from './medimax'; import {Medimax} from './medimax';
@@ -83,26 +89,33 @@ import {MicroCenter} from './microcenter';
import {Mindfactory} from './mindfactory'; import {Mindfactory} from './mindfactory';
import {Msy} from './msy'; import {Msy} from './msy';
import {Mwave} from './mwave'; import {Mwave} from './mwave';
import {NetonnetNO} from './netonnet-no';
import {Newegg} from './newegg'; import {Newegg} from './newegg';
import {NeweggCa} from './newegg-ca'; import {NeweggCa} from './newegg-ca';
import {NeweggSg} from './newegg-sg'; import {NeweggSg} from './newegg-sg';
import {Notebooksbilliger} from './notebooksbilliger'; import {Notebooksbilliger} from './notebooksbilliger';
import {Novatech} from './novatech'; import {Novatech} from './novatech';
import {Nvidia} from './nvidia'; import {NovoAtalho} from './novoatalho';
import {NvidiaApi} from './nvidia-api'; import {NvidiaDE} from './nvidia-de';
import {NvidiaES} from './nvidia-es';
import {NvidiaFR} from './nvidia-fr';
import {NvidiaGB} from './nvidia-gb';
import {OfficeDepot} from './officedepot'; import {OfficeDepot} from './officedepot';
import {Ollo} from './ollo'; import {Ollo} from './ollo';
import {Otto} from './otto'; import {Otto} from './otto';
import {Overclockers} from './overclockers'; import {Overclockers} from './overclockers';
import {PBTech} from './pbtech'; import {PBTech} from './pbtech';
import {PCByte} from './pcbyte'; import {PCByte} from './pcbyte';
import {PCComponentes} from './pccomponentes';
import {PCKing} from './pcking';
import {Pccg} from './pccg'; import {Pccg} from './pccg';
import {PCComponentes} from './pccomponentes';
import {PCDiga} from './pcdiga';
import {PCKing} from './pcking';
import {PlayStation} from './playstation'; import {PlayStation} from './playstation';
import {Pny} from './pny'; import {Pny} from './pny';
import {PowerNO} from './power-no';
import {ProshopDE} from './proshop-de'; import {ProshopDE} from './proshop-de';
import {ProshopDK} from './proshop-dk'; import {ProshopDK} from './proshop-dk';
import {ProshopNO} from './proshop-no';
import {Rosman} from './rosman'; import {Rosman} from './rosman';
import {RosmanMelb} from './rosman-melb'; import {RosmanMelb} from './rosman-melb';
import {Saturn} from './saturn'; import {Saturn} from './saturn';
@@ -135,8 +148,8 @@ import {logger} from '../../logger';
export const storeList = new Map([ export const storeList = new Map([
[AComPC.name, AComPC], [AComPC.name, AComPC],
[Adorama.name, Adorama], [Adorama.name, Adorama],
[Allneeds.name, Allneeds],
[Akinformatica.name, Akinformatica], [Akinformatica.name, Akinformatica],
[Allneeds.name, Allneeds],
[Alternate.name, Alternate], [Alternate.name, Alternate],
[AlternateNL.name, AlternateNL], [AlternateNL.name, AlternateNL],
[Amazon.name, Amazon], [Amazon.name, Amazon],
@@ -145,10 +158,10 @@ export const storeList = new Map([
[AmazonDeWarehouse.name, AmazonDeWarehouse], [AmazonDeWarehouse.name, AmazonDeWarehouse],
[AmazonEs.name, AmazonEs], [AmazonEs.name, AmazonEs],
[AmazonFr.name, AmazonFr], [AmazonFr.name, AmazonFr],
[AmazonNl.name, AmazonNl],
[AmazonUk.name, AmazonUk],
[AmazonSg.name, AmazonSg],
[AmazonIt.name, AmazonIt], [AmazonIt.name, AmazonIt],
[AmazonNl.name, AmazonNl],
[AmazonSg.name, AmazonSg],
[AmazonUk.name, AmazonUk],
[Amd.name, Amd], [Amd.name, Amd],
[AmdCa.name, AmdCa], [AmdCa.name, AmdCa],
[AmdDe.name, AmdDe], [AmdDe.name, AmdDe],
@@ -169,8 +182,8 @@ export const storeList = new Map([
[Box.name, Box], [Box.name, Box],
[Bpctech.name, Bpctech], [Bpctech.name, Bpctech],
[BpmPower.name, BpmPower], [BpmPower.name, BpmPower],
[Caseking.name, Caseking],
[CanadaComputers.name, CanadaComputers], [CanadaComputers.name, CanadaComputers],
[Caseking.name, Caseking],
[Ccl.name, Ccl], [Ccl.name, Ccl],
[Centrecom.name, Centrecom], [Centrecom.name, Centrecom],
[Comet.name, Comet], [Comet.name, Comet],
@@ -179,14 +192,17 @@ export const storeList = new Map([
[Coolblue.name, Coolblue], [Coolblue.name, Coolblue],
[Coolmod.name, Coolmod], [Coolmod.name, Coolmod],
[Corsair.name, Corsair], [Corsair.name, Corsair],
[CorsairUK.name, CorsairUK],
[Cpl.name, Cpl], [Cpl.name, Cpl],
[Currys.name, Currys], [Currys.name, Currys],
[Cyberport.name, Cyberport], [Cyberport.name, Cyberport],
[Dcomp.name, Dcomp], [Dcomp.name, Dcomp],
[Drako.name, Drako], [Drako.name, Drako],
[DustinHomeNO.name, DustinHomeNO],
[EbGames.name, EbGames], [EbGames.name, EbGames],
[Ebuyer.name, Ebuyer], [Ebuyer.name, Ebuyer],
[Elcorteingles.name, Elcorteingles], [Elcorteingles.name, Elcorteingles],
[Elkjop.name, Elkjop],
[Eprice.name, Eprice], [Eprice.name, Eprice],
[Equippr.name, Equippr], [Equippr.name, Equippr],
[Euronics.name, Euronics], [Euronics.name, Euronics],
@@ -202,28 +218,35 @@ export const storeList = new Map([
[GamestopDE.name, GamestopDE], [GamestopDE.name, GamestopDE],
[GamestopIE.name, GamestopIE], [GamestopIE.name, GamestopIE],
[GamestopIT.name, GamestopIT], [GamestopIT.name, GamestopIT],
[Globaldata.name, Globaldata],
[HardwarePlanet.name, HardwarePlanet], [HardwarePlanet.name, HardwarePlanet],
[HarrisTechnology.name, HarrisTechnology], [HarrisTechnology.name, HarrisTechnology],
[HarveyNormanIE.name, HarveyNormanIE], [HarveyNormanIE.name, HarveyNormanIE],
[Igamecomputer.name, Igamecomputer], [Igamecomputer.name, Igamecomputer],
[JohnLewis.name, JohnLewis], [JohnLewis.name, JohnLewis],
[Kabum.name, Kabum], [Kabum.name, Kabum],
[KomplettNO.name, KomplettNO],
[LandmarkComputers.name, LandmarkComputers], [LandmarkComputers.name, LandmarkComputers],
[Mediamarkt.name, Mediamarkt], [Mediamarkt.name, Mediamarkt],
[Medimax.name, Medimax], [Medimax.name, Medimax],
[Megekko.name, Megekko], [Megekko.name, Megekko],
[Ldlc.name, Ldlc],
[MemoryExpress.name, MemoryExpress], [MemoryExpress.name, MemoryExpress],
[MicroCenter.name, MicroCenter], [MicroCenter.name, MicroCenter],
[Mindfactory.name, Mindfactory], [Mindfactory.name, Mindfactory],
[Msy.name, Msy], [Msy.name, Msy],
[Mwave.name, Mwave], [Mwave.name, Mwave],
[NetonnetNO.name, NetonnetNO],
[Newegg.name, Newegg], [Newegg.name, Newegg],
[NeweggCa.name, NeweggCa], [NeweggCa.name, NeweggCa],
[NeweggSg.name, NeweggSg], [NeweggSg.name, NeweggSg],
[Notebooksbilliger.name, Notebooksbilliger], [Notebooksbilliger.name, Notebooksbilliger],
[Novatech.name, Novatech], [Novatech.name, Novatech],
[Nvidia.name, Nvidia], [NovoAtalho.name, NovoAtalho],
[NvidiaApi.name, NvidiaApi], [NvidiaDE.name, NvidiaDE],
[NvidiaES.name, NvidiaES],
[NvidiaFR.name, NvidiaFR],
[NvidiaGB.name, NvidiaGB],
[OfficeDepot.name, OfficeDepot], [OfficeDepot.name, OfficeDepot],
[Ollo.name, Ollo], [Ollo.name, Ollo],
[Otto.name, Otto], [Otto.name, Otto],
@@ -231,12 +254,15 @@ export const storeList = new Map([
[PBTech.name, PBTech], [PBTech.name, PBTech],
[PCByte.name, PCByte], [PCByte.name, PCByte],
[Pccg.name, Pccg], [Pccg.name, Pccg],
[PCKing.name, PCKing],
[PCComponentes.name, PCComponentes], [PCComponentes.name, PCComponentes],
[PCDiga.name, PCDiga],
[PCKing.name, PCKing],
[PlayStation.name, PlayStation], [PlayStation.name, PlayStation],
[Pny.name, Pny], [Pny.name, Pny],
[PowerNO.name, PowerNO],
[ProshopDE.name, ProshopDE], [ProshopDE.name, ProshopDE],
[ProshopDK.name, ProshopDK], [ProshopDK.name, ProshopDK],
[ProshopNO.name, ProshopNO],
[Rosman.name, Rosman], [Rosman.name, Rosman],
[RosmanMelb.name, RosmanMelb], [RosmanMelb.name, RosmanMelb],
[Saturn.name, Saturn], [Saturn.name, Saturn],
@@ -244,8 +270,8 @@ export const storeList = new Map([
[Scan.name, Scan], [Scan.name, Scan],
[Scorptec.name, Scorptec], [Scorptec.name, Scorptec],
[ShopTo.name, ShopTo], [ShopTo.name, ShopTo],
[SmythsToysIE.name, SmythsToysIE],
[SmythsToys.name, SmythsToys], [SmythsToys.name, SmythsToys],
[SmythsToysIE.name, SmythsToysIE],
[Spielegrotte.name, Spielegrotte], [Spielegrotte.name, Spielegrotte],
[StormComputers.name, StormComputers], [StormComputers.name, StormComputers],
[Target.name, Target], [Target.name, Target],
@@ -324,11 +350,6 @@ function printConfig() {
function warnIfStoreDeprecated(store: Store) { function warnIfStoreDeprecated(store: Store) {
switch (store.name) { switch (store.name) {
case 'nvidia':
case 'nvidia-api':
if (config.store.country === 'usa')
logger.warn(`${store.name} is deprecated in favor of bestbuy`);
break;
case 'evga': case 'evga':
logger.warn( logger.warn(
`${store.name} is deprecated since they only support queuing` `${store.name} is deprecated since they only support queuing`
+261
View File
@@ -0,0 +1,261 @@
import {Store} from './store';
export const KomplettNO: Store = {
currency: 'kr.',
labels: {
inStock: {
container:
'#MainContent > div.no-bs-center.maincontent-container.container.main-body.ignore-gutter-xs.product-page-boxes > div.responsive-content-wrapper > div.product-page > section > div > section > div.product-main-info__body > div.product-main-info__buy-and-more > div.buy-button-section > div > div > div.product-main-info-buy-button > div.buy-button > button',
text: ['LEGG I HANDLEVOGN'],
},
outOfStock: {
container:
'#MainContent > div.no-bs-center.maincontent-container.container.main-body.ignore-gutter-xs.product-page-boxes > div.responsive-content-wrapper > div.product-page > section > div > section > div.product-main-info__body > div.product-main-info__buy-and-more > div.buy-button-section > div > div > div.subscribe-product-container > div > div > button',
text: ['MOTTA VARSEL'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.komplett.no/product/1168415/',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.komplett.no/product/1168380/',
},
{
brand: 'msi',
model: 'suprim x',
series: '3080',
url: 'https://www.komplett.no/product/1173669',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.komplett.no/product/1168379/',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url: 'https://www.komplett.no/product/1168439/',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.komplett.no/product/1168358/',
},
{
brand: 'asus',
model: 'strix oc',
series: '3080',
url: 'https://www.komplett.no/product/1168436/',
},
{
brand: 'asus',
model: 'strix oc',
series: '3080',
url: 'https://www.komplett.no/product/1176247/',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.komplett.no/product/1168419',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.komplett.no/product/1171562',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.komplett.no/product/1168418',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3080',
url: 'https://www.komplett.no/product/1175718',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.komplett.no/product/1168415',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://www.komplett.no/product/1168416',
},
{
brand: 'gainward',
model: 'phantom gs',
series: '3080',
url: 'https://www.komplett.no/product/1171801',
},
{
brand: 'gainward',
model: 'phantom gs',
series: '3080',
url: 'https://www.komplett.no/product/1171798',
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3080',
url: 'https://www.komplett.no/product/1168422',
},
{
brand: 'gainward',
model: 'phoenix',
series: '3080',
url: 'https://www.komplett.no/product/1168129',
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.komplett.no/product/1168398',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3080',
url: 'https://www.komplett.no/product/1170425',
},
{
brand: 'palit',
model: 'gaming pro',
series: '3080',
url: 'https://www.komplett.no/product/1168128',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.komplett.no/product/1168378/',
},
{
brand: 'msi',
model: 'suprim x',
series: '3090',
url: 'https://www.komplett.no/product/1173670',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.komplett.no/product/1168381/',
},
{
brand: 'asus',
model: 'ekwb',
series: '3090',
url: 'https://www.komplett.no/product/1174234',
},
{
brand: 'asus',
model: 'strix oc white',
series: '3090',
url: 'https://www.komplett.no/product/1176245',
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.komplett.no/product/1168359',
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url: 'https://www.komplett.no/product/1168438',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url: 'https://www.komplett.no/product/1168490',
},
{
brand: 'asus',
model: 'strix',
series: '3090',
url: 'https://www.komplett.no/product/1168437',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url: 'https://www.komplett.no/product/1168414',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3090',
url: 'https://www.komplett.no/product/1173940',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3090',
url: 'https://www.komplett.no/product/1168417',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url: 'https://www.komplett.no/product/1168412',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3090',
url: 'https://www.komplett.no/product/1168413',
},
{
brand: 'gigabyte',
model: 'turbo',
series: '3090',
url: 'https://www.komplett.no/product/1171270',
},
{
brand: 'palit',
model: 'gamerock oc',
series: '3090',
url: 'https://www.komplett.no/product/1171795',
},
{
brand: 'palit',
model: 'gamerock',
series: '3090',
url: 'https://www.komplett.no/product/1171802',
},
{
brand: 'palit',
model: 'gaming pro',
series: '3090',
url: 'https://www.komplett.no/product/1168127',
},
{
brand: 'asus',
model: 'ekwb',
series: '3070',
url: 'https://www.komplett.no/product/1174234',
},
],
name: 'komplett-no',
};
+250
View File
@@ -0,0 +1,250 @@
import {Store} from './store';
export const Ldlc: Store = {
currency: '€',
labels: {
inStock: {
container: '.stock',
text: ['stock'],
},
maxPrice: {
container: '.price .price',
euroFormat: true,
},
outOfStock: {
container: '.stock',
text: ['rupture'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.ldlc.com/fr-be/fiche/PB00317660.html',
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369303.html',
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369299.html',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369299.html',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369299.html',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369072.html',
},
{
brand: 'gigabyte',
model: 'aorus',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00376208.html',
},
{
brand: 'inno3d',
model: 'twin x2',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368690.html',
},
{
brand: 'palit',
model: 'gaming pro',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369094.html',
},
{
brand: 'gainward',
model: 'phoenix',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369150.html',
},
{
brand: 'evga',
model: 'xc3 black',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369298.html',
},
{
brand: 'palit',
model: 'gamerock',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00386334.html',
},
{
brand: 'kfa2',
model: 'sg',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00396037.html',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00375625.html',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368844.html',
},
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368506.html',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00390466.html',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368789.html',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00398370.html',
},
{
brand: 'msi',
model: 'suprim x',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00391682.html',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00376207.html',
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368691.html',
},
{
brand: 'gainward',
model: 'phoenix gs',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369158.html',
},
{
brand: 'evga',
model: 'xc3',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369268.html',
},
{
brand: 'inno3d',
model: 'ichill frostbite',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00391624.html',
},
{
brand: 'evga',
model: 'ftw3 ultra hybrid',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00398046.html',
},
{
brand: 'kfa2',
model: 'sg',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368931.html',
},
{
brand: 'palit',
model: 'gaming pro',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00375448.html',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00375431.html',
},
{
brand: 'evga',
model: 'ftw3',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00369265.html',
},
{
brand: 'gainward',
model: 'phantom gs',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00390727.html',
},
{
brand: 'evga',
model: 'xc3 ultra hybrid',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00398045.html',
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368692.html',
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00368579.html',
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00375644.html',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00385535.html',
},
{
brand: 'palit',
model: 'gamerock',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00386332.html',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce wb',
series: '3080',
url: 'https://www.ldlc.com/fr-be/fiche/PB00398373.html',
},
],
name: 'ldlc',
};
+12
View File
@@ -42,6 +42,18 @@ export const Mediamarkt: Store = {
series: 'test:series', series: 'test:series',
url: 'https://www.mediamarkt.de/de/product/-2641856.html', url: 'https://www.mediamarkt.de/de/product/-2641856.html',
}, },
{
brand: 'inno3d',
model: 'ichill x3',
series: '3060',
url: 'https://www.mediamarkt.de/de/product/-2718593.html',
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3060',
url: 'https://www.mediamarkt.de/de/product/-2718594.html',
},
{ {
brand: 'asus', brand: 'asus',
model: 'dual', model: 'dual',
+48
View File
@@ -21,6 +21,54 @@ export const MemoryExpress: Store = {
series: 'test:series', series: 'test:series',
url: 'https://www.memoryexpress.com/Products/MX79473', url: 'https://www.memoryexpress.com/Products/MX79473',
}, },
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116063',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116071',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116072',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116154',
},
{
brand: 'evga',
model: 'xc gaming',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116013',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116016',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116017',
},
{
brand: 'msi',
model: 'gaming x',
series: '3060',
url: 'https://www.memoryexpress.com/Products/MX00116164',
},
{ {
brand: 'msi', brand: 'msi',
model: 'gaming x trio', model: 'gaming x trio',
+61 -1
View File
@@ -168,6 +168,66 @@ for (const microCenterLocation of microCenterLocations) {
series: '3060ti', series: '3060ti',
url: `https://www.microcenter.com/product/631744/gigabyte-geforce-rtx-3060ti-ti-eagle-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, url: `https://www.microcenter.com/product/631744/gigabyte-geforce-rtx-3060ti-ti-eagle-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
}, },
{
brand: 'asus',
model: 'tuf',
series: '3060',
url: `https://www.microcenter.com/product/633747/asus-nvidia-geforce-rtx-3060-tuf-gaming-overclocked-triple-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'msi',
model: 'gaming x',
series: '3060',
url: `https://www.microcenter.com/product/633838/msi-nvidia-geforce-rtx-3060-gaming-x-overclocked-dual-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3060',
url: `https://www.microcenter.com/product/633839/msi-nvidia-geforce-rtx-3060-ventus-3x-overclocked-triple-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3060',
url: `https://www.microcenter.com/product/633840/msi-nvidia-geforce-rtx-3060-ventus-2x-overclocked-dual-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'gigabyte',
model: 'vision',
series: '3060',
url: `https://www.microcenter.com/product/634291/gigabyte-nvidia-geforce-rtx-3060-vision-overclocked-triple-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'asus',
model: 'strix',
series: '3060',
url: `https://www.microcenter.com/product/633746/asus-nvidia-geforce-rtx-3060-rog-strix-overclocked-triple-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060',
url: `https://www.microcenter.com/product/633837/msi-nvidia-geforce-rtx-3060-gaming-x-trio-overclocked-triple-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060',
url: `https://www.microcenter.com/product/634290/gigabyte-nvidia-geforce-rtx-3060-gaming-overclocked-triple-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060',
url: `https://www.microcenter.com/product/633835/zotac-nvidia-geforce-rtx-3060-twin-edge-overclocked-dual-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{
brand: 'evga',
model: 'gaming',
series: '3060',
url: `https://www.microcenter.com/product/634181/evga-nvidia-geforce-rtx-3060-xc-gaming-dual-fan-12gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`,
},
{ {
brand: 'amd', brand: 'amd',
model: '5600x', model: '5600x',
@@ -218,7 +278,7 @@ export const MicroCenter: Store = {
currency: '$', currency: '$',
labels: { labels: {
inStock: { inStock: {
container: '#cart-options', container: '#pnlInventory',
text: ['in stock'], text: ['in stock'],
}, },
maxPrice: { maxPrice: {
+158
View File
@@ -0,0 +1,158 @@
import {Store} from './store';
export const NetonnetNO: Store = {
currency: 'kr.',
labels: {
inStock: {
container: '#productPurchaseBoxContainer > div > button',
text: ['Legg i handlevogn'],
},
outOfStock: {
container: '#productPurchaseBoxContainer > div > button',
text: ['Overvåk produktet'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/kfa2-geforce-rtx-3090-hall-of-fame/1016867.11111/',
},
{
brand: 'asus',
model: 'tuf',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3060ti-tuf-gaming-8gb/1015570.11111/',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3060ti-tuf-gaming-oc-8gb/1015565.11111/',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3060-ti-rog-strix-gaming-oc-8gb/1016449.11111/',
},
{
brand: 'asus',
model: 'dual',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3060ti-dual-oc-8gb/1015673.11111/',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/msi-geforce-rtx-3060-ti-gaming-x-trio/1015906.11111/',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3060-ti-eagle-8g/1015575.11111/',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3060-ti-eagle-oc-8g/1015576.11111/',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3060-ti-aorus-master/1015582.11111/',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3060-ti-gaming-oc-8gb/1015578.11111/',
},
{
brand: 'gigabyte',
model: 'gaming pro oc',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3060ti-gaming-pro-oc/1016888.11111/',
},
{
brand: 'kfa2',
model: 'sg',
series: '3060ti',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3060ti-gaming-pro-oc/1016888.11111/',
},
{
brand: 'asus',
model: 'strix oc',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3080-rog-strix-gaming-oc-white-10gb/1015992.11111/',
},
{
brand: 'asus',
model: 'strix white',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3080-rog-strix-gaming-oc-10gb/1016281.11111/',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3080-tuf-gaming-10g/1014354.11111/',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3080-tuf-gaming-oc-10gb/1015670.11111/',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3080-rog-strix-gaming-10g/1014394.11111/',
},
{
brand: 'gigabyte',
model: 'gaming',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3080-gaming-oc-10g/1014380.11111/',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3080-eagle-oc-10g/1014382.11111/',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url:
'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3080-aorus-xtream-10gb/1015517.11111/',
},
],
name: 'netonnet-no',
};
+204
View File
@@ -35,6 +35,126 @@ export const NeweggCa: Store = {
url: url:
'https://www.newegg.ca/p/N82E16824475043?Item=N82E16824475043&cm_sp=Homepage_MKPL-_-P3_24-475-043-_-12302020', 'https://www.newegg.ca/p/N82E16824475043?Item=N82E16824475043&cm_sp=Homepage_MKPL-_-P3_24-475-043-_-12302020',
}, },
{
brand: 'gigabyte',
itemNumber: '14-932-399',
model: 'eagle',
series: '3060',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3060-gv-n3060eagle-12gd/p/N82E16814932399',
},
{
brand: 'gigabyte',
itemNumber: '14-932-402',
model: 'gaming oc',
series: '3060',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3060-gv-n3060gaming-oc-12gd/p/N82E16814932402',
},
{
brand: 'msi',
itemNumber: '14-137-630',
model: 'gaming x',
series: '3060',
url:
'https://www.newegg.ca/msi-geforce-rtx-3060-rtx-3060-gaming-x-12g/p/N82E16814137630',
},
{
brand: 'asus',
itemNumber: '14-126-493',
model: 'dual',
series: '3060',
url:
'https://www.newegg.ca/asus-geforce-rtx-3060-dual-rtx3060-12g/p/N82E16814126493',
},
{
brand: 'asus',
itemNumber: '14-126-491',
model: 'tuf',
series: '3060',
url:
'https://www.newegg.ca/asus-geforce-rtx-3060-tuf-rtx3060-o12g-gaming/p/N82E16814126491',
},
{
brand: 'asus',
itemNumber: '14-126-492',
model: 'strix',
series: '3060',
url:
'https://www.newegg.ca/asus-geforce-rtx-3060-rog-strix-rtx3060-o12g-gaming/p/N82E16814126492',
},
{
brand: 'zotac',
itemNumber: '14-500-509',
model: 'twin edge',
series: '3060',
url:
'https://www.newegg.ca/zotac-geforce-rtx-3060-zt-a30600e-10m/p/N82E16814500509',
},
{
brand: 'evga',
itemNumber: '14-487-538',
model: 'xc black',
series: '3060',
url:
'https://www.newegg.ca/evga-geforce-rtx-3060-12g-p5-3655-kr/p/N82E16814487538',
},
{
brand: 'zotac',
itemNumber: '14-500-508',
model: 'twin edge oc',
series: '3060',
url:
'https://www.newegg.ca/zotac-geforce-rtx-3060-zt-a30600h-10m/p/N82E16814500508',
},
{
brand: 'evga',
itemNumber: '14-487-539',
model: 'xc gaming',
series: '3060',
url:
'https://www.newegg.ca/evga-geforce-rtx-3060-12g-p5-3657-kr/p/N82E16814487539',
},
{
brand: 'gigabyte',
itemNumber: '14-932-400',
model: 'aorus',
series: '3060',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3060-gv-n3060aorus-e-12gd/p/N82E16814932400',
},
{
brand: 'msi',
itemNumber: '14-137-638',
model: 'ventus 2x',
series: '3060',
url:
'https://www.newegg.ca/msi-geforce-rtx-3060-rtx-3060-ventus-2x-12g/p/N82E16814137638',
},
{
brand: 'msi',
itemNumber: '14-137-632',
model: 'ventus 2x',
series: '3060',
url:
'https://www.newegg.ca/msi-geforce-rtx-3060-rtx-3060-ventus-2x-12g-oc/p/N82E16814137632',
},
{
brand: 'msi',
itemNumber: '14-137-631',
model: 'ventus 3x oc',
series: '3060',
url:
'https://www.newegg.ca/msi-geforce-rtx-3060-rtx-3060-ventus-3x-12g-oc/p/N82E16814137631',
},
{
brand: 'msi',
itemNumber: '14-137-629',
model: 'gaming x trio',
series: '3060',
url:
'https://www.newegg.ca/msi-geforce-rtx-3060-rtx-3060-gaming-x-trio-12g/p/N82E16814137629',
},
{ {
brand: 'asus', brand: 'asus',
itemNumber: '14-126-453', itemNumber: '14-126-453',
@@ -617,6 +737,90 @@ export const NeweggCa: Store = {
url: url:
'https://www.newegg.ca/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507', 'https://www.newegg.ca/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507',
}, },
{
brand: 'asus',
model: 'dual',
series: '3060ti',
url:
'https://www.newegg.ca/asus-geforce-rtx-3060-ti-dual-rtx3060ti-8g/p/N82E16814126480',
},
{
brand: 'msi',
model: 'suprim',
series: '3070',
url:
'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-suprim-8g/p/N82E16814137623',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce',
series: '3080',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080aorusx-w-10gd/p/N82E16814932372',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce wb',
series: '3080',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080aorusx-wb-10gd/p/N82E16814932371',
},
{
brand: 'asus',
model: 'strix white',
series: '3080',
url:
'https://www.newegg.ca/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-white/p/N82E16814126483',
},
{
brand: 'asus',
model: 'ekwb',
series: '3090',
url:
'https://www.newegg.ca/asus-geforce-rtx-3090-rtx3090-24g-ek/p/N82E16814126485',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce',
series: '3090',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090aorusx-w-24gd/p/N82E16814932387',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce wb',
series: '3090',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090aorusx-wb-24gd/p/N82E16814932386',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3090',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090aorus-x-24gd/p/N82E16814932340',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3090',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090vision-oc-24gd/p/N82E16814932365',
},
{
brand: 'asus',
model: 'strix white',
series: '3090',
url:
'https://www.newegg.ca/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-white/p/N82E16814126482',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3090',
url:
'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090eagle-24gd/p/N82E16814932366',
},
{ {
brand: 'amd', brand: 'amd',
itemNumber: '19-113-663', itemNumber: '19-113-663',
+171
View File
@@ -1040,6 +1040,177 @@ export const NeweggSg: Store = {
url: url:
'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474', 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474',
}, },
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126480',
model: 'dual',
series: '3060ti',
url:
'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-dual-rtx3060ti-8g/p/N82E16814126480',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137620',
model: 'suprim x',
series: '3070',
url:
'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-suprim-x-8g/p/N82E16814137620',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137623',
model: 'suprim',
series: '3070',
url:
'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-suprim-8g/p/N82E16814137623',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932345',
model: 'aorus xtreme',
series: '3080',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080aorus-x-10gd/p/N82E16814932345',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932372',
model: 'aorus xtreme waterforce',
series: '3080',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080aorusx-w-10gd/p/N82E16814932372',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932371',
model: 'aorus xtreme waterforce wb',
series: '3080',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080aorusx-wb-10gd/p/N82E16814932371',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126483',
model: 'strix white',
series: '3080',
url:
'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-white/p/N82E16814126483',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137609',
model: 'suprim x',
series: '3080',
url:
'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3080-rtx3080-suprim-x-10g/p/N82E16814137609',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932367',
model: 'eagle',
series: '3080',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080eagle-10gd/p/N82E16814932367',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126485',
model: 'ekwb',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3090-rtx3090-24g-ek/p/N82E16814126485',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932341',
model: 'aorus master',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090aorus-m-24gd/p/N82E16814932341',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932387',
model: 'aorus xtreme waterforce',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090aorusx-w-24gd/p/N82E16814932387',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126454',
model: 'tuf oc',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3090-tuf-rtx3090-o24g-gaming/p/N82E16814126454',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932386',
model: 'aorus xtreme waterforce wb',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090aorusx-wb-24gd/p/N82E16814932386',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932340',
model: 'aorus xtreme',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090aorus-x-24gd/p/N82E16814932340',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932365',
model: 'vision oc',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090vision-oc-24gd/p/N82E16814932365',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126482',
model: 'strix white',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-white/p/N82E16814126482',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137610',
model: 'suprim x',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3090-rtx3090-suprim-x-24g/p/N82E16814137610',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932366',
model: 'eagle',
series: '3090',
url:
'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090eagle-24gd/p/N82E16814932366',
},
{ {
brand: 'powercolor', brand: 'powercolor',
cartUrl: cartUrl:
+333
View File
@@ -892,6 +892,168 @@ export const Newegg: Store = {
url: url:
'https://www.newegg.com/corsair-sf750-cp-9020186-na-750w/p/N82E16817139080', 'https://www.newegg.com/corsair-sf750-cp-9020186-na-750w/p/N82E16817139080',
}, },
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932401',
model: 'vision oc',
series: '3060',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060vision-oc-12gd/p/N82E16814932401',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932399',
model: 'eagle',
series: '3060',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060eagle-12gd/p/N82E16814932399',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932399',
model: 'eagle',
series: '3060',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060eagle-12gd/p/N82E16814932399',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932400',
model: 'aorus',
series: '3060',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060aorus-e-12gd/p/N82E16814932400',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932403',
model: 'eagle oc',
series: '3060',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060eagle-oc-12gd/p/N82E16814932403',
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487538',
model: 'xc black',
series: '3060',
url:
'https://www.newegg.com/evga-geforce-rtx-3060-12g-p5-3655-kr/p/N82E16814487538',
},
{
brand: 'evga',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487539',
model: 'xc gaming',
series: '3060',
url:
'https://www.newegg.com/evga-geforce-rtx-3060-12g-p5-3657-kr/p/N82E16814487539',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137629',
model: 'gaming x trio',
series: '3060',
url:
'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-gaming-x-trio-12g/p/N82E16814137629',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137630',
model: 'gaming x',
series: '3060',
url:
'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-gaming-x-12g/p/N82E16814137630',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137631',
model: 'ventus 3x',
series: '3060',
url:
'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-ventus-3x-12g-oc/p/N82E16814137631',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137632',
model: 'ventus 2x oc',
series: '3060',
url:
'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-ventus-2x-12g-oc/p/N82E16814137632',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137638',
model: 'ventus 2x',
series: '3060',
url:
'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-ventus-2x-12g/p/N82E16814137638',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126491',
model: 'tuf oc',
series: '3060',
url:
'https://www.newegg.com/asus-geforce-rtx-3060-tuf-rtx3060-o12g-gaming/p/N82E16814126491',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126492',
model: 'strix oc',
series: '3060',
url:
'https://www.newegg.com/asus-geforce-rtx-3060-rog-strix-rtx3060-o12g-gaming/p/N82E16814126492',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126493',
model: 'dual',
series: '3060',
url:
'https://www.newegg.com/asus-geforce-rtx-3060-dual-rtx3060-12g/p/N82E16814126493',
},
{
brand: 'zotac',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500508',
model: 'twin edge oc',
series: '3060',
url:
'https://www.newegg.com/zotac-geforce-rtx-3060-zt-a30600h-10m/p/N82E16814500508',
},
{
brand: 'zotac',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500509',
model: 'twin edge',
series: '3060',
url:
'https://www.newegg.com/zotac-geforce-rtx-3060-zt-a30600e-10m/p/N82E16814500509',
},
{
brand: 'zotac',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500509',
model: 'twin edge',
series: '3060',
url:
'https://www.newegg.com/zotac-geforce-rtx-3060-zt-a30600e-10m/p/N82E16814500509',
},
{ {
brand: 'corsair', brand: 'corsair',
cartUrl: cartUrl:
@@ -1036,6 +1198,177 @@ export const Newegg: Store = {
url: url:
'https://www.newegg.com/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474', 'https://www.newegg.com/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474',
}, },
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126480',
model: 'dual',
series: '3060ti',
url:
'https://www.newegg.com/asus-geforce-rtx-3060-ti-dual-rtx3060ti-8g/p/N82E16814126480',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137620',
model: 'suprim x',
series: '3070',
url:
'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-suprim-x-8g/p/N82E16814137620',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137623',
model: 'suprim',
series: '3070',
url:
'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-suprim-8g/p/N82E16814137623',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932345',
model: 'aorus xtreme',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-x-10gd/p/N82E16814932345',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932372',
model: 'aorus xtreme waterforce',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorusx-w-10gd/p/N82E16814932372',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932371',
model: 'aorus xtreme waterforce wb',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorusx-wb-10gd/p/N82E16814932371',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126483',
model: 'strix white',
series: '3080',
url:
'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-white/p/N82E16814126483',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137609',
model: 'suprim x',
series: '3080',
url:
'https://www.newegg.com/msi-geforce-rtx-3080-rtx3080-suprim-x-10g/p/N82E16814137609',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932367',
model: 'eagle',
series: '3080',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-10gd/p/N82E16814932367',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126485',
model: 'ekwb',
series: '3090',
url:
'https://www.newegg.com/asus-geforce-rtx-3090-rtx3090-24g-ek/p/N82E16814126485',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932341',
model: 'aorus master',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorus-m-24gd/p/N82E16814932341',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932387',
model: 'aorus xtreme waterforce',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorusx-w-24gd/p/N82E16814932387',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126454',
model: 'tuf oc',
series: '3090',
url:
'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-o24g-gaming/p/N82E16814126454',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932386',
model: 'aorus xtreme waterforce wb',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorusx-wb-24gd/p/N82E16814932386',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932340',
model: 'aorus xtreme',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorus-x-24gd/p/N82E16814932340',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932365',
model: 'vision oc',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090vision-oc-24gd/p/N82E16814932365',
},
{
brand: 'asus',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126482',
model: 'strix white',
series: '3090',
url:
'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-white/p/N82E16814126482',
},
{
brand: 'msi',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137610',
model: 'suprim x',
series: '3090',
url:
'https://www.newegg.com/msi-geforce-rtx-3090-rtx3090-suprim-x-24g/p/N82E16814137610',
},
{
brand: 'gigabyte',
cartUrl:
'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932366',
model: 'eagle',
series: '3090',
url:
'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-24gd/p/N82E16814932366',
},
{ {
brand: 'powercolor', brand: 'powercolor',
cartUrl: cartUrl:
+70
View File
@@ -45,6 +45,76 @@ export const Notebooksbilliger: Store = {
url: url:
'https://www.notebooksbilliger.de/gainward+geforce+rtx+2070+super+phoenix+v1+grafikkarte+656238', 'https://www.notebooksbilliger.de/gainward+geforce+rtx+2070+super+phoenix+v1+grafikkarte+656238',
}, },
{
brand: 'asus',
model: 'strix',
series: '3060',
url:
'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3060+oc+12g+grafikkarte+702541',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060',
url:
'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3060+gaming+oc+12gb+gddr6+grafikkarte+700421',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060',
url:
'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3060+eagle+oc+12gb+gddr6+grafikkarte+700422',
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3060',
url:
'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3060+12gb+twin+x2+oc+701384',
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3060',
url:
'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3060+12gb+ichill+x3+red+701383?',
},
{
brand: 'palit',
model: 'dual',
series: '3060',
url:
'https://www.notebooksbilliger.de/palit+geforce+rtx+3060+12gb+dual+702252',
},
{
brand: 'palit',
model: 'dual oc',
series: '3060',
url:
'https://www.notebooksbilliger.de/palit+geforce+rtx+3060+12gb+dual+oc+gddr6+702251',
},
{
brand: 'pny',
model: 'xlr8 gaming',
series: '3060',
url:
'https://www.notebooksbilliger.de/pny+geforce+rtx+3060+12gb+xlr8+gaming+revel+epic+x+rgb+single+701885',
},
{
brand: 'zotac',
model: 'amp white',
series: '3060',
url:
'https://www.notebooksbilliger.de/zotac+geforce+rtx+3060+amp+white+12gb+gddr6+grafikkarte+701867',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060',
url:
'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3060+twin+edge+oc+12gb+grafikkarte+700378',
},
{ {
brand: 'inno3d', brand: 'inno3d',
model: 'ichill x3', model: 'ichill x3',
+5
View File
@@ -67,6 +67,11 @@ export const Novatech: Store = {
urlSelector: 'a[href]', urlSelector: 'a[href]',
}), }),
urls: [ urls: [
{
series: '3060',
url:
'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3060/?i=200',
},
{ {
series: '3060ti', series: '3060ti',
url: url:
+215
View File
@@ -0,0 +1,215 @@
import {Store} from './store';
export const NovoAtalho: Store = {
currency: '€',
labels: {
inStock: {
container:
'div.line > div.pull-left > div.stockpadding > span.stock > b > a',
text: ['DISPONÍVEL', 'POUCAS UNIDADES'],
},
outOfStock: {
container:
'div.line > div.pull-left > div.stockpadding > span.stock > b > a',
text: ['INDISPONÍVEL'],
},
maxPrice: {
container:
'div.line > div.pull-right > div.text-right > span.product-price',
euroFormat: true,
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.novoatalho.pt/pt-PT/produto/27318/Cabo-HDMI-p-MiniHDMI-Gembird-1-8Mtr/CC-HDMI4C-6.html',
},
{
brand: 'asus',
model: 'strix',
series: '3090',
url:
'https://www.novoatalho.pt/pt-PT/produto/44484/Placa-Grafica-Asus-GeForce-RTX-3090-ROG-STRIX-24GB/90YV0F90-M0NM00.html',
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url:
'https://www.novoatalho.pt/pt-PT/produto/44485/Placa-Grafica-Asus-GeForce-RTX-3090-ROG-STRIX-OC-24GB/90YV0F93-M0NM00.html',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url:
'https://www.novoatalho.pt/pt-PT/produto/44319/Placa-Grafica-Asus-GeForce-RTX-3090-TUF-GAMING-OC-24GB/90YV0FD1-M0NM00.html',
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3090',
url:
'https://www.novoatalho.pt/pt-PT/produto/45582/Placa-Grafica-EVGA-GeForce-RTX-3090-FTW3-ULTRA-GAMING-24GB/24G-P5-3987-KR.html',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url:
'https://www.novoatalho.pt/pt-PT/produto/44316/Placa-Grafica-MSI-GeForce-RTX-3090-GAMING-X-TRIO-24GB/912-V388-011.html',
},
{
brand: 'msi',
model: 'suprim x',
series: '3090',
url:
'https://www.novoatalho.pt/pt-PT/produto/45819/Placa-Grafica-MSI-GeForce-RTX-3090-SUPRIM-X-24GB/912-V388-010.html',
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url:
'https://www.novoatalho.pt/pt-PT/produto/45331/Placa-Grafica-Asus-GeForce-RTX-3070-DUAL-OC-8GB/90YV0FQ0-M0NA00.html',
},
{
brand: 'asus',
model: 'tuf',
series: '3070',
url:
'https://www.novoatalho.pt/pt-PT/produto/45750/Placa-Grafica-Asus-GeForce-RTX-3070-TUF-GAMING-OC-8GB/90YV0FQ6-M0NA00.html',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url:
'https://www.novoatalho.pt/pt-PT/produto/45862/Placa-Grafica-Gigabyte-GeForce-RTX-3070-Gaming-OC-8GB/GV-N3070GAM-OC-8G.html',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url:
'https://www.novoatalho.pt/pt-PT/produto/45334/Placa-Grafica-MSI-GeForce-RTX-3070-GAMING-X-TRIO-8GB/912-V390-006.html',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3060',
url:
'https://www.novoatalho.pt/pt-PT/produto/47052/Placa-Grafica-MSI-GeForce-RTX-3060-VENTUS-3X-OC-12G/912-V397-038.html',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060',
url:
'https://www.novoatalho.pt/pt-PT/produto/46883/Placa-Grafica-MSI-GeForce-RTX-3060-GAMING-X-TRIO-OC-12GB/912-V390-081.html',
},
{
brand: 'msi',
model: 'gaming x',
series: '3060',
url:
'https://www.novoatalho.pt/pt-PT/produto/47050/Placa-Grafica-MSI-GeForce-RTX-3060-GAMING-X-12G/912-V397-037.html',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060',
url:
'https://www.novoatalho.pt/pt-PT/produto/46920/Placa-Grafica-Gigabyte-GeForce-RTX-3060-Gaming-OC-12GB/GVN3060GO-00-10.html',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060',
url:
'https://www.novoatalho.pt/pt-PT/produto/46702/Placa-Grafica-Asus-GeForce-RTX-3060-TUF-GAMING-OC-12GB/90YV0GC0-M0NA00.html',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060ti',
url:
'https://www.novoatalho.pt/pt-PT/produto/46783/Placa-Grafica-Asus-GeForce-RTX-3060-Ti-TUF-GAMING-OC-8GB/90YV0G10-M0NA00.html',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060',
url:
'https://www.novoatalho.pt/pt-PT/produto/46701/Placa-Grafica-Asus-GeForce-RTX-3060-ROG-STRIX-OC-12GB/90YV0GC2-M0NA00.html',
},
{
brand: 'asus',
model: 'strix oc',
series: 'rx6800',
url:
'https://www.novoatalho.pt/pt-PT/produto/46281/Placa-Grafica-Asus-Radeon-RX-6800-ROG-STRIX-OC-16GB/90YV0FM0-M0NA00.html',
},
{
brand: 'asus',
model: 'strix oc',
series: 'rx6800xt',
url:
'https://www.novoatalho.pt/pt-PT/produto/46785/Placa-Grafica-Asus-Radeon-RX-6800-XT-ROG-STRIX-OC-LC-16GB/90YV0FL0-M0NM00.html',
},
{
brand: 'asus',
model: 'tuf oc',
series: 'rx6800xt',
url:
'https://www.novoatalho.pt/pt-PT/produto/46784/Placa-Grafica-Asus-Radeon-RX-6800-XT-TUF-GAMING-OC-16GB/90YV0FL1-M0NM00.html',
},
{
brand: 'msi',
model: 'gaming x trio',
series: 'rx6800',
url:
'https://www.novoatalho.pt/pt-PT/produto/46280/Placa-Grafica-MSI-Radeon-RX-6800-GAMING-X-TRIO-16GB/V396-002R.html',
},
{
brand: 'msi',
model: 'gaming x trio',
series: 'rx6800xt',
url:
'https://www.novoatalho.pt/pt-PT/produto/46279/Placa-Grafica-MSI-Radeon-RX-6800-XT-GAMING-X-TRIO-16GB/912-V395-001.html',
},
{
brand: 'asus',
model: 'tuf oc',
series: 'rx6900xt',
url:
'https://www.novoatalho.pt/pt-PT/produto/46700/Placa-Grafica-Asus-Radeon-RX-6900-XT-TUF-GAMING-OC-16GB/90YV0GE0-M0NM00.html',
},
{
brand: 'msi',
model: 'gaming x trio',
series: 'rx6900xt',
url:
'https://www.novoatalho.pt/pt-PT/produto/46649/Placa-Grafica-MSI-Radeon-RX-6900-XT-GAMING-X-TRIO-16GB/912-V395-007.html',
},
{
brand: 'amd',
model: '5600x',
series: 'ryzen5600',
url:
'https://www.novoatalho.pt/pt-PT/produto/45058/Processador-AMD-Ryzen-5-5600X-3-7Ghz-6-Core-SktAM4/100-100000065BOX.html',
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url:
'https://www.novoatalho.pt/pt-PT/produto/45059/Processador-AMD-Ryzen-7-5800X-3-8Ghz-OctaCore-SktAM4/100-100000063WOF.html',
},
],
name: 'novoatalho',
waitUntil: 'domcontentloaded',
};
-250
View File
@@ -1,250 +0,0 @@
import {generateLinks, generateSetupAction} from './helpers/nvidia';
import {Store} from './store';
// Region/country set by config file, silently ignores null / missing values and defaults to usa
export interface NvidiaRegionInfo {
currency: string;
drLocale: string;
fe3080Id: number | null;
fe3090Id: number | null;
fe2060SuperId: number | null;
siteLocale: string;
}
export const regionInfos = new Map<string, NvidiaRegionInfo>([
[
'austria',
{
currency: 'EUR',
drLocale: 'de_de',
fe2060SuperId: 5394902900,
fe3080Id: 5440853700,
fe3090Id: 5444941400,
siteLocale: 'de-at',
},
],
[
'belgium',
{
currency: 'EUR',
drLocale: 'fr_fr',
fe2060SuperId: 5394902700,
fe3080Id: 5438795700,
fe3090Id: 5438795600,
siteLocale: 'fr-be',
},
],
[
'canada',
{
currency: 'CAD',
drLocale: 'en_us',
fe2060SuperId: 5379432500,
fe3080Id: 5438481700,
fe3090Id: 5438481600,
siteLocale: 'en-us',
},
],
[
'czechia',
{
currency: 'CZK',
drLocale: 'en_gb',
fe2060SuperId: 5394902800,
fe3080Id: 5438793800,
fe3090Id: 5438793600,
siteLocale: 'cs-cz',
},
],
[
'denmark',
{
currency: 'DKK',
drLocale: 'en_gb',
fe2060SuperId: 5394903100,
fe3080Id: 5438793300,
fe3090Id: null,
siteLocale: 'da-dk',
},
],
[
'finland',
{
currency: 'EUR',
drLocale: 'en_gb',
fe2060SuperId: 5394903100,
fe3080Id: 5438793300,
fe3090Id: null,
siteLocale: 'fi-fi',
},
],
[
'france',
{
currency: 'EUR',
drLocale: 'fr_fr',
fe2060SuperId: 5394903200,
fe3080Id: 5438795200,
fe3090Id: 5438761500,
siteLocale: 'fr-fr',
},
],
[
'germany',
{
currency: 'EUR',
drLocale: 'de_de',
fe2060SuperId: 5394902900,
fe3080Id: 5438792300,
fe3090Id: 5438761400,
siteLocale: 'de-de',
},
],
[
'great_britain',
{
currency: 'GBP',
drLocale: 'en_gb',
fe2060SuperId: 5394903300,
fe3080Id: 5438792800,
fe3090Id: 5438792700,
siteLocale: 'en-gb',
},
],
[
'ireland',
{
currency: 'GBP',
drLocale: 'en_gb',
fe2060SuperId: 5394903300,
fe3080Id: 5438792800,
fe3090Id: 5438792700,
siteLocale: 'en-gb',
},
],
[
'italy',
{
currency: 'EUR',
drLocale: 'it_it',
fe2060SuperId: 5394903400,
fe3080Id: 5438796200,
fe3090Id: 5438796100,
siteLocale: 'it-it',
},
],
[
'luxembourg',
{
currency: 'EUR',
drLocale: 'fr_fr',
fe2060SuperId: 5394902700,
fe3080Id: 5438795700,
fe3090Id: 5438795600,
siteLocale: 'fr-be',
},
],
[
'netherlands',
{
currency: 'EUR',
drLocale: 'nl_nl',
fe2060SuperId: 5394903500,
fe3080Id: 5438796700,
fe3090Id: 5438796600,
siteLocale: 'nl-nl',
},
],
[
'norway',
{
currency: 'NOK',
drLocale: 'no_no',
fe2060SuperId: 5394903600,
fe3080Id: 5438797200,
fe3090Id: 5438797100,
siteLocale: 'nb-no',
},
],
[
'poland',
{
currency: 'PLN',
drLocale: 'pl_pl',
fe2060SuperId: 5394903700,
fe3080Id: 5438797700,
fe3090Id: 5438797600,
siteLocale: 'pl-pl',
},
],
[
'portugal',
{
currency: 'EUR',
drLocale: 'en_gb',
fe2060SuperId: null,
fe3080Id: 5438794300,
fe3090Id: null,
siteLocale: 'en-gb',
},
],
[
'russia',
{
currency: 'RUB',
drLocale: 'ru_ru',
fe2060SuperId: null,
fe3080Id: null,
fe3090Id: null,
siteLocale: 'ru-ru',
},
],
[
'spain',
{
currency: 'EUR',
drLocale: 'es_es',
fe2060SuperId: 5394903000,
fe3080Id: 5438794800,
fe3090Id: 5438794700,
siteLocale: 'es-es',
},
],
[
'sweden',
{
currency: 'SEK',
drLocale: 'sv_se',
fe2060SuperId: 5394903900,
fe3080Id: 5438798100,
fe3090Id: 5438761600,
siteLocale: 'sv-se',
},
],
// https://github.com/jef/streetmerchant/issues/407 This fe2080SuperID is for the Shield TV which is out of stock in the US
[
'usa',
{
currency: 'USD',
drLocale: 'en_us',
fe2060SuperId: 5355772500,
fe3080Id: 5438481700,
fe3090Id: 5438481600,
siteLocale: 'en-us',
},
],
]);
export const NvidiaApi: Store = {
currency: '',
labels: {
inStock: {
container: 'body',
text: ['product_inventory_in_stock'],
},
},
links: generateLinks(),
name: 'nvidia-api',
setupAction: generateSetupAction(),
};
+53
View File
@@ -0,0 +1,53 @@
import {Store} from './store';
export const NvidiaDE: Store = {
currency: '€',
labels: {
inStock: {
container: '.buy',
text: ['In den Einkaufswagen', 'JETZT KAUFEN'],
},
outOfStock: {
container: '.buy',
text: ['DERZEIT NICHT VERFÜGBAR'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.nvidia.com/de-de/geforce/graphics-cards/rtx-2060-super/',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3060ti',
url:
'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url:
'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url:
'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url:
'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA',
},
],
name: 'nvidia-de',
};
+53
View File
@@ -0,0 +1,53 @@
import {Store} from './store';
export const NvidiaES: Store = {
currency: '€',
labels: {
inStock: {
container: '.buy',
text: ['Añadir al carrito', 'COMPRAR AHORA'],
},
outOfStock: {
container: '.buy',
text: ['AGOTADO'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.nvidia.com/es-es/geforce/graphics-cards/rtx-2060-super/',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3060ti',
url:
'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url:
'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url:
'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url:
'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA',
},
],
name: 'nvidia-es',
};
+53
View File
@@ -0,0 +1,53 @@
import {Store} from './store';
export const NvidiaFR: Store = {
currency: '€',
labels: {
inStock: {
container: '.buy',
text: ['ajouter au panier', 'acheter maintenant'],
},
outOfStock: {
container: '.buy',
text: ['RUPTURE DE STOCK'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.nvidia.com/fr-fr/geforce/graphics-cards/rtx-2060-super/',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3060ti',
url:
'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url:
'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url:
'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url:
'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA',
},
],
name: 'nvidia-fr',
};
+53
View File
@@ -0,0 +1,53 @@
import {Store} from './store';
export const NvidiaGB: Store = {
currency: '£',
labels: {
inStock: {
container: '.buy',
text: ['add to cart', 'buy now'],
},
outOfStock: {
container: '.buy',
text: ['out of stock'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.nvidia.com/en-gb/geforce/graphics-cards/rtx-2060-super/',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3060ti',
url:
'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url:
'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url:
'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url:
'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA',
},
],
name: 'nvidia-gb',
};
-79
View File
@@ -1,79 +0,0 @@
import {Store} from './store';
export const Nvidia: Store = {
currency: '$',
labels: {
captcha: {
container: 'body',
text: ['are you a human?'],
},
inStock: [
{
container: '.main-container',
text: ['add to cart'],
},
{
container: '.inner',
text: ['add to cart'],
},
],
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/',
},
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.nvidia.com/en-us/geforce/graphics-cards/rtx-2060-super/',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url:
'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203080',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3080',
url:
'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3080',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url:
'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203090',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3090',
url:
'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3090',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url:
'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203070',
},
{
brand: 'nvidia',
model: 'founders edition',
series: '3070',
url:
'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3070',
},
],
name: 'nvidia',
};
+5
View File
@@ -77,6 +77,11 @@ export const Overclockers: Store = {
url: url:
'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6900-xt-series', 'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6900-xt-series',
}, },
{
series: '3060',
url:
'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3060',
},
{ {
series: '3060ti', series: '3060ti',
url: url:
+210
View File
@@ -24,6 +24,104 @@ export const PCComponentes: Store = {
url: url:
'https://www.pccomponentes.com/gigabyte-geforce-gtx-1660-super-oc-6gb-gddr6', 'https://www.pccomponentes.com/gigabyte-geforce-gtx-1660-super-oc-6gb-gddr6',
}, },
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url:
'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3090-trinity-24gb-gddr6x',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3090-gaming-oc-24g-24gb-gddr6x',
},
{
brand: 'evga',
model: 'xc3 ultra',
series: '3090',
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3090-xc3-ultra-gaming-24gb-gddr6x',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url:
'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3090-gaming-oc-24gb-gddr6x',
},
{
brand: 'gigabyte',
model: 'turbo',
series: '3090',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3090-turbo-24gb-gddr6x',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3090-gaming-x-trio-24gb-gddr6x',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3090',
url:
'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3090-xtreme-24gb-gddrx6',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3090',
url:
'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3090-master-24gb-gddr6x',
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url:
'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3090-gaming-oc-24gb-gddr6x',
},
{
brand: 'evga',
model: 'ftw3 ultra hybrid',
series: '3090',
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3090-ftw3-ultra-hybrid-gaming-24gb-gddr6x',
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3090',
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3090-ftw3-ultra-gaming-24gb-gddr6x',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce wb',
series: '3090',
url:
'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3090-xtreme-waterforce-wb-24gb-gddr6x',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3090-eagle-oc-24g-24gb-gddr6x',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3090-ventus-3x-oc-24gb-gddr6x',
},
{ {
brand: 'gigabyte', brand: 'gigabyte',
model: 'eagle oc', model: 'eagle oc',
@@ -313,6 +411,118 @@ export const PCComponentes: Store = {
url: url:
'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-8gb-gddr6', 'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-8gb-gddr6',
}, },
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3060ti',
url:
'https://www.pccomponentes.com/msi-rtx-3060-ti-ventus-2x-oc-8gb-gddr6',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060ti',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3060-ti-eagle-oc-8gb-gddr6',
},
{
brand: 'evga',
model: 'ftw3 ultra',
series: '3060ti',
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3060-ti-ftw3-ultra-8gb-gddr6',
},
{
brand: 'asus',
model: 'dual oc',
series: '3060ti',
url:
'https://www.pccomponentes.com/asus-geforce-rtx-3060ti-dual-o8g-8gb-gddr6',
},
{
brand: 'gigabyte',
model: 'gaming oc pro',
series: '3060ti',
url:
'https://www.pccomponentes.com/gigabyte-geforce-rtx-3060-ti-gaming-oc-pro-8gb-gddr6',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060ti',
url:
'https://www.pccomponentes.com/msi-geforce-rtx-3060-ti-gaming-x-8gb-gddr6',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060ti',
url:
'https://www.pccomponentes.com/zotac-geforce-rtx-3060ti-d6-twin-edge-oc-8gb-gddr6',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060ti',
url:
'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3060ti-o8g-gaming-8gb-gddr6',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060ti',
url:
'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3060ti-o8g-gaming-8gb-gddr6',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060ti',
url:
'https://www.pccomponentes.com/msi-rtx-3060-ti-gaming-x-trio-8gb-gddr6',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3060ti',
url:
'https://www.pccomponentes.com/zotac-geforce-rtx-3060-ti-d6-twin-edge-8gb-gddr6',
},
{
brand: 'evga',
model: 'xc gaming',
series: '3060ti',
url:
'https://www.pccomponentes.com/evga-geforce-rtx-3060-ti-xc-8gb-gddr6',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3060ti',
url:
'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3060-ti-master-8gb-gddr6',
},
{
brand: 'pny',
model: 'xlr8 revel',
series: '3060ti',
url:
'https://www.pccomponentes.com/pny-geforce-rtx-3060ti-xlr8-gaming-revel-epic-x-rgb-edition-8gb-gddr6',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: 'rx6900xt',
url:
'https://www.pccomponentes.com/gigabyte-radeon-rx-6900-xt-gaming-oc-16gb-gddr6',
},
{
brand: 'asus',
model: 'tuf oc',
series: 'rx6900xt',
url:
'https://www.pccomponentes.com/asus-tuf-amd-radeon-rx-6900xt-oc-16gb-gddr6',
},
], ],
name: 'pccomponentes', name: 'pccomponentes',
}; };
+569
View File
@@ -0,0 +1,569 @@
import {Store} from './store';
export const PCDiga: Store = {
currency: '€',
labels: {
inStock: {
container: '#product-addtocart-button > span',
text: ['Adicionar ao carrinho'],
},
outOfStock: {
container: 'div[id="skrey_estimate_date_product_page_wrapper"]',
text: ['Sem stock'],
},
maxPrice: {
container: '.price-container.price-final_price > .price-wrapper > span',
euroFormat: true,
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url:
'https://www.pcdiga.com/placa-grafica-asus-ekwb-geforce-rtx-3080-10gb-gddr6x-90yv0f60-m0nm00',
},
{
brand: 'asus',
model: 'ekwb',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-asus-ekwb-geforce-rtx-3080-10gb-gddr6x-90yv0f60-m0nm00',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-msi-geforce-rtx-3080-ventus-3x-10g-oc-912-v389-001',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-msi-geforce-rtx-3080-gaming-x-trio-10g-912-v389-005',
},
{
brand: 'zotac',
model: 'trinity',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-zotac-gaming-geforce-rtx-3080-10gb-gddr6x-trinity-zt-a30800d-10p',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-90yv0fa0-m0nm00',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x-90yv0fb0-m0nm00',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3080-aorus-xtreme-10gb-gddr6x-gv-n3080aorus-x-10gd',
},
{
brand: 'msi',
model: 'suprim x',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-msi-geforce-rtx-3080-suprim-x-10g-912-v389-006',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3080-aorus-master-10gb-gddr6x-gvn3080am-00-10',
},
{
brand: 'gigabyte',
model: 'aorus',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-rtx-3080-aorus-gaming-box-10gb-gv-n3080ixeb-10gd',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-pny-geforce-rtx-3080-10gb-gddr6x-xlr8-gaming-epic-x-rgb-triple-fan-vcg308010tfxppb',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-pny-geforce-rtx-3080-10gb-gddr6x-xlr8-gaming-epic-x-rgb-triple-fan-vcg308010tfxmpb',
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-zotac-gaming-geforce-rtx-3080-10gb-gddr6x-trinity-oc-zt-a30800j-10p',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-zotac-gaming-geforce-rtx-3080-10gb-gddr6x-amp-holo-zt-a30800f-10p',
},
{
brand: 'gigabyte',
model: 'vision',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3080-vision-10gb-gddr6x-oc-edition-gv-n3080vision-oc-10',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-oc-edition-90yv0fa1-m0nm00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x-oc-edition-90yv0fb1-m0nm00',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3080-eagle-10gb-gddr6x-oc-edition-gvn3080eo-00-10',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3080-gaming-10gb-gddr6x-oc-edition-gvn3080go-00-10',
},
{
brand: 'asus',
model: 'strix oc white',
series: '3080',
url:
'https://www.pcdiga.com/placa-grafica-asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-oc-white-edition-90yv0fa5-m0nm00',
},
{
brand: 'gigabyte',
model: 'aorus',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3090-aorus-gaming-box-24gb-gv-n3090ixeb-24gd-1-0',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3090-aorus-master-24gb-gv-n3090aorus-m-24gd',
},
{
brand: 'zotac',
model: 'trinity',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-zotac-gaming-geforce-rtx-3090-24gb-gddr6x-trinity-zt-a30900d-10p',
},
{
brand: 'asus',
model: 'strix',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-asus-rog-strix-geforce-rtx-3090-24gb-gddr6x-90yv0f90-m0nm00',
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x-90yv0fd0-m0nm00',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-msi-geforce-rtx-3090-ventus-3x-24g-oc-912-v388-002',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-msi-geforce-rtx-3090-gaming-x-trio-24g-912-v388-011',
},
{
brand: 'msi',
model: 'suprim x',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-msi-geforce-rtx-3090-suprim-x-24g-912-v388-010',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3090-vision-oc-24gb-gvn3090vo-00-g',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3090-aorus-xtreme-24gb-gvn3090ax-00-10',
},
{
brand: 'asus',
model: 'ekwb',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-asus-ekwb-geforce-rtx-3090-24gb-gddr6x-90yv0f80-m0nm00',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-pny-geforce-rtx-3090-24gb-gddr6x-xlr8-gaming-epic-x-rgb-triple-fan-vcg309024tfxppb',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-pny-geforce-rtx-3090-24gb-gddr6x-xlr8-gaming-epic-x-rgb-triple-fan-vcg309024tfxmpb',
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-asus-rog-strix-geforce-rtx-3090-24gb-gddr6x-oc-edition-90yv0f93-m0nm00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x-oc-edition-90yv0fd1-m0nm00',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3090-eagle-24gb-gddr6x-oc-edition-gvn3090eo-00-10',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-gigabyte-geforce-rtx-3090-gaming-24gb-gddr6x-oc-edition-gvn3090go-00-10',
},
{
brand: 'zotac',
model: 'trinity oc',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-zotac-gaming-geforce-rtx-3090-24gb-gddr6x-trinity-oc-zt-a30900j-10p',
},
{
brand: 'asus',
model: 'strix oc white',
series: '3090',
url:
'https://www.pcdiga.com/placa-grafica-asus-rog-strix-gaming-geforce-rtx-3090-24gb-gddr6x-oc-white-edition-90yv0f96-m0nm00',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3070-eagle-8gb-gddr6-gv-n3070eagle-8gd',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3070-gaming-oc-8g-gv-n3070gaming-oc-8gd',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-zotac-gaming-geforce-rtx-3070-8gb-gddr6-twin-edge-oc-zt-a30700h-10p',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-zotac-gaming-geforce-rtx-3070-8gb-gddr6-twin-edge-zt-a30700e-10p',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-msi-geforce-rtx-3070-ventus-2x-8g-oc-912-v390-008',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-pny-geforce-rtx-3070-8gb-gddr6-xlr8-gaming-epic-x-rgb-triple-fan-vcg30708tfxppb',
},
{
brand: 'pny',
model: 'dual fan',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-pny-geforce-rtx-3070-8gb-gddr6-dual-fan-vcg30708dfmpb',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3070-aorus-master-8gb-gddr6-gv-n3070aorus-m-8gd',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6-gv-n3070vision-oc-8gd',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3070-eagle-8gb-gddr6-oc-edition-gv-n3070eagle-oc-8gd',
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-dual-geforce-rtx-3070-8gb-gddr6-oc-editon-90yv0fq0-m0na00',
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-dual-geforce-rtx-3070-8gb-gddr6-90yv0fq1-m0na00',
},
{
brand: 'asus',
model: 'strix oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-rog-strix-geforce-rtx-3070-8gb-gddr6-oc-editon-90yv0fr1-m0na00',
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-rog-strix-geforce-rtx-3070-8gb-gddr6-90yv0fr0-m0na00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-tuf-gaming-geforce-rtx-3070-8gb-gddr6-oc-edition-90yv0fq6-m0na00',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-zotac-gaming-geforce-rtx-3070-8gb-gddr6-amp-holo-zt-a30700f-10p',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-zotac-gaming-geforce-rtx-3070-8gb-gddr6-twin-edge-oc-white-edition-zt-a30700j-10p',
},
{
brand: 'msi',
model: 'suprim x',
series: '3070',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-msi-geforce-rtx-3070-suprim-x-8g-912-v390-005',
},
{
brand: 'asus',
model: 'dual',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-dual-geforce-rtx-3060-ti-8gb-gddr6-90yv0g13-m0na00',
},
{
brand: 'asus',
model: 'dual oc',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-dual-geforce-rtx-3060-ti-8gb-gddr6-oc-90yv0g12-m0na00',
},
{
brand: 'asus',
model: 'strix',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-rog-strix-geforce-rtx-3060-ti-8gb-gddr6-90yv0g00-m0na00',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-rog-strix-geforce-rtx-3060-ti-8gb-gddr6-oc-90yv0g02-m0na00',
},
{
brand: 'asus',
model: 'tuf',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-tuf-gaming-rtx-3060-ti-8gb-gddr6-90yv0g11-m0na00',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-asus-tuf-gaming-rtx-3060-ti-8gb-gddr6-oc-90yv0g10-m0na00',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3060-ti-aorus-master-8gb-gddr6-gvn306tam-00-10',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3060-ti-eagle-8gb-gddr6-gvn306teo-00-g',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3060-ti-eagle-oc-8gb-gddr6-gvn306teo-00-10',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3060-ti-gaming-oc-8gb-gddr6-gvn306tgo-00-10',
},
{
brand: 'gigabyte',
model: 'gaming oc pro',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-gigabyte-geforce-rtx-3060-ti-gaming-oc-pro-8gb-gddr6-gvn306tgop-00-10',
},
{
brand: 'msi',
model: 'gaming',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-msi-geforce-rtx-3060-ti-gaming-x-8gb-gddr6-912-v397-042',
},
{
brand: 'msi',
model: 'gaming trio',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-msi-geforce-rtx-3060-ti-gaming-x-trio-8gb-gddr6-912-v390-053',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-msi-geforce-rtx-3060-ti-ventus-2x-8gb-gddr6-oc-912-v390-009',
},
{
brand: 'msi',
model: 'ventus 2x',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-msi-geforce-rtx-3060-ti-ventus-2x-ocv1-8gb-gddr6-oc-912-v397-003',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-msi-geforce-rtx-3060-ti-ventus-3x-8gb-gddr6-oc-912-v397-001',
},
{
brand: 'pny',
model: 'dual fan',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-pny-geforce-rtx-3060-ti-8gb-gddr6-uprising-dual-fan-vcg3060t8dfmpb',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-pny-geforce-rtx-3060-ti-8gb-gddr6-xlr8-revel-epic-x-dual-fan-vcg3060t8dfxppb',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-zotac-gaming-geforce-rtx-3060-ti-8gb-gddr6-twin-edge-oc-zt-a30610h-10m',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3060ti',
url:
'https://www.pcdiga.com/componentes/placas-graficas/placas-graficas-nvidia/placa-grafica-zotac-gaming-geforce-rtx-3060-ti-8gb-gddr6-twin-edge-zt-a30610e-10m',
},
],
name: 'pcdiga',
waitUntil: 'domcontentloaded',
};
+98
View File
@@ -0,0 +1,98 @@
import {Store} from './store';
export const PowerNO: Store = {
currency: 'kr.',
labels: {
inStock: {
container:
'#product-intro > div.container.old-product-page.ng-star-inserted > div > div > div.col-md-7 > div > div.product-control > div.buy-area.ng-star-inserted > div.buy-area__webshop > button',
text: ['Legg til handlekurv'],
},
outOfStock: {
container:
'#product-intro > div.container.old-product-page.ng-star-inserted > div > div > div.col-md-7 > div > div.product-control > div.buy-area.ng-star-inserted > div > button',
text: ['Ikke på lager'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.power.no/data-og-tilbehoer/p-1128968/',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1118420/',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1118419/',
},
{
brand: 'msi',
model: 'suprim x',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1145753/',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1115923/',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1117755/',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1141929/',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1141928/',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1121308/',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1121307/',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1118416/',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1118415/',
},
{
brand: 'pny',
model: 'xlr8 epic x',
series: '3080',
url: 'https://www.power.no/data-og-tilbehoer/p-1128968/',
},
],
name: 'power-no',
};
+612
View File
@@ -0,0 +1,612 @@
import {Store} from './store';
export const ProshopNO: Store = {
currency: 'kr.',
labels: {
inStock: {
container: '.site-stock',
text: ['1-3 dager til levering', 'Fjernlager'],
},
outOfStock: {
container: '.site-stock',
text: ['Bestilt'],
},
},
links: [
{
brand: 'test:brand',
model: 'test:model',
series: 'test:series',
url: 'https://www.proshop.no/2694767',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3060ti',
url: 'https://www.proshop.no/2910054',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3060ti',
url: 'https://www.proshop.no/2910052',
},
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3060ti',
url: 'https://www.proshop.no/2911560',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3060ti',
url: 'https://www.proshop.no/2886986',
},
{
brand: 'inno3d',
model: 'twin x2',
series: '3060ti',
url: 'https://www.proshop.no/2911556',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060ti',
url: 'https://www.proshop.no/2886982',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3060ti',
url: 'https://www.proshop.no/2887734',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3060ti',
url: 'https://www.proshop.no/2887735',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3060ti',
url: 'https://www.proshop.no/2887737',
},
{
brand: 'asus',
model: 'dual',
series: '3060ti',
url: 'https://www.proshop.no/2886988',
},
{
brand: 'gigabyte',
model: 'gaming oc pro',
series: '3060ti',
url: 'https://www.proshop.no/2887738',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3060ti',
url: 'https://www.proshop.no/2887736',
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3060ti',
url: 'https://www.proshop.no/2908274',
},
{
brand: 'asus',
model: 'tuf',
series: '3060ti',
url: 'https://www.proshop.no/2886984',
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3060ti',
url: 'https://www.proshop.no/2908273',
},
{
brand: 'asus',
model: 'dual oc',
series: '3060ti',
url: 'https://www.proshop.no/2886990',
},
{
brand: 'asus',
model: 'dual mini',
series: '3060ti',
url: 'https://www.proshop.no/2914081',
},
{
brand: 'asus',
model: 'strix',
series: '3060ti',
url: 'https://www.proshop.no/2886980',
},
{
brand: 'asus',
model: 'dual mini oc',
series: '3060ti',
url: 'https://www.proshop.no/2914082',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3060ti',
url: 'https://www.proshop.no/2914133',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3070',
url: 'https://www.proshop.no/2876871',
},
{
brand: 'msi',
model: 'suprim',
series: '3070',
url: 'https://www.proshop.no/2908888',
},
{
brand: 'msi',
model: 'ventus 2x oc',
series: '3070',
url: 'https://www.proshop.no/2876873',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3070',
url: 'https://www.proshop.no/2876875',
},
{
brand: 'msi',
model: 'suprim x',
series: '3070',
url: 'https://www.proshop.no/2885269',
},
{
brand: 'asus',
model: 'strix oc',
series: '3070',
url: 'https://www.proshop.no/2876845',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3070',
url: 'https://www.proshop.no/2876856',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3070',
url: 'https://www.proshop.no/2878390',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3070',
url: 'https://www.proshop.no/2878383',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3070',
url: 'https://www.proshop.no/2878392',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3070',
url: 'https://www.proshop.no/2878386',
},
{
brand: 'asus',
model: 'dual oc',
series: '3070',
url: 'https://www.proshop.no/2876853',
},
{
brand: 'asus',
model: 'dual',
series: '3070',
url: 'https://www.proshop.no/2876851',
},
{
brand: 'asus',
model: 'tuf',
series: '3070',
url: 'https://www.proshop.no/2876854',
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3070',
url: 'https://www.proshop.no/2883917',
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url: 'https://www.proshop.no/2876843',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3070',
url: 'https://www.proshop.no/2878385',
},
{
brand: 'asus',
model: 'strix oc',
series: '3070',
url: 'https://www.proshop.no/2911575',
},
{
brand: 'inno3d',
model: 'twin x2',
series: '3070',
url: 'https://www.proshop.no/2883916',
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3070',
url: 'https://www.proshop.no/2883919',
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url: 'https://www.proshop.no/2911574',
},
{
brand: 'asus',
model: 'ekwb',
series: '3070',
url: 'https://www.proshop.no/2911577',
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3070',
url: 'https://www.proshop.no/2883918',
},
{
brand: 'zotac',
model: 'twin edge',
series: '3070',
url: 'https://www.proshop.no/2911956',
},
{
brand: 'zotac',
model: 'amp holo',
series: '3070',
url: 'https://www.proshop.no/2912456',
},
{
brand: 'palit',
model: 'gamerock oc',
series: '3070',
url: 'https://www.proshop.no/2914382',
},
{
brand: 'palit',
model: 'gamerock oc',
series: '3070',
url: 'https://www.proshop.no/2914381',
},
{
brand: 'asus',
model: 'strix',
series: '3070',
url: 'https://www.proshop.no/2912910',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3080',
url: 'https://www.proshop.no/2876877',
},
{
brand: 'msi',
model: 'suprim x',
series: '3080',
url: 'https://www.proshop.no/2885270',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3080',
url: 'https://www.proshop.no/2876878',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3080',
url: 'https://www.proshop.no/2876879',
},
{
brand: 'msi',
model: 'gaming trio',
series: '3080',
url: 'https://www.proshop.no/2876876',
},
{
brand: 'asus',
model: 'strix oc',
series: '3080',
url: 'https://www.proshop.no/2876859',
},
{
brand: 'asus',
model: 'tuf',
series: '3080',
url: 'https://www.proshop.no/2876763',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3080',
url: 'https://www.proshop.no/2876861',
},
{
brand: 'asus',
model: 'strix oc',
series: '3080',
url: 'https://www.proshop.no/2911579',
},
{
brand: 'gigabyte',
model: 'gaming oc',
series: '3080',
url: 'https://www.proshop.no/2876838',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3080',
url: 'https://www.proshop.no/2878401',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3080',
url: 'https://www.proshop.no/2876835',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url: 'https://www.proshop.no/2876857',
},
{
brand: 'asus',
model: 'ekwb',
series: '3080',
url: 'https://www.proshop.no/2887568',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3080',
url: 'https://www.proshop.no/2878395',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3080',
url: 'https://www.proshop.no/2876836',
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3080',
url: 'https://www.proshop.no/2878971',
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3080',
url: 'https://www.proshop.no/2878968',
},
{
brand: 'asus',
model: 'strix',
series: '3080',
url: 'https://www.proshop.no/2911578',
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3080',
url: 'https://www.proshop.no/2878969',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3080',
url: 'https://www.proshop.no/2876837',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce',
series: '3080',
url: 'https://www.proshop.no/2878393',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce wb',
series: '3080',
url: 'https://www.proshop.no/2878394',
},
{
brand: 'msi',
model: 'gaming x trio',
series: '3090',
url: 'https://www.proshop.no/2876881',
},
{
brand: 'msi',
model: 'suprim x',
series: '3090',
url: 'https://www.proshop.no/2885271',
},
{
brand: 'msi',
model: 'ventus 3x oc',
series: '3090',
url: 'https://www.proshop.no/2876883',
},
{
brand: 'msi',
model: 'ventus 3x',
series: '3090',
url: 'https://www.proshop.no/2876882',
},
{
brand: 'asus',
model: 'tuf oc',
series: '3090',
url: 'https://www.proshop.no/2876869',
},
{
brand: 'msi',
model: 'gaming trio',
series: '3090',
url: 'https://www.proshop.no/2876880',
},
{
brand: 'inno3d',
model: 'gaming x3',
series: '3090',
url: 'https://www.proshop.no/2878977',
},
{
brand: 'inno3d',
model: 'ichill x3',
series: '3090',
url: 'https://www.proshop.no/2878978',
},
{
brand: 'inno3d',
model: 'ichill x4',
series: '3090',
url: 'https://www.proshop.no/2878979',
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url: 'https://www.proshop.no/2876867',
},
{
brand: 'gigabyte',
model: 'aorus master',
series: '3090',
url: 'https://www.proshop.no/2876840',
},
{
brand: 'asus',
model: 'tuf',
series: '3090',
url: 'https://www.proshop.no/2876764',
},
{
brand: 'asus',
model: 'strix oc',
series: '3090',
url: 'https://www.proshop.no/2911582',
},
{
brand: 'asus',
model: 'ekwb',
series: '3090',
url: 'https://www.proshop.no/2887569',
},
{
brand: 'gigabyte',
model: 'aorus xtreme',
series: '3090',
url: 'https://www.proshop.no/2876839',
},
{
brand: 'gigabyte',
model: 'aorus xtreme waterforce',
series: '3090',
url: 'https://www.proshop.no/2878404',
},
{
brand: 'gigabyte',
model: 'vision oc',
series: '3090',
url: 'https://www.proshop.no/2878413',
},
{
brand: 'inno3d',
model: 'ichill frostbite',
series: '3090',
url: 'https://www.proshop.no/2887323',
},
{
brand: 'asus',
model: 'strix',
series: '3090',
url: 'https://www.proshop.no/2878405',
},
{
brand: 'asus',
model: 'strix',
series: '3090',
url: 'https://www.proshop.no/2911581',
},
{
brand: 'gigabyte',
model: 'eagle oc',
series: '3090',
url: 'https://www.proshop.no/2876841',
},
{
brand: 'gigabyte',
model: 'turbo',
series: '3090',
url: 'https://www.proshop.no/2878410',
},
{
brand: 'gigabyte',
model: 'eagle',
series: '3090',
url: 'https://www.proshop.no/2878406',
},
{
brand: 'palit',
model: 'gamerock oc',
series: '3090',
url: 'https://www.proshop.no/2911898',
},
{
brand: 'amd',
model: '5800x',
series: 'ryzen5800',
url: 'https://www.proshop.no/2884171',
},
{
brand: 'amd',
model: '5900x',
series: 'ryzen5900',
url: 'https://www.proshop.no/2884173',
},
{
brand: 'amd',
model: '5950x',
series: 'ryzen5950',
url: 'https://www.proshop.no/2884175',
},
],
name: 'proshop-no',
};
+12
View File
@@ -42,6 +42,18 @@ export const Saturn: Store = {
series: 'test:series', series: 'test:series',
url: 'https://www.saturn.de/de/product/-2641856.html', url: 'https://www.saturn.de/de/product/-2641856.html',
}, },
{
brand: 'inno3d',
model: 'ichill x3',
series: '3060',
url: 'https://www.saturn.de/de/product/-2718593.html',
},
{
brand: 'inno3d',
model: 'twin x2 oc',
series: '3060',
url: 'https://www.saturn.de/de/product/-2718594.html',
},
{ {
brand: 'asus', brand: 'asus',
model: 'dual', model: 'dual',
+6
View File
@@ -97,6 +97,12 @@ export const Scan: Store = {
url: url:
'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6900-xt-pcie-40-graphics-cards', 'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6900-xt-pcie-40-graphics-cards',
}, },
{
series: '3060',
url:
//3060 is in gaming section not computer-hardware
'https://www.scan.co.uk/shop/gaming/gpu-nvidia/nvidia-geforce-rtx-3060-graphics-cards',
},
{ {
series: '3060ti', series: '3060ti',
url: url:
+6 -2
View File
@@ -1,4 +1,4 @@
import {Browser, LoadEvent} from 'puppeteer'; import {Browser, PuppeteerLifeCycleEvent} from 'puppeteer';
export type Element = { export type Element = {
container?: string; container?: string;
@@ -39,6 +39,7 @@ export type Brand =
export type Series = export type Series =
| 'test:series' | 'test:series'
| 'captcha-deterrent' | 'captcha-deterrent'
| '3060'
| '3060ti' | '3060ti'
| '3070' | '3070'
| '3080' | '3080'
@@ -65,10 +66,12 @@ export type Model =
| '5900x' | '5900x'
| '5950x' | '5950x'
| '600 platinum' | '600 platinum'
| '600 gold'
| '750 platinum' | '750 platinum'
| 'amd reference' | 'amd reference'
| 'amp extreme holo' | 'amp extreme holo'
| 'amp holo' | 'amp holo'
| 'amp white'
| 'aorus master' | 'aorus master'
| 'aorus master type-c' | 'aorus master type-c'
| 'aorus xtreme' | 'aorus xtreme'
@@ -101,6 +104,7 @@ export type Model =
| 'gaming pro' | 'gaming pro'
| 'gaming trio' | 'gaming trio'
| 'gaming x trio' | 'gaming x trio'
| 'gaming x'
| 'gaming x3' | 'gaming x3'
| 'ghost oc' | 'ghost oc'
| 'suprim x' | 'suprim x'
@@ -228,7 +232,7 @@ export type Store = {
* 0 -> 399 inclusive. * 0 -> 399 inclusive.
*/ */
successStatusCodes?: StatusCodeRangeArray; successStatusCodes?: StatusCodeRangeArray;
waitUntil?: LoadEvent; waitUntil?: PuppeteerLifeCycleEvent;
minPageSleep?: number; minPageSleep?: number;
maxPageSleep?: number; maxPageSleep?: number;
+4
View File
@@ -10,6 +10,10 @@ export const Vuugo: Store = {
maxPrice: { maxPrice: {
container: 'div.price:nth-child(12)', container: 'div.price:nth-child(12)',
}, },
outOfStock: {
container: '.description .red',
text: ['Back Order'],
},
}, },
links: [ links: [
{ {
+16 -2
View File
@@ -24,6 +24,20 @@ export const Wipoid: Store = {
url: url:
'https://www.wipoid.com/pny-geforce-rtx-1650-dual-fan-4gb-gddr6.html', 'https://www.wipoid.com/pny-geforce-rtx-1650-dual-fan-4gb-gddr6.html',
}, },
{
brand: 'asus',
model: 'strix',
series: '3060',
url:
'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3060-12gb-gddr6.html',
},
{
brand: 'asus',
model: 'strix oc',
series: '3060',
url:
'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3060-oc-edition-12gb-gddr6.html',
},
{ {
brand: 'asus', brand: 'asus',
model: 'tuf', model: 'tuf',
@@ -155,7 +169,7 @@ export const Wipoid: Store = {
model: 'vision oc', model: 'vision oc',
series: '3070', series: '3070',
url: url:
'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6.html', 'https://www.wipoid.com/gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6.html',
}, },
{ {
brand: 'asus', brand: 'asus',
@@ -238,7 +252,7 @@ export const Wipoid: Store = {
model: 'eagle oc', model: 'eagle oc',
series: '3080', series: '3080',
url: url:
'https://www.wipoid.com/gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6.html', 'https://www.wipoid.com/gigabyte-geforce-rtx-3080-eagle-oc-10gb-gddr6x.html',
}, },
{ {
brand: 'msi', brand: 'msi',
+16
View File
@@ -21,6 +21,22 @@ export const Zotac: Store = {
url: url:
'https://store.zotac.com/zotac-gaming-geforce-rtx-2060-twin-fan-zt-t20600f-10m', 'https://store.zotac.com/zotac-gaming-geforce-rtx-2060-twin-fan-zt-t20600f-10m',
}, },
{
brand: 'zotac',
model: 'twin edge',
series: '3060',
url:
//removing /us/ results in a 404 error
'https://www.zotacstore.com/us/zotac-gaming-geforce-rtx-3060-twin-edge-zt-a30600e-10m',
},
{
brand: 'zotac',
model: 'twin edge oc',
series: '3060',
url:
//removing /us/ results in a 404 error
'https://www.zotacstore.com/us/zotac-gaming-geforce-rtx-3060-twin-edge-oc-zt-a30600h-10m',
},
{ {
brand: 'zotac', brand: 'zotac',
model: 'twin edge', model: 'twin edge',
+1
View File
@@ -0,0 +1 @@
declare module 'top-user-agents';
+6 -2
View File
@@ -1,4 +1,4 @@
import {Browser, Page, Response} from 'puppeteer'; import {Browser, Page, HTTPResponse} from 'puppeteer';
import {StatusCodeRangeArray, Store} from './store/model'; import {StatusCodeRangeArray, Store} from './store/model';
import {config} from './config'; import {config} from './config';
import {disableBlockerInPage} from './adblocker'; import {disableBlockerInPage} from './adblocker';
@@ -45,7 +45,11 @@ export function isStatusCodeInRange(
export async function usingResponse<T>( export async function usingResponse<T>(
browser: Browser, browser: Browser,
url: string, url: string,
cb: (response: Response | null, page: Page, browser: Browser) => Promise<T> cb: (
response: HTTPResponse | null,
page: Page,
browser: Browser
) => Promise<T>
): Promise<T> { ): Promise<T> {
return usingPage(browser, async (page, browser) => { return usingPage(browser, async (page, browser) => {
const response = await page.goto(url, {waitUntil: 'domcontentloaded'}); const response = await page.goto(url, {waitUntil: 'domcontentloaded'});
+1 -1
View File
@@ -11,7 +11,7 @@ import {
import {isAbsolute, join, normalize, relative} from 'path'; import {isAbsolute, join, normalize, relative} from 'path';
import {logger} from '../logger'; import {logger} from '../logger';
const approot = join(__dirname, '../../'); const approot = join(__dirname, '../../../');
const webroot = join(approot, './web'); const webroot = join(approot, './web');
const contentTypeMap: Record<string, string> = { const contentTypeMap: Record<string, string> = {
+34
View File
@@ -0,0 +1,34 @@
# Terraform for AWS Fargate
Here is a configurable terraform to get you up and running with the streetmerchant docker image in AWS ECS Fargate.
Running on cloud infrastructure (your mileage may vary), you'll need to integrate with one of the chat notifications rather than having your local browser navigate to a URL for you.
The author's findings were that it worked ok; running the container from within EU-West-2 region was sufficient to get a timely alert for PS5 stock on Aamzon and follow the link to a successful checkout.
Dependencies:
- Terraform 14
## Getting started
There's an example tfvars file to start you off; rename this with your own preferences. Anything you can set in the `dotenv` file you'll need to set in terraform.tfvars to get the env vars into your fargate container.
Authenticate yourself with your own AWS account as with any aws commandline tool.
If you wish, add a specific section to your aws credentials file and set that profile name in `terraform.tfvars`.
Then you can:
```shell
cd ./terraform
terraform init
terraform plan
terraform apply
```
## What's included
- container running streetmerchant with your chosen config
- cloud metrics and a dashboard tracking 'out of stock' and 'error' responses from your configured stores
+40
View File
@@ -0,0 +1,40 @@
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 18,
"height": 12,
"properties": {
"metrics": ${out_of_stock},
"view": "timeSeries",
"stacked": false,
"region": "${region}",
"start": "-PT1H",
"end": "P0D",
"stat": "Sum",
"period": 300,
"title": "out of stock"
}
},
{
"type": "metric",
"x": 0,
"y": 0,
"width": 18,
"height": 12,
"properties": {
"metrics": ${error},
"view": "timeSeries",
"stacked": false,
"region": "${region}",
"start": "-PT1H",
"end": "P0D",
"stat": "Sum",
"period": 300,
"title": "error"
}
}
]
}
+14
View File
@@ -0,0 +1,14 @@
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
provider "aws" {
region = var.region
shared_credentials_file = var.credential_file
profile = var.credential_profile
}
+42
View File
@@ -0,0 +1,42 @@
resource "aws_ecs_cluster" "main" {
name = "${var.app_name}-ecs-cluster"
}
resource "aws_ecs_service" "main" {
name = "${var.app_name}-ecs-service"
cluster = aws_ecs_cluster.main.id
task_definition = aws_ecs_task_definition.main.id
desired_count = 1
network_configuration {
subnets = [
aws_subnet.aws-subnet.id
]
assign_public_ip = true
}
launch_type = "FARGATE"
}
data "aws_iam_role" "ecs_task_execution_role" {
name = "ecsTaskExecutionRole"
}
locals {
container_env = [for k, v in var.streetmerchant_env : { name: k, value: v}]
}
resource "aws_ecs_task_definition" "main" {
container_definitions = templatefile("taskdef.json.template", {
"name": var.app_name
"awslogs-group": aws_cloudwatch_log_group.main.name
"region": var.region
"cpu": var.cpu
"memory": parseint(var.memory,10)
"environment": jsonencode(local.container_env)
})
family = var.app_name
requires_compatibilities = ["FARGATE"]
network_mode = "awsvpc"
cpu = var.cpu
memory = var.memory
execution_role_arn = data.aws_iam_role.ecs_task_execution_role.arn
}
+51
View File
@@ -0,0 +1,51 @@
resource "aws_cloudwatch_log_group" "main" {
name = var.app_name
retention_in_days = 3
}
locals {
stores = split(",",var.streetmerchant_env["STORES"])
metrics = {
out_of_stock = [for store in local.stores : ["${var.app_name}-out-of-stock", store]]
error = [for store in local.stores : ["${var.app_name}-error", store]]
}
}
resource "aws_cloudwatch_log_metric_filter" "out_of_stock" {
for_each = toset(local.stores)
log_group_name = aws_cloudwatch_log_group.main.name
name = "${each.key}-out-of-stock"
pattern = "${each.key} \"OUT OF STOCK\""
metric_transformation {
name = each.key
namespace = "${var.app_name}-out-of-stock"
value = 1
default_value = 0
}
}
resource "aws_cloudwatch_log_metric_filter" "error" {
for_each = toset(local.stores)
log_group_name = aws_cloudwatch_log_group.main.name
name = "${each.key}-error"
pattern = "${each.key} \"ERROR\""
metric_transformation {
name = each.key
namespace = "${var.app_name}-error"
value = 1
default_value = 0
}
}
resource "aws_cloudwatch_dashboard" "main" {
dashboard_name = "${var.app_name}-dashboard"
dashboard_body = templatefile("dashboard.json.template", {
out_of_stock = jsonencode(local.metrics.out_of_stock)
error = jsonencode(local.metrics.error)
region = var.region
})
}
+40
View File
@@ -0,0 +1,40 @@
resource "aws_vpc" "main" {
enable_dns_support = true
cidr_block = "10.0.0.0/16"
tags = {
app = "ps5"
}
}
resource "aws_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
tags = {
app = "ps5"
}
}
resource "aws_subnet" "aws-subnet" {
vpc_id = aws_vpc.main.id
cidr_block = aws_vpc.main.cidr_block
map_public_ip_on_launch = true
tags = {
app = "ps5"
}
}
resource "aws_route_table" "main" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.main.id
}
tags = {
app = "ps5"
}
}
resource "aws_main_route_table_association" "main" {
route_table_id = aws_route_table.main.id
vpc_id = aws_vpc.main.id
}
+18
View File
@@ -0,0 +1,18 @@
[
{
"name": "${name}-task",
"image": "ghcr.io/jef/streetmerchant:latest",
"cpu": ${cpu},
"memory": ${memory},
"essential": true,
"environment": ${environment},
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "${awslogs-group}",
"awslogs-region": "${region}",
"awslogs-stream-prefix": "ecs"
}
}
}
]
+8
View File
@@ -0,0 +1,8 @@
credential_profile = "ps5"
streetmerchant_env = {
"STORES" = "amazon-uk,game,argos,box,currys,johnlewis,shopto,smythstoys,very,amazon-it,amazon-nl"
"SHOW_ONLY_SERIES" = "sonyps5c,sonyps5de"
"SLACK_TOKEN" = "your slack api token"
"SLACK_CHANNEL" = "your slack channel name"
}
+40
View File
@@ -0,0 +1,40 @@
variable "credential_file" {
type = string
description = "your aws credentials file"
default = "~/.aws/credentials"
}
variable "credential_profile" {
type = string
description = "the section in ~/.aws/credentials with your desired aws_access_key_id and aws_secret_access_key values"
default = "default"
}
variable "region" {
type = string
description = "aws region"
default = "eu-west-2"
}
variable "app_name" {
type = string
default = "streetmerchant"
}
variable "memory" {
type = string
default = "2048"
description = "ecs task memory"
}
variable "cpu" {
type = number
default = 1024
description = "ecs task cpu"
}
variable "streetmerchant_env" {
type = map
description = "name/value pairs for .env values"
default = {}
}
-1
View File
@@ -1 +0,0 @@
3.4.1