Skip to content

Instantly share code, notes, and snippets.

@joestump
Created July 1, 2013 17:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joestump/5903069 to your computer and use it in GitHub Desktop.
Save joestump/5903069 to your computer and use it in GitHub Desktop.
from boto.s3.connection import S3Connection
from progressbar import Percentage, ETA, FileTransferSpeed, Bar, ProgressBar
class S3Transfer(object):
def __init__(self, aws_key, aws_secret):
self.conn = S3Connection(aws_key, aws_secret)
self.progress_bar = None
def _update_progress_bar(self, bytes_transferred, size):
self.progress_bar.update(bytes_transferred)
def get_object(self, bucket_name, object_name, save_to):
bucket = self.conn.get_bucket(bucket_name)
key = bucket.get_key(object_name)
widgets = ['%s/%s: ' % (bucket.name, key.name), Percentage(), ' ', Bar(marker='=',left='[',right=']'),
' ', ETA(), ' ', FileTransferSpeed()]
self.progress_bar = ProgressBar(widgets=widgets, maxval=key.size)
self.progress_bar.start()
key.get_contents_to_filename(save_to, cb=self._update_progress_bar, num_cb=10000)
self.progress_bar.finish()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment