Spaces:
Running
Running
import hashlib | |
from enum import Enum | |
import boto3 | |
from botocore.client import BaseClient | |
# S3 HANDLING ###################################################################################### | |
def get_md5(fpath): | |
with open(fpath, "rb") as f: | |
file_hash = hashlib.md5() | |
while chunk := f.read(8192): | |
file_hash.update(chunk) | |
return file_hash.hexdigest() | |
def upload_file_to_bucket(s3_client, file_obj, bucket, s3key): | |
"""Upload a file to an S3 bucket | |
:param file_obj: File to upload | |
:param bucket: Bucket to upload to | |
:param s3key: s3key | |
:param object_name: S3 object name. If not specified then file_name is used | |
:return: True if file was uploaded, else False | |
""" | |
# Upload the file | |
return s3_client.upload_fileobj( | |
file_obj, bucket, s3key, | |
ExtraArgs={"ACL": "public-read", "ContentType": "Content-Type: audio/mpeg"} | |
) | |
def s3_auth(aws_access_key_id, aws_secret_access_key, region_name) -> BaseClient: | |
s3 = boto3.client( | |
service_name='s3', | |
aws_access_key_id=aws_access_key_id, | |
aws_secret_access_key=aws_secret_access_key, | |
region_name=region_name | |
) | |
return s3 | |
def get_list_of_buckets(s3: BaseClient): | |
response = s3.list_buckets() | |
buckets = {} | |
for buckets in response['Buckets']: | |
buckets[response['Name']] = response['Name'] | |
BucketName = Enum('BucketName', buckets) | |
return BucketName | |
if __name__ == '__main__': | |
import os | |
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID'] | |
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY'] | |
S3_BUCKET = "synthia-research" | |
S3_FOLDER = "huggingface_spaces_demo" | |
AWS_REGION = "eu-west-3" | |
s3 = s3_auth(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION) | |
print(s3.list_buckets()) | |
s3key = f'{S3_FOLDER}/015.WAV' | |
#print(upload_file_to_bucket(s3, file_obj, S3_BUCKET, s3key)) | |