Package: blomp-api
blomp-apiA unofficial Python API client to theBlomp cloud.Table of contentsInstalationExamplesGetting started with the APIExample directory structure for the next examplesAccess files and foldersDownloading a file and getting download progressUploading a file and getting upload progressOther operations with foldersCreate a new folderRenaming a folderCutting or copying files and foldersDeleting files and foldersOther operations with filesRenaming a fileSharing a fileOther informationLicenseSource CodeChangelogInstalationBlomp API can be installed with pip:pipinstallblomp-apiExamplesGetting started with the APIfromblomp_apiimportBlomp# Log in to your Blomp accountblomp=Blomp("youremail@example.com","yourpassword")# Get your cloud root directoryroot=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.extAccess files and folders# Getting a folder using the get_folder_by_name methodfolder1=root.get_folder_by_name("folder1")# Getting a file using the get_file_by_name methodfile5=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 downloadthread1.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 parallelfile4.download("/path/to/save/f4.ext")# Specifying an open file objectwithopen("file5.ext","wb")asf5: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 progresswhilethread6.is_alive():loaded=monitor6.loadedtotal=monitor6.totalprogress=int(monitor6.progress)*100print(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 progresswhilethread7.is_alive():loaded=monitor7.loadedtotal=monitor7.totalprogress=int(monitor7.progress)*100print(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.extwithopen("/path/to/file/file8.ext","rb")asf8:thread8,monitor8=folder1.upload(f8)thread8.join()# Upload specifying file namefolder3.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 foldersAll 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 foldersfolder5=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 folderfolder5.paste(file7)# Cutting a folder to another folderfolder1.paste(folder5,cut=True)folder1.reload()folder5.reload()Deleting files and folders# Deleting a filefile8=folder1.get_file_by_name("file8.ext")folder1.delete(file8)# Deleting a folderfolder1.delete(folder5)# Deleting a file by name (also works with folder names)folder3.delete("file9.ext")folder1.reload()folder3.reload()Other operations with filesAll folder and file variables in the following examples are the same as in the previous examples.Renaming a filefile6.rename("file66.ext")print(file6.name)# Will be printed "file66.ext"Sharing a file# Enabling sharing of "file1.ext" and getting the linkfile1_link=file1.share()# Enabling sharing of "file2.ext" and sending the link to an email listfile2=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 informationFor more information, type into your Python shell:help(<blomp_object>)Where<blomp_object>can be:ABlompinstanceExample:fromblompimportBlompblomp=Blomp("youremail@example.com","yourpassword")help(blomp)AFolderobjectExample:root=blomp.get_root_directory()help(root)AFileobjectExample:file=root.get_file_by_name("<file_name>")help(file)LicenseThis package is released under the MIT License. See theLICENSEfile for details.Source CodeSource code is available onGitHub.ChangelogChangelog is available onGitHub.