From d3f3f2b4e2a5b689eaa0db3f8eea9a29b6364e15 Mon Sep 17 00:00:00 2001 From: Holden Date: Fri, 12 Jun 2026 00:03:29 +0000 Subject: [PATCH] fix: upload only files created in current run, not entire output dir upload_to_frigate() was scanning the output directory with os.listdir(), picking up leftover files from previous runs and re-uploading them. Use asset_map (populated by execute_jobs) to upload only current-run files. Co-Authored-By: Claude Sonnet 4.6 --- if_curator/cli.py | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/if_curator/cli.py b/if_curator/cli.py index 022eb8f..3840930 100644 --- a/if_curator/cli.py +++ b/if_curator/cli.py @@ -257,18 +257,9 @@ def upload_to_frigate(jobs: list[dict]) -> None: total_files = 0 for job in jobs: name = job["person"]["name"] - person_dir = os.path.join(Config.OUTPUT_DIR, name) - if not os.path.isdir(person_dir): - continue - person_files = sorted( - f for f in os.listdir(person_dir) - if f.lower().endswith((".jpg", ".jpeg", ".png", ".webp")) - ) - total_files += len(person_files) - - # Recover asset IDs from the job's asset_map asset_map = job.get("asset_map", {}) filename_to_asset_id[name] = asset_map + total_files += len(asset_map) if total_files == 0: rprint(" [yellow]No images found to upload.[/yellow]") @@ -300,18 +291,13 @@ def upload_to_frigate(jobs: list[dict]) -> None: progress.console.print(f" [dim]⏭️ {name}: no output directory, skipping[/dim]") continue - person_files = sorted( - f for f in os.listdir(person_dir) - if f.lower().endswith((".jpg", ".jpeg", ".png", ".webp")) - ) + asset_map = filename_to_asset_id.get(name, {}) + person_files = sorted(asset_map.keys()) if not person_files: progress.console.print(f" [dim]⏭️ {name}: no images found[/dim]") continue - # Get the asset map for this person - asset_map = filename_to_asset_id.get(name, {}) - progress.console.print(f" 📁 {name}: uploading {len(person_files)} image(s)...") person_uploaded = 0 person_failed = 0