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 <noreply@anthropic.com>
This commit is contained in:
2026-06-12 00:03:29 +00:00
co-authored by Claude Sonnet 4.6
parent e2005fb8ef
commit d3f3f2b4e2
+3 -17
View File
@@ -257,18 +257,9 @@ def upload_to_frigate(jobs: list[dict]) -> None:
total_files = 0 total_files = 0
for job in jobs: for job in jobs:
name = job["person"]["name"] 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", {}) asset_map = job.get("asset_map", {})
filename_to_asset_id[name] = asset_map filename_to_asset_id[name] = asset_map
total_files += len(asset_map)
if total_files == 0: if total_files == 0:
rprint(" [yellow]No images found to upload.[/yellow]") 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]") progress.console.print(f" [dim]⏭️ {name}: no output directory, skipping[/dim]")
continue continue
person_files = sorted( asset_map = filename_to_asset_id.get(name, {})
f for f in os.listdir(person_dir) person_files = sorted(asset_map.keys())
if f.lower().endswith((".jpg", ".jpeg", ".png", ".webp"))
)
if not person_files: if not person_files:
progress.console.print(f" [dim]⏭️ {name}: no images found[/dim]") progress.console.print(f" [dim]⏭️ {name}: no images found[/dim]")
continue 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)...") progress.console.print(f" 📁 {name}: uploading {len(person_files)} image(s)...")
person_uploaded = 0 person_uploaded = 0
person_failed = 0 person_failed = 0