diff options
Diffstat (limited to 'examples/download.py')
-rw-r--r-- | examples/download.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/download.py b/examples/download.py new file mode 100644 index 0000000..5e3ebd0 --- /dev/null +++ b/examples/download.py @@ -0,0 +1,37 @@ +import logging + +from swiftclient.service import SwiftService, SwiftError +from sys import argv + +logging.basicConfig(level=logging.ERROR) +logging.getLogger("requests").setLevel(logging.CRITICAL) +logging.getLogger("swiftclient").setLevel(logging.CRITICAL) +logger = logging.getLogger(__name__) + +def is_png(obj): + return ( + obj["name"].lower().endswith('.png') or + obj["content_type"] == 'image/png' + ) + +container = argv[1] +with SwiftService() as swift: + try: + list_options = {"prefix": "archive_2016-01-01/"} + list_parts_gen = swift.list(container=container) + for page in list_parts_gen: + if page["success"]: + objects = [ + obj["name"] for obj in page["listing"] if is_png(obj) + ] + for down_res in swift.download( + container=container, + objects=objects): + if down_res['success']: + print("'%s' downloaded" % down_res['object']) + else: + print("'%s' download failed" % down_res['object']) + else: + raise page["error"] + except SwiftError as e: + logger.error(e.value) |