import os import six import sys import requests import subprocess import yaml from six.moves.urllib_parse import urljoin this_dir = os.path.realpath(os.path.dirname(__file__)) sys.path.append(os.path.realpath(os.path.join(os.pardir, os.pardir))) from geodata.openaddresses.config import openaddresses_config from geodata.file_utils import ensure_dir, download_file, cd, remove_file BASE_OPENADDRESSES_DATA_URL = 'http://results.openaddresses.io' OPENADDRESSES_LATEST_URL = BASE_OPENADDRESSES_DATA_URL + '/latest/run/' OPENADDRESSES_EXTENSION = '.zip' def main(out_dir): ensure_dir(out_dir) with cd(out_dir): for path in openaddresses_config.sources: source = '/'.join(path) zip_file = path[-1] + OPENADDRESSES_EXTENSION zip_url = source + OPENADDRESSES_EXTENSION url = OPENADDRESSES_LATEST_URL + zip_url zip_path = os.path.join(out_dir, zip_file) print('downloading: {}'.format(source)) if download_file(url, zip_path): subprocess.check_call(['unzip', '-o', zip_path]) remove_file(zip_path) if __name__ == '__main__': if len(sys.argv) < 2: print('Usage: python download_openaddresses.py out_dir') sys.exit(1) main(sys.argv[1])