import argparse from pathlib import Path import kagglehub from kagglehub import KaggleDatasetAdapter import kaggle def parse_args() -> argparse.Namespace: """Parse and return command line arguments.""" parser = argparse.ArgumentParser( description="Downloads the data for the specified program(s)." ) # which program parser.add_argument( "-c", "--program", type=str, nargs="+", choices=["checksum", "syringe-arduino", "syringe-pico", "servo-arduino", "servo-pico", "soldering", "home-iot", "distance", "all"], required=True, help="Which program to download data", ) return parser.parse_args() def download(slug:str) -> None: # dataset_slug = "emflow2026/em-data" kaggle.api.dataset_download_files(slug, path="data/", unzip=True, quiet=False) # print(f"Downloaing {slug}") def main(): args = parse_args() for program in args.program: match program: case "soldering": download("emflow2026/em-data-soldering") case "checksum": download("emflow2026/em-data") case "home-iot": download("emflow2026/em-data-coffee") case "distance": download("emflow2026/em-data-distance") case "syringe-arduino": download("emflow2026/em-data-syringe-arduino") case "syringe-pico": download("emflow2026/em-data-syringe-pico") case "servo-arduino": download("emflow2026/em-data-servo-arduino") case "servo-pico": download("emflow2026/em-data-servo-pico") case "all": download("emflow2026/em-data") download("emflow2026/em-data-coffee") download("emflow2026/em-data-syringe-arduino") if __name__ == "__main__": main()