immich-tools/README.md
Marc Plano-Lesay 9ad599a2b4
All checks were successful
Build and test / Build AMD64 (pull_request) Successful in 1m16s
Build and test / Tests (pull_request) Successful in 1m25s
Checking Renovate configuration / validate (pull_request) Successful in 1m55s
Checking yaml / Run yamllint (pull_request) Successful in 36s
Build and test / Clippy (pull_request) Successful in 31s
Build and test / Generate Documentation (pull_request) Successful in 55s
feat: list assets per album
2025-08-13 14:47:33 +10:00

177 lines
4.3 KiB
Markdown

# Immich Tools
[![Crates.io](https://img.shields.io/crates/v/immich-tools.svg)](https://crates.io/crates/immich-tools)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
`immich-tools` is a command-line utility for interacting with [Immich](https://immich.app), a self-hosted photo and
video backup solution. This tool provides various utilities to manage your Immich server from the command line.
## Features
### Albums
- **List** all albums on your Immich server
- **Delete** albums (all or empty ones only)
- **Auto-create** albums from external libraries folder structure
- **List assets of an album** by album name
### Assets
- **List** assets (all or offline only)
- **Delete** assets (all or offline only)
### External libraries
- **List** all libraries
- **Scan** all libraries to detect new assets
### People
- **List** named faces that do not have an associated date of birth
- **Synchronize** dates of birth from a vCard file
### Server
- **Show** server version
- **Check** which server features are enabled
## Installation
### From Crates.io
```bash
cargo install immich-tools
```
### From Source
```bash
git clone https://git.enoent.fr/kernald/immich-tools.git
cd immich-tools
cargo build --release
```
The binary will be available at `./target/release/immich-tools`.
## Configuration
To connect to your Immich server, you need to provide:
- `server_url`: The API endpoint of your Immich instance (usually ends with `/api`)
- `api_key`: Your Immich API key (can be generated in the Immich web interface)
These can be provided in several ways (in order of precedence):
1. **Command line arguments**:
```bash
immich-tools --server-url https://photos.example.com/api --api-key your-api-key server version
```
2. **Environment variables** (prefixed with `IMMICH_TOOLS_`):
```bash
IMMICH_TOOLS_SERVER_URL=https://photos.example.com/api IMMICH_TOOLS_API_KEY=your-api-key immich-tools server version
```
3. **Environment variables pointing to files** (suffixed with `_FILE`):
```bash
IMMICH_TOOLS_SERVER_URL_FILE=~/immich-url.txt IMMICH_TOOLS_API_KEY_FILE=~/immich-api-key.txt immich-tools server version
```
4. **Configuration file** in the OS-specific location:
- Linux: `~/.config/immichtools/config.toml`
- macOS: `~/Library/Application Support/fr.enoent.Immich-Tools/config.toml`
- Windows: `~\AppData\Roaming\enoent\Immich Tools\config\config.toml`
### Example Configuration File
```toml
server_url = "https://photos.example.com/api"
api_key_file = "/home/example/.config/immichtools/apikey"
[people.sync_date_of_births]
vcard = "/home/example/contacts.vcf"
```
## Usage Examples
### Albums
List all albums:
```bash
immich-tools albums list
```
Delete empty albums:
```bash
immich-tools albums delete --empty
```
Auto-create albums from folder structure:
```bash
immich-tools albums auto-create --album-name-separator "/"
```
List assets belonging to a specific album (by album name):
```bash
immich-tools albums list-assets --album "My Album"
```
### Assets
List all assets:
```bash
immich-tools assets list
```
List offline assets only:
```bash
immich-tools assets list --offline
```
Delete offline assets:
```bash
immich-tools assets delete --offline
```
### External libraries
List all libraries:
```bash
immich-tools libraries list
```
Scan all libraries for new assets:
```bash
immich-tools libraries scan
```
### People
List people missing date of birth:
```bash
immich-tools people missing-date-of-births
```
Sync dates of birth from vCard file:
```bash
immich-tools people sync-date-of-births --vcard /path/to/contacts.vcf
```
### Server
Show server version:
```bash
immich-tools server version
```
Check enabled server features:
```bash
immich-tools server features
```
## Global Options
- `--dry-run`: Show what would be done without making any changes
- `--no-confirm`: Skip confirmation prompts
- `-v, --verbose`: Increase logging verbosity (can be used multiple times)
## Immich API Compatibility
The bindings are generated automatically from the Immich OpenAPI specification. The current version is compatible with
Immich v1.119.1, with some limitations around file upload operations (Progenitor doesn't yet support
`multipart/form-data` content types, see [this issue](https://github.com/oxidecomputer/progenitor/issues/518)).