Skip to content
Snippets Groups Projects
Commit 673f641f authored by Philipp Goymann's avatar Philipp Goymann
Browse files

update

parent 2c2dbb85
No related branches found
No related tags found
1 merge request!8Unstabel
Pipeline #369408 passed
......@@ -27,11 +27,13 @@ def run_s3_functions():
s3 = Loosolab_s3(credentials, logger=False)
else:
s3 = Loosolab_s3(credentials)
if args.output:
output = args.output
else:
output = os.getcwd()
if args.read_form_dict:
bucket_dict = args.read_form_dict
bucket_dict = args.read_form_dict
bucketname = bucket_dict.split(':')[0]
files = [bucket_dict.split(':')[1]]
if args.bucketname:
......@@ -61,7 +63,7 @@ def run_s3_functions():
else:
utils.check_argparser(args, ['secret', "key", "files", "bucketname"])
s3.download_s3_objects( bucketname, files, destination=os.getcwd(), download_bar=True)
s3.download_s3_objects( bucketname, files, destination=output, download_bar=True)
#--------------------------------------------------------------------------------------------------------#
# parse command line arguments:
def argparsefunc():
......@@ -83,6 +85,7 @@ def argparsefunc():
parser.add_argument("--files", nargs='+', help="bucket upload files")
parser.add_argument("--bucketname")
parser.add_argument("--no_log", action='store_true', help='disable logging')
parser.add_argument("--output", help='Download folder')
parser.add_argument('-h', '--help', action='store_true', dest='show_help')
args = parser.parse_args()
......
......@@ -215,7 +215,7 @@ class Loosolab_s3:
local_tag = self.etag_checksum(local_file_name)
else:
local_tag = hashlib.md5(open(local_file_name).read().encode('utf-8')).hexdigest()
print('\n')
self.logger.info('local e-tag of ' + local_file_name +' is : ' + local_tag)
self.logger.info('s3 e-tag of ' + file_name +' is : ' + s3_e_tag)
......@@ -475,25 +475,11 @@ class Loosolab_s3:
timeout : float
how long to watch for file in minutes
"""
bucket = self.session.Bucket(bucket_name)
modBool = False
# check if exists
for local_file in file_list:
file_name = os.path.basename(local_file)
file_path = os.path.join(destination, local_file)
if compare:
modBool = self.compare_s3_etag(bucket_name, file_name, file_path)
if self.check_s3_object_ex(bucket_name, file_name) and not modBool:
if not os.path.exists(os.path.dirname(file_path)):
os.makedirs(os.path.dirname(file_path))
self.logger.info('Created directory: ' + os.path.dirname(file_path))
if self.multipart_upload and not download_bar:
bucket.download_file(file_name, file_path)
elif download_bar:
self.download(file_path,bucket_name, file_name)
else:
bucket.download_file(file_name, file_path, Config=self.transfer)
try:
for local_file in file_list:
file_name = os.path.basename(local_file)
......@@ -501,11 +487,14 @@ class Loosolab_s3:
if compare:
modBool = self.compare_s3_etag(bucket_name, file_name, file_path)
if self.check_s3_object_ex(bucket_name, file_name) and not modBool:
if not os.path.exists(file_path):
if not os.path.exists(os.path.dirname(file_path)):
os.makedirs(os.path.dirname(file_path))
self.logger.info('Created directory: ' + os.path.dirname(file_path))
if self.multipart_upload:
if self.multipart_upload and not download_bar:
bucket.download_file(file_name, file_path)
elif download_bar:
self.download(file_path,bucket_name, file_name)
else:
bucket.download_file(file_name, file_path, Config=self.transfer)
except Exception as e:
......@@ -514,18 +503,23 @@ class Loosolab_s3:
#--------------------------------------------------------------------------------------------------------#
def download(self, local_file_name, s3_bucket, s3_object_key):
meta_data = self.client.head_object(Bucket=s3_bucket, Key=s3_object_key)
total_length = int(meta_data.get('ContentLength', 0))
total_length = float(meta_data.get('ContentLength', 0))
downloaded = 0
part = total_length / 10
count = total_length / 10
def progress(chunk):
nonlocal downloaded
nonlocal part
nonlocal count
downloaded += chunk
done = int(50 * downloaded / total_length)
if downloaded > count:
print(str(int((100 / total_length ) * count)) + ' % Downloaded!')
count += part
print("\r[%s%s]" % ('=' * done, ' ' * (50-done)) , end="\r")
#print("\r[%s%s]" % ('=' * done, ' ' * (50-done)) , end="\r")
#sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)) )
#sys.stdout.flush()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment