486749a890
Full-stack Dutch supermarket price tracker with FastAPI backend, PostgreSQL/SQLAlchemy, Albert Heijn scraper, and Next.js frontend. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
871 B
Python
37 lines
871 B
Python
import click
|
|
|
|
from app.database import SessionLocal
|
|
from app.scrapers.albert_heijn import scrape_query
|
|
|
|
|
|
@click.group()
|
|
def cli():
|
|
pass
|
|
|
|
|
|
@cli.command("scrape-ah")
|
|
@click.option(
|
|
"--query",
|
|
"queries",
|
|
multiple=True,
|
|
required=True,
|
|
help="Search term to scrape (repeatable)",
|
|
)
|
|
def scrape_ah(queries: tuple[str, ...]):
|
|
"""Scrape Albert Heijn product prices for one or more search queries."""
|
|
db = SessionLocal()
|
|
try:
|
|
for query in queries:
|
|
click.echo(f"Scraping Albert Heijn: {query!r}")
|
|
run = scrape_query(db, query)
|
|
if run.status == "success":
|
|
click.echo(f" {run.products_found} products stored (run id={run.id})")
|
|
else:
|
|
click.echo(f" Failed: {run.error_message}", err=True)
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
cli()
|