Once files are uploaded to Encord, their cloud storage information can be updated at any time. This feature allows you to adjust the URL or cloud integration of a file without re-importing the data.
from encord.client import EncordUserClientfrom uuid import UUID# Initialize user clientuser_client = EncordUserClient.create_with_ssh_private_key( ssh_private_key_path="<private_key_path>")# Update the URL of a storage item by its UUIDitem_uuid ="<data-unit-id>"new_url ="https://new-cloud-location.com/new-path/to-file"update_storage_item_cloud_info( user_client=user_client, item=item_uuid, new_url=new_url, verify_access=True,)
Use the following script to move various types of files to a different folder in Files. Ensure that you:
Replace <private_key_path> with the path to your private key.
Replace File Name with the name of the file you want to move to a new folder.
Replace Target Folder Name with the name of the folder you want to move the file to.
from encord import EncordUserClientfrom encord.storage import StorageItemType, FoldersSortBy# Instantiate Encord client by substituting the path to your private keyuser_client = EncordUserClient.create_with_ssh_private_key( ssh_private_key_path="<private_key_path>")# Define the search criteria for the data unit and target folderitem_search_criteria ="File Name"# Change this to match the data unit's namefolder_search_criteria ="Target Folder Name"# Change this to match the target folder's name# Retrieve the target folder by its name (assuming only one match)target_folder =next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000))# Search for the specific data unit using its name, assuming it will only return one resultitem =next(user_client.find_storage_items( search=item_search_criteria, is_in_dataset=None, item_types=[StorageItemType.IMAGE], order=FoldersSortBy.NAME, desc=False, get_signed_urls=False, page_size=1000))# Move the found data unit to the retrieved target folderprint(f"Moving item {item.uuid} to folder {target_folder.uuid}")item.move_to_folder(target_folder.uuid)
Use the following scripts to delete different types of files from Files. Ensure that you:
Replace <private_key_path> with the path to your private key.
Replace File Name with the name of the file you want to move to a new folder.
Replace Parent Folder with the name of the folder containing the file you want to delete.
from encord import EncordUserClientfrom encord.storage import StorageItemType, FoldersSortBy# Instantiate Encord clientuser_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")# Find the image by nameimage_name ="File Name"# Define the search criteria for the folderfolder_search_criteria ="Parent Folder"# Retrieve the target foldertry: folder =next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)) images =list(user_client.find_storage_items(search=image_name, item_types=[StorageItemType.IMAGE], order=FoldersSortBy.NAME, desc=False, page_size=1000))if images:# Delete the image folder.delete_storage_items(item_uuids=[images[0].uuid], remove_unused_frames=True)print("Image deleted successfully.")else:print("No image found with the specified name.")except StopIteration:print("No folder found with the specified criteria.")
Use the following script to update the name and description of an existing folder in Files. Ensure that you:
Replace <private_key_path> with the path to your private key.
Replace Cat Videos with the name of the folder you want to update properties for.
Replace Cat videos and images with the new name you want to give the folder.
Replace Images and videos of cats with the description you want to give the folder.
Use the list_storage_folders and find_storage_folders methods to search for specific folders.
from encord import EncordUserClientfrom encord.orm.storage import FoldersSortBy# Instantiate Encord client using your SSH private keyuser_client = EncordUserClient.create_with_ssh_private_key( ssh_private_key_path="<private_key_path>")# Define search parametersfolder_name_to_find ="Cat Videos"search_result = user_client.find_storage_folders( search=folder_name_to_find, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)# Fetch the folder assuming it's the first one in the search resultfolder =next(search_result,None)if folder isNone:print(f"No folder found with name {folder_name_to_find}")else:# Define new properties for the folder new_name ="Cat videos and images" new_description ="Images and videos of cats"# Update the folder properties folder.update(name=new_name, description=new_description)print(f"Folder '{folder_name_to_find}' updated to new name '{new_name}' and description '{new_description}'")
You can move folders between different parent folders in Files, including moving them to the root (no parent). The following script demonstrates how a folder with the name Folder Name 3 is moved between 2 different target folders. The script must be modified to suit your needs.
Ensure that you:
Replace <private_key_path> with the path to your private key.
Replace Folder Name 1 with the name of a target folder.
Replace Folder Name 2 with the new name of another target folder.
Replace Folder Name 3 with the name of the folder that is moved.
Folders
from encord import EncordUserClientfrom encord.storage import FoldersSortBy# Instantiate Encord client by substituting the path to your private keyuser_client = EncordUserClient.create_with_ssh_private_key( ssh_private_key_path="<private_key_path>")# Search for folders by name using the find_storage_folders functionfolder_1 =next(user_client.find_storage_folders(search="Folder Name 1", dataset_synced=False, order=FoldersSortBy.NAME, desc=False, page_size=1000))folder_2 =next(user_client.find_storage_folders(search="Folder Name 2", dataset_synced=False, order=FoldersSortBy.NAME, desc=False, page_size=1000))folder_3 =next(user_client.find_storage_folders(search="Folder Name 3", dataset_synced=False, order=FoldersSortBy.NAME, desc=False, page_size=1000))# Move folder_3 under folder_1folder_3.move_to_folder(folder_1.uuid)# Move folder_3 under folder_2folder_3.move_to_folder(folder_2.uuid)# Move folder_3 to root folder (passing None moves it to the root level)folder_3.move_to_folder(None)
Use the following script to delete a specific folder from Files. Ensure that you:
Replace <private_key_path> with the path to your private key.
Replace Specific Folder Name with the name of the folder you want to delete.
from encord import EncordUserClientfrom encord.storage import FoldersSortBy# Instantiate Encord client by substituting the path to your private keyuser_client = EncordUserClient.create_with_ssh_private_key( ssh_private_key_path="<private_key_path>")# Define the search criteria for the folderfolder_search_criteria ="Specific Folder Name"# Retrieve the target foldertry: folder_to_delete =next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000))print(f"Deleting folder {folder_to_delete.uuid}")# Delete the folder and verify it cannot be accessed anymore folder_to_delete.delete()print("Folder deleted successfully.")try:# Try to refetch the folder to verify it's been deleted user_client.get_storage_folder(folder_to_delete.uuid)print("Error: Folder still accessible after deletion.")except Exception as e:print(f"Verification successful: {str(e)}")except StopIteration:print("No folder found with the specified criteria.")