A unofficial Python API client to the Blomp cloud.
- Instalation
- Examples
- Other information
- License
- Source Code
- Changelog
Blomp API can be installed with pip:
pip install blomp-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()
(root directory)
βββ folder1/
β βββ file1.ext
β βββ file2.ext
βββ folder2/
β βββ folder3/
β β βββ file3.ext
β βββ file4.ext
βββ file5.txt
βββ file6.ext
# 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]
# 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}%)")
# 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)
All folder and file variables in the following examples are the same as in the previous examples.
# Creating a new folder in "folder3" com nome "folder4"
folder3.create_folder("folder4")
# Renaming "folder4" to "folder5"
folder4 = folder3.get_folder_by_name("folder4")
folder4.safe_rename("folder5")
print(folder4.name) # Will be printed "folder5"
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 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()
All folder and file variables in the following examples are the same as in the previous examples.
file6.rename("file66.ext")
print(file6.name) # Will be printed "file66.ext"
# 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()
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)
- Example:
- A
Folder
object- Example:
root = blomp.get_root_directory() help(root)
- Example:
- A
File
object- Example:
file = root.get_file_by_name("<file_name>") help(file)
- Example:
This package is released under the MIT License. See the LICENSE file for details.
Source code is available on GitHub.
Changelog is available on GitHub.