Skip to main content

A unofficial Python API client to the Blomp cloud.

Project description

blomp-api

Static Badge PyPI - License PyPI - Version PyPI - Status PyPI - Python Version Pepy Total Downlods

A unofficial Python API client to the Blomp cloud.

Table of contents

Instalation

Blomp API can be installed with pip:

pip install blomp-api

Examples

Getting started with the API

from blomp_api import Blomp

# Log in to your Blomp account
blomp = Blomp("youremail@example.com", "yourpassword")

# Get your cloud root directory
root = blomp.get_root_directory()

Example directory structure for the next examples

(root directory)
├── folder1/
│   ├── file1.ext
│   └── file2.ext
├── folder2/
│   ├── folder3/
│   │   └── file3.ext
│   └── file4.ext
├── file5.txt
└── file6.ext

Access files and folders

# Getting a folder using the get_folder_by_name method
folder1 = root.get_folder_by_name("folder1")

# Getting a file using the get_file_by_name method
file5 = root.get_file_by_name("file5.ext")

# Getting a file from a tuple with all files in the folder
# root.files -> (File(file5.ext), File(file6.ext))
file6 = root.files[-1]

# Getting a folder from a tuple with all subfolders in the folder
# root.subfolders -> (Folder(folder1), Folder(folder2))
folder2 = root.subfolders[1]

# All folders are iterable
# tuple(folder) is equivalent to folder.subfolders+folder.files
# tuple(folder2) -> (Folder(folder3), File(file4.ext))
folder3 = tuple(folder2)[0]

# All folders are subscriptable
# folder[i] is equivalent to tuple(folder)[i]
file1 = folder1[0]
file4 = folder2[1]

Downloading a file and getting download progress

# NOTE: All folder and file variables are the same as in previous examples

# Specifying a directory to save the file
# The following file will be saved as "/path/to/save/file1.ext"
thread1, monitor1 = file1.download("/path/to/save")

# Waiting for file1.ext to complete download
thread1.join()

# Specifying a directory and file name
# The following file will be saved as "/path/to/save/f4.ext"
# If a directory is not specified, then the file will be saved
# in the same directory where the program is running.
# This time we will let the following download occur in parallel
file4.download("/path/to/save/f4.ext")

# Specifying an open file object
with open("file5.ext", "wb") as f5:
    thread5 = file5.download(f5)[0]
    thread5.join()

# Nothing specified
# The following file will be saved as "file6.ext"
thread6, monitor6 = file6.download()

# Monitoring "file6.ext" download progress
while thread6.is_alive():
    loaded = monitor6.loaded
    total = monitor6.total
    progress = int(monitor6.progress)*100

    print(f"\r{loaded} of {total} bytes downloaded ({progress}%)")

Uploading a file and getting upload progress

# NOTE: All folder and file variables are the same as in previous examples

# Uploading a file to root directory
# The file will be saved in the root directory as "file7.ext"
thread7, monitor7 = root.upload("/path/to/file/file7.ext")

# Monitoring "file7.ext" upload progress
while thread7.is_alive():
    loaded = monitor7.loaded
    total = monitor7.total
    progress = int(monitor7.progress)*100

    print(f"\r{loaded} of {total} bytes uploaded ({progress}%)")

# Uploading a file from a file object to "folder1"
# The file will be saved in the folder1 as file8.ext
with open("/path/to/file/file8.ext", "rb") as f8:
    thread8, monitor8 = folder1.upload(f8)
    thread8.join()

# Upload specifying file name
folder3.upload("path/to/file/file9_1.ext", file_name="file9.ext")[0].join()

# Uploading a file when there is already another file
# with the same name in folder.
# If a file of the same name is found and the "replace_if_exists"
# attribute is False (default), FileExistsError is raised.
folder3.upload("path/to/file/file9.ext", replace_if_exists=True)

Other operations with folders

All folder and file variables in the following examples are the same as in the previous examples.

Create a new folder

# Creating a new folder in "folder3" com nome "folder4"
folder3.create_folder("folder4")

Renaming a folder

# Renaming "folder4" to "folder5"
folder4 = folder3.get_folder_by_name("folder4")
folder4.safe_rename("folder5")
print(folder4.name) # Will be printed "folder5"

Cutting or copying files and folders

folder5 = folder3.get_folder_by_name("folder5")
file7 = root.get_file_by_name("file7.ext")

# The following operations apply to both files and folders

# Copying a file to a folder
folder5.paste(file7)

# Cutting a folder to another folder
folder1.paste(folder5, cut=True)

folder1.reload()
folder5.reload()

Deleting files and folders

# Deleting a file
file8 = folder1.get_file_by_name("file8.ext")
folder1.delete(file8)

# Deleting a folder
folder1.delete(folder5)

# Deleting a file by name (also works with folder names)
folder3.delete("file9.ext")

folder1.reload()
folder3.reload()

Other operations with files

All folder and file variables in the following examples are the same as in the previous examples.

Renaming a file

file6.rename("file66.ext")
print(file6.name) # Will be printed "file66.ext"

Sharing a file

# Enabling sharing of "file1.ext" and getting the link
file1_link = file1.share()

# Enabling sharing of "file2.ext" and sending the link to an email list
file2 = folder1.get_file_by_name("file2.ext")
file2_link = file2.share(["email1@example.com", "email2@example.com"])

# Disabling sharing of "file1.ext"
file1.share_switch_off()

# Enabling sharing of "file1.ext"
file1.share_switch_on()

Other information

For more information, type into your Python shell:

help(<blomp_object>)

Where <blomp_object> can be:

  • A Blomp instance
    • Example:
      from blomp import Blomp
      
      blomp = Blomp("youremail@example.com", "yourpassword")
      help(blomp)
      
  • A Folderobject
    • Example:
      root = blomp.get_root_directory()
      help(root)
      
  • A File object
    • Example:
      file = root.get_file_by_name("<file_name>")
      help(file)
      

License

This package is released under the MIT License. See the LICENSE file for details.

Source Code

Source code is available on GitHub.

Changelog

Changelog is available on GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blomp_api-1.0.4.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

blomp_api-1.0.4-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file blomp_api-1.0.4.tar.gz.

File metadata

  • Download URL: blomp_api-1.0.4.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.10

File hashes

Hashes for blomp_api-1.0.4.tar.gz
Algorithm Hash digest
SHA256 eb6c9a8b0a460c37e36b96cd60848dff13c0ad7621e0a4d51a3f04e34c6874de
MD5 90388751b7c5b54876fbe274883640dd
BLAKE2b-256 a330569c373cf2f76c4e9f4db338062883fdb7ac9f8e58219c00ae7a514c54ab

See more details on using hashes here.

File details

Details for the file blomp_api-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: blomp_api-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 17.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.10

File hashes

Hashes for blomp_api-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d9940f903e3f1dfafad63d06a5dcd04e86f1d9d1d51ea3634253dcb8d869414d
MD5 90eb3d81215844606404acf5af2a780c
BLAKE2b-256 5f66e913af724ead87d197925f5f2f2f994d92067ed3d8cdac0157a883d95636

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page