{"id":16900529,"url":"https://github.com/loganintech/rtx-notifier","last_synced_at":"2025-03-20T12:41:49.699Z","repository":{"id":91102743,"uuid":"297213255","full_name":"loganintech/rtx-notifier","owner":"loganintech","description":"Notifier for email messages written in rust","archived":false,"fork":false,"pushed_at":"2020-10-02T23:24:17.000Z","size":314,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-18T06:53:07.776Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/loganintech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-21T02:58:00.000Z","updated_at":"2021-10-24T17:36:08.000Z","dependencies_parsed_at":"2023-07-02T16:31:12.554Z","dependency_job_id":null,"html_url":"https://github.com/loganintech/rtx-notifier","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loganintech%2Frtx-notifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loganintech%2Frtx-notifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loganintech%2Frtx-notifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loganintech%2Frtx-notifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/loganintech","download_url":"https://codeload.github.com/loganintech/rtx-notifier/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244613036,"owners_count":20481503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T17:55:05.963Z","updated_at":"2025-03-20T12:41:49.659Z","avatar_url":"https://github.com/loganintech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RTX-Notifier\n\nIf you've stumbled here you're as frustrated as I am that the RTX cards are pretty impossible to buy. This program will monitor some retail sites and if one is found to have an RTX available, will open the page in your web browser.\n\n## Supported Products and Stores\n\n|Type|Products|NewEgg|Amazon|Evga|Nvidia|B\u0026H|BestBuy\n|---|---|---|---|---|---|---|---|\n| 3080 | Founders Edition | | | | `*` | | | \n| 3080 | EVGA FTW3 Ultra | `*` | `*` | `*` | | | |\n| 3080 | EVGA FTW3 Gaming | `*` | `*` | `*` | | | |\n| 3080 | EVGA XC3 Gaming | `*` | `*` | `*` | | | `*` |\n| 3080 | EVGA XC3 Black | `*` | `*` | `*` | | | |\n| 3080 | EVGA XC3 Ultra | `*` |  | `*` | | | |\n| 3080 | ASUS TUF Gaming | `*` | `*` | | | | |\n| 3080 | ASUS TUF OC |  | `*` | | | | |\n| 3080 | MSI Gaming X TRIO | `*` | | | | `*` | |\n| 3080 | MSI Ventus 3X | `*` | | | | `*` | |\n| 3080 | MSI Torx | | `*` | | | |\n| 3080 | MSI Tri-Frozr | | `*` | | | |\n| 3080 | GIGABYTE Eagle OC | `*` | `*` | | | `*` | |\n| 3080 | GIGABYTE Gaming | `*` | | | | | |\n| 3080 | GIGABYTE Gaming OC | `*` | `*` | | | `*` | |\n| 3080 | PNY Gaming Epic-X | `*` | `*` | | | | `*` |\n| 3080 | PNY Gaming Epic-X Tri-Fan | | `*` | | | | |\n| 3080 | ZOTAC Trinity | `*` | `*` | | | `*` | |\n| 3080 | ZOTAC Trinity OC | `*` | `*` | | | |\n| 3090 | Founders Edition | | | | `*` | | | \n| 3090 | EVGA FTW3 Ultra | `*` | | `*` | | | | \n| 3090 | EVGA FTW3 Gaming | `*` | | `*` | | | | \n| 3090 | EVGA XC3 Ultra | `*` | | `*` | | | | \n| 3090 | EVGA XC3 Gaming | `*` | | `*` | | | | \n| 3090 | EVGA XC3 Black | `*` | | `*` | | | |\n| 3090 | ASUS STRIX | `*` | | | | | |  \n| 3090 | ASUS TUF Gaming | `*` | `*` | | | | |\n| 3090 | ASUS TUF OC | `*` | `*` | | | `*` | |\n| 3090 | MSI Ventus 3X OC | `*` | | | | | |\n| 3090 | MSI Ventus 3X | `*` | | | | `*` | |\n| 3090 | MSI Gaming X TRIO | `*` | | | | `*` | |\n| 3090 | MSI Torx | | `*` | | | | |\n| 3090 | MSI Twin-Frozr | | `*` | | | | |\n| 3090 | GIGABYTE Eagle | `*` | | | | | |\n| 3090 | GIGABYTE Eagle OC | `*` | `*` | | | `*` | |\n| 3090 | GIGABYTE Windforce 3X | `*` | `*` | | | `*` | |\n| 3090 | PNY Epic-X | | `*` | | | | | \n| 3090 | ZOTAC Trinity | `*` | | | | `*` | |\n\n## Setup\n\nMake sure to rename `example_config.json` to `config.json` otherwise the script will exit. There are comments within it describing the basic options, as well as a snippet below with the same descriptions.\n\nMost config items are optional and won't be used if omitted. For example, without imap or twilio config, mail and text integrations are disabled automatically. If the discord url is missing, no attempt will be made to post to a channel.\n\n\n\n### Minmal Config Example\n\n```json5\n{\n  \"application_config\": {\n    // Some default values here, these are really only used for email. You don't need to change them\n    \"last_seen_evga\": \"2020-09-20T18:52:49.444913-07:00\",\n    \"last_seen_newegg\": \"2020-09-20T18:51:06.486222-07:00\",\n    \"last_seen_asus\": \"2020-09-19T18:43:58.644-07:00\",\n\n    // No notifications are sent within 30 minutes of this timestamp, to prevent spam. Only applies to Twilio\n    \"last_notification_sent\": \"2020-09-20T14:47:24.571591-07:00\",\n\n    // If any of these properties are null, the twilio integration is skipped\n    // The auth token from your twilio account\n    \"twilio_auth_token\": null,\n    // The account id from your twilio account (as a string) \"\"\n    \"twilio_account_id\": null,\n    // The from phone number in your twilio account (as a string \"+15556667777\")\n    \"from_phone_number\": null,\n\n    // If any of these properties are null, no attempt is made to read emails from the IMAP integration\n    \"imap_username\": null,\n    \"imap_password\": null,\n    \"imap_host\": null,\n    \"imap_port\": 993,\n\n    // These are personal choices. I recommend daemon mode if you're just running locally (it will keep running, and check for new products at the specified timeout)\n    \"should_open_browser\": true,\n    \"daemon_mode\": true,\n    \"daemon_timeout\": 30,\n\n    // Webhook URL to send to discord\n    \"discord_url\": null,\n\n    // This delays ALL scraping. It must be set manually\n    \"scraping_timeout\": \"2020-09-28T00:49:28.888712-07:00\",\n\n    // This delays certain providers. These are added automatically when a ratelimit is hit for a service\n    \"ratelimit_keys\": {\n      \"bnh\": \"2020-09-28T00:49:28.888712-07:00\",\n      \"amazon\": \"2020-09-28T00:52:28.888712-07:00\"\n    },\n\n    // Optional SOCKS5 Proxy URL\n    \"proxy_url\": \"socks5://127.0.0.1:9050\"\n  },\n  \"subscribers\": [\n    {\n      // List of services that the recipient wants a text about\n      \"service\": [\n        \"newegg\",\n        \"bestbuy\",\n        \"nvidia\",\n        \"bnh\",\n        \"amazon\"\n      ],\n      // The phone number to send a text to\n      \"to_phone_number\": \"+15556667777\",\n      // Whether or not the bot should send a text to that person\n      \"active\": true\n    }\n  ],\n  // I recommend copying the providers from the `example_config.json`, Otherwise you have a lot of writing to do\n  \"products\": [\n    {\n      // Website to scrape product for, must be one of [evga, newegg, amazon, bnh, bestbuy, nvidia]\n      \"evga\": {\n        // The name of the product for display purposes\n        \"product\": \"EVGA 3090 FTW3 GAMING\",\n        // The URL of the product to scrape\n        \"page\": \"https://www.evga.com/products/product.aspx?pn=24G-P5-3985-KR\",\n        // Active and Active Chance work together. Active overrides active_chance. If active is false, it will not scrape\n        // If active is null, it WILL scrape. This is to be considered \"no input\"\n        // active_chance is a value between 0 and 10. 0 being never scrape, 10 being always scrape\n        // A number outside of the range will constrain to the outer edges of the range\n        \"active\": true,\n        \"active_chance\": 7\n      }\n    }\n  ]\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floganintech%2Frtx-notifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Floganintech%2Frtx-notifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floganintech%2Frtx-notifier/lists"}