Created
April 12, 2025 15:36
-
-
Save wathika-eng/fe191d9f032d65122da1149ea588ab09 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import cloudinary | |
| import cloudinary.api | |
| import cloudinary.uploader | |
| # Configure Cloudinary with your credentials | |
| cloudinary.config( | |
| cloud_name="", | |
| api_key="", | |
| api_secret="", | |
| ) | |
| RESOURCE_TYPES = ["image", "raw", "video"] | |
| def delete_all_resources_in_folder(folder): | |
| print(f"Deleting all resources in: {folder}") | |
| for resource_type in RESOURCE_TYPES: | |
| next_cursor = None | |
| while True: | |
| try: | |
| result = cloudinary.api.resources( | |
| type="upload", | |
| resource_type=resource_type, | |
| prefix=folder, | |
| max_results=100, | |
| next_cursor=next_cursor | |
| ) | |
| except cloudinary.exceptions.Error as e: | |
| print(f"Error fetching resources ({resource_type}) in {folder}: {e}") | |
| break | |
| for res in result.get("resources", []): | |
| print(f"Deleting {res['public_id']} ({resource_type})") | |
| cloudinary.uploader.destroy( | |
| res["public_id"], | |
| resource_type=resource_type, | |
| invalidate=True | |
| ) | |
| next_cursor = result.get("next_cursor") | |
| if not next_cursor: | |
| break | |
| def delete_all_subfolders(folder): | |
| try: | |
| subfolders = cloudinary.api.subfolders(folder).get("folders", []) | |
| except cloudinary.exceptions.NotFound: | |
| return | |
| for sub in subfolders: | |
| sub_path = sub["path"] | |
| delete_all_subfolders(sub_path) | |
| delete_all_resources_in_folder(sub_path) | |
| try: | |
| print(f"Deleting folder: {sub_path}") | |
| cloudinary.api.delete_folder(sub_path) | |
| except Exception as e: | |
| print(f"Could not delete subfolder '{sub_path}': {e}") | |
| def delete_folder(folder): | |
| delete_all_subfolders(folder) | |
| delete_all_resources_in_folder(folder) | |
| try: | |
| cloudinary.api.delete_folder(folder) | |
| print(f"Deleted folder: {folder}") | |
| except Exception as e: | |
| print(f"Could not delete folder '{folder}': {e}") | |
| # Usage | |
| delete_folder("folder_name/") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment