{"id":31136150,"url":"https://github.com/londek/info-car-sniper","last_synced_at":"2025-09-18T08:00:01.632Z","repository":{"id":313323881,"uuid":"1049620522","full_name":"londek/info-car-sniper","owner":"londek","description":"Skaner i auto‑przebooker terminów egzaminów praktycznych WORD (Info‑Car)","archived":false,"fork":false,"pushed_at":"2025-09-05T09:21:52.000Z","size":143,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-05T10:26:00.632Z","etag":null,"topics":["driving","info-car","python","textual"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/londek.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T08:49:03.000Z","updated_at":"2025-09-05T09:21:55.000Z","dependencies_parsed_at":"2025-09-05T10:26:01.880Z","dependency_job_id":"40459777-7c78-4a9f-a08d-9ee848504313","html_url":"https://github.com/londek/info-car-sniper","commit_stats":null,"previous_names":["londek/info-car-sniper"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/londek/info-car-sniper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/londek%2Finfo-car-sniper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/londek%2Finfo-car-sniper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/londek%2Finfo-car-sniper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/londek%2Finfo-car-sniper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/londek","download_url":"https://codeload.github.com/londek/info-car-sniper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/londek%2Finfo-car-sniper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275732387,"owners_count":25518096,"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","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["driving","info-car","python","textual"],"created_at":"2025-09-18T07:59:59.649Z","updated_at":"2025-09-18T08:00:01.619Z","avatar_url":"https://github.com/londek.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Info‑Car Sniper\nScanner and auto‑rebooker for practical exam slots at WORD (Info‑Car)\n\n\u003c!-- Space for badges (examples below – adjust as you like) --\u003e\n\n\u003ca href=\"https://www.python.org/\"\u003e\u003cimg alt=\"Python\" src=\"https://img.shields.io/badge/python-3.10%2B-blue.svg?logo=python\"\u003e\u003c/a\u003e\n\u003ca href=\"https://textual.textualize.io/\"\u003e\u003cimg alt=\"Textual\" src=\"https://img.shields.io/badge/TUI-Textual-6f42c1?logo=terminal\"\u003e\u003c/a\u003e\n\u003ca href=\"#-contribution-\"\u003e\u003cimg alt=\"PRs welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\"\u003e\u003c/a\u003e\n\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-GNU%20GPLv3-lightgrey\"\u003e\n\n\u003cp\u003e\u003csup\u003eLanguages: \u003ca href=\"README.en.md\"\u003eEN\u003c/a\u003e | \u003ca href=\"README.md\"\u003ePL\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n👉 \u003cstrong\u003eNote:\u003c/strong\u003e the app \u003cem\u003ecurrently\u003c/em\u003e only \u003cstrong\u003ereschedules\u003c/strong\u003e existing exam bookings — it does \u003cstrong\u003enot\u003c/strong\u003e book from scratch. \u003cbr/\u003e\n💡 \u003cem\u003eWant full booking support?\u003c/em\u003e Contributions are welcome! 🙏✨\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n✅ \u003cstrong\u003eProven in practice:\u003c/strong\u003e this tool helped reduce my real practical exam wait by \u003cstrong\u003e24 days\u003c/strong\u003e via auto‑rescheduling.\n\n\u003c/div\u003e\n\nAn intuitive terminal app that:\n- logs into Info‑Car,\n- periodically scans slots and picks the earliest within your date/time window,\n- automatically rebooks your reservation to a better slot,\n- can scan using multiple accounts in rotation (faster, low cost),\n- and does all that for about $1.\n\n## ✨ Key features\n\n- Automatic Turnstile solving (CapMonster) with usage counters and estimated cost\n- Round‑robin scanning across accounts: each account is checked roughly every ~15s;\n  with multiple accounts you get a check every few seconds overall (e.g., 3 accounts ≈ one check ~every 5s)\n- Selects the earliest slot that matches your date/time criteria\n- One‑click rebook from the TUI\n- Live stats in the UI:\n  - total checks\n  - earliest slot ever found\n  - current earliest slot\n  - last found slot\n  - Turnstile usage and estimated cost\n- Settings persisted in `config.json` (login, password, CapMonster key, date \u0026 time range)\n- Proxy support — just add a `proxies.txt` file (one line = one HTTP(S) proxy URL)\n- Handy TUI keybindings:\n  - Enter — confirm fields and log in\n  - Tab / ↑ ↓ — move between fields\n  - Ctrl+l — back to login screen\n  - Ctrl+c — quit the app\n\n\n## 👀 Preview\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/login.png\" alt=\"Login screen\" width=\"360\" /\u003e\n  \u003cimg src=\"assets/main.png\" alt=\"Main screen — scanning and stats\" width=\"360\" /\u003e\n  \u003cbr/\u003e\n  \u003csub\u003eLogin • Main panel (scanning + stats)\u003c/sub\u003e\n\u003c/div\u003e\n\n\n## 📋 Requirements\n\n- Python 3.10 or newer\n- Info‑Car account with an active practical exam reservation\n- API key for [CapMonster](https://capmonster.cloud/en)\n- (Optional) proxy list in `proxies.txt`\n\n\n## 🛠️ Installation \u0026 run\n\nCommands below are ready to paste into zsh on Linux.\n\n```bash\n# 1) (Optional) create and activate a virtual environment\npython3 -m venv .venv\nsource .venv/bin/activate\n\n# 2) Install dependencies\npip install -r requirements.txt\n\n# 3) Run the TUI app\npython main.py\n```\n\nOn the first screen, enter:\n- your Info‑Car email and password,\n- your CapMonster key,\n- the date range (YYYY‑MM‑DD) and time range (HH:MM).\n\nThe app will save these to `config.json` so subsequent runs are faster (auto‑login).\n\n### 🚀 Faster scanning: multiple accounts\n\nYou can add helper accounts for scanning only (the main account still performs the rebook):\n\n1) Create `accounts.txt` and put one account per line:\n\n```\nemail@example.com:SuperPassword123!\nother@example.com:Another#Password\n```\n\n2) Run the app as usual (`python main.py`).\n\nThe app scans sequentially across accounts (round‑robin): each account is checked roughly every ~15s,\nand with more accounts you get a check every few seconds overall (e.g., 3 accounts ≈ one check ~every 5s). The Turnstile stats show the sum across all sessions.\n\nIf `accounts.txt` is empty or missing, the app behaves as before — uses only the main account.\n\n### 🧪 Account creator (generator)\n\nBuilt‑in tool for quickly creating and activating Info‑Car accounts via temporary email:\n\n```bash\npython account-creator.py\n```\n\n- Requires a CapMonster key (balance is checked),\n- uses mail.tm for temporary mailboxes,\n- automatically follows the activation link,\n- appends accounts to `accounts.txt` as `email:password`.\n\n### 🌐 (Optional) Proxy\n\nAdd a `proxies.txt` file in the project directory with a list of proxy URLs (one per line), e.g.:\n\n```\nhttps://user:pass@host:port\nhttps://host2:443\n```\n\nThe program will randomly use the provided proxies for requests.\n\n## ⚖️ Legal / ethics\n\n- The tool automates actions on a public service. Use it lawfully and in accordance with Info‑Car’s terms.\n- Authors and contributors are not responsible for how you use it.\n\n## 🛠️ Contribution\n\nWant to help? Awesome!\n- Open an issue with your proposal or send a PR right away\n- Keep code readable and commits short and descriptive\n- Tests and short PR descriptions are welcome\n\n## 💙 Donations (crypto)\n\n- BTC: `bc1qqj0q5qup8lhsgacaqrhp37gqzq3xph2595dh5u`\n- LTC: `ltc1qw03g3enqgkhc0px3lrs47xz3y8g087rvu90nzg`\n- ETH: `0x479D4535b8f3a8A83338525FD7dEC1CBbAeED7eD`\n- USDC (ERC20): `0x479D4535b8f3a8A83338525FD7dEC1CBbAeED7eD`\n\nThanks for your support! 🙌\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flondek%2Finfo-car-sniper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flondek%2Finfo-car-sniper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flondek%2Finfo-car-sniper/lists"}