import argparse import boto3 import os import urllib.parse as ul import connection import config def get_argument(): parser = argparse.ArgumentParser(prefix_chars='+') parser.add_argument( 'product_id', nargs='+', help='Please enter product_id' ) args = parser.parse_args() return args.product_id def download_s3_assets(): product_id = int(get_argument()[0]) sql_get_asset_records = f"""SELECT * FROM asset_upload WHERE product_id = {str(product_id)} AND api_version = 2 ORDER BY created_timestamp ASC;""" db_connection = connection.database_connection() cursor = db_connection.cursor() cursor.execute(sql_get_asset_records) db_connection.commit() db_connection.close() results = cursor.fetchall() client = boto3.client(config.S3, region_name=config.REGION_NAME) for row in results: s3_filename = row[4] + os.path.splitext(row[11])[1] original_filename = ul.unquote_plus(row[11]) print('downloading ' + s3_filename + ' as ' + original_filename) client.download_file(config.RAW_BUCKET, s3_filename, original_filename) if __name__ == '__main__': download_s3_assets()