38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
![]() |
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)
|