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:
+3
-17
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user