immich_lib/lib.rs
1//! Immich API library for duplicate management.
2//!
3//! This library provides a typed client for interacting with the Immich REST API,
4//! with a focus on duplicate detection and metadata-aware duplicate selection.
5//!
6//! # Example
7//!
8//! ```no_run
9//! use immich_lib::ImmichClient;
10//!
11//! # async fn example() -> immich_lib::Result<()> {
12//! let client = ImmichClient::new("https://immich.example.com", "your-api-key")?;
13//! let duplicates = client.get_duplicates().await?;
14//!
15//! for group in duplicates {
16//! println!("Duplicate group {} has {} assets", group.duplicate_id, group.assets.len());
17//! }
18//! # Ok(())
19//! # }
20//! ```
21//!
22//! # Command-Line Tool
23//!
24//! A companion binary `immich-dupes` is available for managing duplicates from the command line.
25//! Pre-built binaries and installation instructions are available in the
26//! [GitHub repository](https://github.com/richardjlyon/immich-lib).
27
28pub mod client;
29pub mod error;
30pub mod executor;
31pub mod letterbox;
32pub mod models;
33pub mod scoring;
34pub mod testing;
35
36pub use client::{ImmichClient, UploadResponse};
37pub use error::{ImmichError, Result};
38pub use executor::Executor;
39pub use letterbox::{detect_aspect_ratio, find_letterbox_pairs, AspectRatio, LetterboxAnalysis, LetterboxPair};
40pub use scoring::{detect_conflicts, DuplicateAnalysis, MetadataConflict, MetadataScore, ScoredAsset};