2025-05-11 18:59:41 +00:00
|
|
|
import click
|
|
|
|
|
import importlib
|
|
|
|
|
|
2025-05-14 19:41:13 +00:00
|
|
|
from rec.districts import get_districts
|
|
|
|
|
|
2025-05-11 18:59:41 +00:00
|
|
|
dump_listings_module = importlib.import_module('1_dump_listings')
|
2025-05-11 19:02:23 +00:00
|
|
|
dump_detail_module = importlib.import_module('2_dump_detail')
|
2025-05-11 19:04:19 +00:00
|
|
|
dump_images_module = importlib.import_module('3_dump_images')
|
2025-05-11 19:06:08 +00:00
|
|
|
detect_floorplan_module = importlib.import_module('4_detect_floorplan')
|
2025-05-11 19:11:23 +00:00
|
|
|
routing_module = importlib.import_module('5_routing')
|
2025-05-11 18:59:41 +00:00
|
|
|
|
|
|
|
|
steps_to_handlers = {
|
|
|
|
|
'dump_listings': dump_listings_module.dump_listings,
|
2025-05-11 19:02:23 +00:00
|
|
|
'dump_detail': dump_detail_module.dump_detail,
|
2025-05-11 19:04:19 +00:00
|
|
|
'dump_images': dump_images_module.dump_images,
|
2025-05-11 19:06:08 +00:00
|
|
|
'detect_floorplan': detect_floorplan_module.detect_floorplan,
|
2025-05-11 19:11:23 +00:00
|
|
|
'routing': routing_module.calculate_route,
|
2025-05-11 18:59:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-05-14 19:41:13 +00:00
|
|
|
@click.group()
|
|
|
|
|
def cli():
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command()
|
2025-05-11 18:59:41 +00:00
|
|
|
@click.option(
|
2025-05-14 19:41:13 +00:00
|
|
|
'--district',
|
|
|
|
|
default=None,
|
|
|
|
|
help='Districts to scrape',
|
|
|
|
|
type=click.Choice(get_districts().keys(), case_sensitive=False),
|
2025-05-11 18:59:41 +00:00
|
|
|
multiple=True,
|
|
|
|
|
)
|
2025-05-14 19:41:13 +00:00
|
|
|
def dump_listings(district: list[str]):
|
|
|
|
|
click.echo(f'Running dump_listings for districts {district}')
|
|
|
|
|
dump_listings_module.dump_listings(set(district))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command()
|
|
|
|
|
def dump_detail():
|
|
|
|
|
click.echo('Running dump_detail')
|
|
|
|
|
dump_detail_module.dump_detail()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command()
|
|
|
|
|
def dump_images():
|
|
|
|
|
click.echo('Running dump_images')
|
|
|
|
|
dump_images_module.dump_images()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command()
|
|
|
|
|
def detect_floorplan():
|
|
|
|
|
click.echo('Running detect_floorplan')
|
|
|
|
|
detect_floorplan_module.detect_floorplan()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command()
|
|
|
|
|
def routing():
|
|
|
|
|
click.echo('Running routing')
|
|
|
|
|
routing_module.calculate_route()
|
2025-05-11 18:59:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2025-05-14 19:41:13 +00:00
|
|
|
cli()
|