Simplistic unified interface for uploading and downloading files to the cloud.
Supports
- Azure Blob Storage ✅
- Socaity Upload API
- Replicate Upload API
Install via pypi with:
# to support all cloud providers
pip install fastcloud
# support azure blob storage
pip install fastcloud[azure]
Or check-out the repository and work from there.
To directly up and download files to the cloud storage provider, you can use the following code snippets.
from fastcloud import AzureBlobStorage
# Create storage client
cloud_store = AzureBlobStorage(connection_string="DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=...")
Recommendation: Use environment variables to store the cloud storage access tokens / credentials.
Option 1: Just with plain bytes io
# upload. Will create a file in the cloud with the name my_file
file_url = cloud_store.upload(file="path/to/file", file_name="my_file", folder="my_upload_dir")
# download. Will download the file and save it to the save-path
cloud_store.download(file_id, save_path="path/to/save")
Option 2: with media-toolkit. Media-toolkit provides easy to use classes for images, videos, audio files.
from media_toolkit import ImageFile
# upload
my_img = ImageFile.from_np_array(my_cv2_img)
file_url = cloud_store.upload(file=my_img)
# download and parse as media_file
media_file = cloud_store.download(file_url)
How to setup Azure Blob Storage and get connection string?
- Go to portal.azure.com and login.
- Create a storage account of your choice (choose Blob Storage option)
- Navigate to storage account, click on containers and add container
- Go back to your storage account. Click on Access keys and copy the connection string.
- Add the connection string to your environment variables.
Missing a cloud provider?
- Just implement the missing class in core/providers with inheritance of the interface i_cloud_storage and make a pull request
Missing a feature?
- Feel free to raise an issue. Better tough: just implement it and make a PR.
Also have a look at media-toolkit, FastTaskAPI for your personal cloud solution.