Python Project Review
Budget: €1,500 – €3,000 EUR
All secrets in .env (never hardcoded).
Required .env keys:
Strongly recommended:
SELENIUM_PROXY or UK proxy in logs/
CHROME_BINARY, SELENIUM_DRIVER_PATH (local Chrome/driver paths)
JE_OTP_CODE (when 2FA triggers)
F. Deliverables from you (the developer fixing this)
1. Working code that passes
2. Filled .env.example comments documenting every variable
3. Short FIXES.md listing what you changed and why
4. Console log or screenshot proving:
- user_token is NOT empty in tokens.json
- getUserInfo, getUserData, listShifts all return 200
5. Instructions if any manual fallback is still needed (e.g. app capture)
OUT OF SCOPE (unless agreed separately)
---------------------------------------
- Building a web UI
- Hosting on a specific cloud provider
- Managing CapMonster billing (owner provides API key)
- Obtaining UK proxy subscription (owner provides credentials)
TECHNICAL CONSTRAINTS
-----------------------
- Python 3.10+
- Google Chrome + chromedriver (Selenium runs from local project paths)
- UK exit IP mandatory (VPN or SOCKS5 proxy)
- CapMonster account with balance (Turnstile solving)
- Test only on provided account — avoid repeated failed logins (lockout risk)
REFERENCE: MAIN SCRIPTS
-----------------------
magic_grabber.py Main entry — login + all APIs
auth_flow.py Orchestrates mobile + portal auth
mobile_login.py Mobile user_token acquisition
selenium_login.py Browser OAuth login
turnstile_solver.py CapMonster integration
je_client.py API client
run_accounts.py Multi-account daemon
merge_user_token.py Manual fallback if app token captured from phone
================================================================================
Required .env keys:
Strongly recommended:
SELENIUM_PROXY or UK proxy in logs/
CHROME_BINARY, SELENIUM_DRIVER_PATH (local Chrome/driver paths)
JE_OTP_CODE (when 2FA triggers)
F. Deliverables from you (the developer fixing this)
1. Working code that passes
2. Filled .env.example comments documenting every variable
3. Short FIXES.md listing what you changed and why
4. Console log or screenshot proving:
- user_token is NOT empty in tokens.json
- getUserInfo, getUserData, listShifts all return 200
5. Instructions if any manual fallback is still needed (e.g. app capture)
OUT OF SCOPE (unless agreed separately)
---------------------------------------
- Building a web UI
- Hosting on a specific cloud provider
- Managing CapMonster billing (owner provides API key)
- Obtaining UK proxy subscription (owner provides credentials)
TECHNICAL CONSTRAINTS
-----------------------
- Python 3.10+
- Google Chrome + chromedriver (Selenium runs from local project paths)
- UK exit IP mandatory (VPN or SOCKS5 proxy)
- CapMonster account with balance (Turnstile solving)
- Test only on provided account — avoid repeated failed logins (lockout risk)
REFERENCE: MAIN SCRIPTS
-----------------------
magic_grabber.py Main entry — login + all APIs
auth_flow.py Orchestrates mobile + portal auth
mobile_login.py Mobile user_token acquisition
selenium_login.py Browser OAuth login
turnstile_solver.py CapMonster integration
je_client.py API client
run_accounts.py Multi-account daemon
merge_user_token.py Manual fallback if app token captured from phone
================================================================================
Related categories:
JavaScript
Python
Web Scraping
Software Architecture
Google App Engine
Google Chrome
Web Development
API
Selenium
VPN