Commit Graph
17 Commits
Author SHA1 Message Date
flanandClaude Sonnet 4.6 eedbd3180a fix: resolve all linting errors, add tests, bump base image
Linting (ruff):
- cli.py: sort relative imports (I001)
- jobs.py: remove unused get_people import (F401), wrap long line (E501)
- executor.py: remove unused success variable (F841), wrap 4 long lines (E501)

Tests (24 passing):
- tests/test_config.py: config singleton defaults + env var overrides
- tests/test_upload_tracker.py: mark/filter/reset/summary logic
- tests/test_immich_api.py: filter_recent_assets date boundary cases
- tests/test_jobs.py: _resolve_strategy with LIMIT env var and fallbacks
- pyproject.toml: add [tool.pytest.ini_options] testpaths=["tests"] so
  pytest doesn't scan .venv in CI

Security:
- Dockerfile: bump CUDA base from 12.6.3 to 12.9.2 to pick up patched
  Ubuntu packages (fixes Dependabot low-severity alert)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 00:42:38 +00:00
flanandClaude Sonnet 4.6 b5911c6338 refactor: split cli.py into cli, jobs, and executor modules
- cli.py: main() entry point and orchestration only
- jobs.py: configuration phase (auto/interactive, strategy, diversity selection)
- executor.py: execution phase (image download/crop, Frigate upload)

No logic changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 00:25:29 +00:00
flanandClaude Sonnet 4.6 86db51e00f fix: catch JSONDecodeError in API calls, use get_headers() consistently
- get_people() and fetch_all_assets() only caught RequestException, leaving
  JSONDecodeError unhandled if Immich returns a non-JSON 200 response
- cli.py thumbnail fetch used a raw header dict instead of get_headers()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 00:09:11 +00:00
flanandClaude Sonnet 4.6 d3f3f2b4e2 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>
2026-06-12 00:03:29 +00:00
flanandClaude Sonnet 4.6 d106d30060 feat: RGBA fix, per-person tracking, dry-run, retry-rejected, reset-person
- Fix RGBA→JPEG error: convert all images to RGB before saving
- Upload tracker: per-person breakdown in JSON, reset_person(), get_person_summary()
- mark_rejected() only fires on face-detection failures (not all HTTP 400s)
- New env vars: DRY_RUN, RETRY_REJECTED, RESET_PERSON
- Tracker summary printed at startup showing uploaded/rejected counts per person
- Document new env vars in compose.yml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:39:11 +00:00
flan 7b83dbd114 fix nonetype error 2026-06-11 12:51:59 -04:00
flan 30c70fb00b track uploaded files to prevent dupes. uses immich ID of original image 2026-06-11 11:34:13 -04:00
flan 3556ec54b8 Update cli.py 2026-06-11 01:32:36 -04:00
flan e7ab034356 Update cli.py 2026-06-11 01:26:16 -04:00
root 54960a0229 automated update: 2026-06-11 00:34:20 2026-06-11 00:34:20 -04:00
root b9b734507b automated update: 2026-06-10 22:25:47 2026-06-10 22:25:47 -04:00
root 5972402d9c automated update: 2026-06-10 21:03:59 2026-06-10 21:03:59 -04:00
Holden 0ade7f0da1 fix spaces in names 2026-06-10 19:00:07 -04:00
Holden a2f18484a6 better logging 2026-06-10 18:31:43 -04:00
flan 7573e9384b Update cli.py 2026-06-10 15:19:09 -04:00
Sebastian G cc7293b66a feat: Implement advanced diversity selection algorithms, comprehensive quality filtering, and caching for improved image curation. 2026-03-02 20:09:45 -05:00
Sebastian G 58d58ec2e0 initialize if_curator project with core modules for image embedding, processing, diversity analysis, and Immich API integration. 2026-01-18 17:11:09 -05:00