From 2046f85d6b2c7432ee740df3189734fbea64d4f5 Mon Sep 17 00:00:00 2001 From: admtracksteel Date: Sat, 25 Jul 2026 19:26:55 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Auto-deploy:=20BrainKP=20atualiz?= =?UTF-8?q?ado=20em=2025/07/2026=2019:26:55?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/app.py b/app.py index dd60f8e..8056cbd 100644 --- a/app.py +++ b/app.py @@ -266,23 +266,41 @@ def cleanup_backups(backup_type): grouped[key] = [] grouped[key].append(item) - deleted_count = 0 - errors = [] + import tempfile + import os + to_delete_paths = [] for key, group_items in grouped.items(): # Sort by ModTime descending (newest first) group_items.sort(key=lambda x: x.get("ModTime", ""), reverse=True) # Keep first 2 to_delete = group_items[2:] for item in to_delete: - path = item.get("Path", item.get("Name")) - full_remote_path = f"{remote}/{path}" - cmd = ["rclone", "deletefile", full_remote_path, "--drive-root-folder-id", "1ey-5aABgHDtirxeJarWy0ZmeqQPVTYtm"] - result = subprocess.run(cmd, capture_output=True, text=True, timeout=60) - if result.returncode == 0: - deleted_count += 1 - else: - errors.append(f"Failed to delete {path}: {result.stderr}") + to_delete_paths.append(item.get("Path", item.get("Name"))) + + deleted_count = 0 + errors = [] + + if to_delete_paths: + with tempfile.NamedTemporaryFile(mode='w', delete=False) as f: + for p in to_delete_paths: + f.write(p + '\n') + list_file = f.name + + cmd = [ + "rclone", "delete", remote, + "--files-from", list_file, + "--drive-root-folder-id", "1ey-5aABgHDtirxeJarWy0ZmeqQPVTYtm", + "--drive-use-trash=false" # permanently delete to immediately free space + ] + + result = subprocess.run(cmd, capture_output=True, text=True, timeout=300) + os.remove(list_file) + + if result.returncode == 0: + deleted_count = len(to_delete_paths) + else: + errors.append(f"Failed to bulk delete: {result.stderr}") # invalidate cache global _stats_cache