Delivers MIL-005 (lecture Step 4): the product URL comes from `PRODUCT_URL` (default: the lecture's Amazon page), price and title selectors and robot-check markers live in `constants.py`, and a robot-check page raises `RobotCheckError` with a clear message. The code does not try to solve or bypass the check. Outcome on the live page (2026-10-28): Amazon returned HTTP 200 with a robot-check page and no price; the page is kept (tokens redacted) as a test fixture and shown in the README. Two live requests were made in total, one to inspect the response and one for the screenshot; there are no retries or loops. Review: code against QC-PY-001 as RC-014 (Go, autonomous, not independent). 56 pytest tests (no network), ruff and mypy --strict pass. Task: MIL-005#1 Task: MIL-005#2 Task: MIL-005#3 Task: MIL-005#4 Task: MIL-005#5
8 lines
349 B
Bash
8 lines
349 B
Bash
# Copy to .env and fill in. .env is ignored by git; never commit it.
|
|
SMTP_ADDRESS="smtp.gmail.com"
|
|
EMAIL_ADDRESS="you@example.com"
|
|
EMAIL_PASSWORD="Use_an_App_Password_from_your_email_provider"
|
|
# Optional: the default is the Amazon product page. This value gives the
|
|
# practice page instead.
|
|
# PRODUCT_URL="https://appbrewery.github.io/instant_pot/"
|