Hi There,

Here's the full code, if it helps:

"""
Takes a list of filenames via standard input and uploads them to
Amazon S3.

Requires S3.py:
        
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134&categoryID=47

Usage:
        cd /directory/with/media/files/
        find | grep -v ".svn" | python /path/to/update_s3.py

Before you use this, change the aws_access_key_id, aws_secret_key and
bucket_name variables at the top of the file.

You can run this multiple times on the same files -- it'll just
override the
files that were in your S3 account previously.
"""

import mimetypes
import os
import settings
import os.path
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from custom_filters import filename_slugify
import S3
import settings

aws_access_key_id = settings.AWS_ACCESS_KEY_ID
aws_secret_key = settings.AWS_SECRET_KEY

def update_s3(bucket_name=bucket_name):
        conn = S3.AWSAuthConnection(aws_access_key_id, aws_secret_key)
        for line in sys.stdin:
                filename = os.path.normpath(line[:-1])
                if ((filename == '.' or not os.path.isfile(filename)) or
(filename.find('ds_store') >= 0)):
                        continue # Skip this, because it's not a file.
                print "Uploading %s" % filename_slugify(filename)
                filedata = open(filename, 'rb').read()
                content_type = mimetypes.guess_type(filename)[0]
                if not content_type:
                        content_type = 'text/plain'
                conn.put(bucket_name, filename_slugify(filename),
S3.S3Object(filedata),
                        {'x-amz-acl': 'private', 'Content-Type': content_type})

if __name__ == "__main__":
        bucket_name = raw_input('Name of the bucket you wish the files to be
placed into? ')
        update_s3()


Basically I pipe some files into the script - so would this cause a
linebreak?

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to