1import logging 2 3from swiftclient.service import SwiftService, SwiftError 4from sys import argv 5 6logging.basicConfig(level=logging.ERROR) 7logging.getLogger("requests").setLevel(logging.CRITICAL) 8logging.getLogger("swiftclient").setLevel(logging.CRITICAL) 9logger = logging.getLogger(__name__) 10 11def is_png(obj): 12 return ( 13 obj["name"].lower().endswith('.png') or 14 obj["content_type"] == 'image/png' 15 ) 16 17container = argv[1] 18with SwiftService() as swift: 19 try: 20 list_options = {"prefix": "archive_2016-01-01/"} 21 list_parts_gen = swift.list(container=container) 22 for page in list_parts_gen: 23 if page["success"]: 24 objects = [ 25 obj["name"] for obj in page["listing"] if is_png(obj) 26 ] 27 for down_res in swift.download( 28 container=container, 29 objects=objects): 30 if down_res['success']: 31 print("'%s' downloaded" % down_res['object']) 32 else: 33 print("'%s' download failed" % down_res['object']) 34 else: 35 raise page["error"] 36 except SwiftError as e: 37 logger.error(e.value) 38