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
177 lines
4.3 KiB
Markdown
177 lines
4.3 KiB
Markdown
# Immich Tools
|
|
|
|
[](https://crates.io/crates/immich-tools)
|
|
[](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)).
|