| """ |
| Google Cloud Util Functions: |
| - Upload to Google Storage Bucket |
| - Delete from Google Storage Bucket |
| - Generate signed URL |
| """ |
| import os |
| import datetime |
|
|
| from google.cloud import storage |
| from google.cloud.storage.blob import Blob |
|
|
| |
| client = storage.Client() |
|
|
| def upload_blob(bucket_name, source_file_name, destination_blob_name, content_type='', algo_unique_key=''): |
| """Uploading File to Google Storage Bucket |
| |
| Args: |
| bucket_name (str): Google Storage Bucket Name |
| source_file_name (str): Local Absolute Filpath to upload |
| destination_blob_name (str): File Name used to store in bucket |
| content_type (str, optional): The content type of the file being uploaded |
| algo_unique_key (str, optional): [description]. Defaults to ''. Algorithmia Data Source Bucket Unique Key |
| |
| Returns: |
| [str]: Google Storage Object URI, if algorithmia key is given the same is modified. |
| """ |
| |
| bucket = client.get_bucket(bucket_name) |
| blob = bucket.blob(destination_blob_name) |
| blob.upload_from_filename(source_file_name, content_type=content_type) |
|
|
| data_uri = blob.self_link |
| |
| if algo_unique_key!="": |
| return os.path.join("gs+{}://{}".format(algo_unique_key, bucket_name), data_uri.split("/")[-1]) |
| |
| return os.path.join("gs://{}".format(bucket_name), data_uri.split("/")[-1]) |
|
|
| def delete_blob(bucket_name, blob_name): |
| """Deletes a blob from the bucket.""" |
| |
| |
|
|
| bucket = client.bucket(bucket_name) |
| blob = bucket.blob(blob_name) |
| blob.delete() |
|
|
| print("Blob {} deleted.".format(blob_name)) |
|
|
| def download_video(bucket_name, filename, output_filename): |
| bucket = client.get_bucket(bucket_name) |
| |
| blob = bucket.blob(filename) |
| |
| blob.download_to_filename(output_filename) |
|
|
| return output_filename |
|
|
| def generate_signed_url(output_uri): |
| expiration_time = datetime.timedelta(minutes=5) |
|
|
| blob = Blob.from_string(output_uri, client=client) |
| |
| signed_url = blob.generate_signed_url(expiration=expiration_time, version='v4', response_disposition='attachment') |
|
|
| return signed_url |