A script that downloads images in original quality from a given immich album
Find a file
2025-04-10 15:28:31 +02:00
.idea add readme 2025-04-10 15:28:31 +02:00
.env.template initial commit 2025-04-10 15:21:51 +02:00
.gitignore initial commit 2025-04-10 15:21:51 +02:00
LICENSE add license 2025-04-10 15:22:19 +02:00
main.py add readme 2025-04-10 15:28:31 +02:00
README.md add readme 2025-04-10 15:28:31 +02:00

Sure! Here's a clean and minimal README.md for your Immich album downloader project, including setup instructions and the example systemd service and timer:


# Immich Album Downloader

This Python script downloads all assets (photos/videos) from a specific album in your [Immich](https://github.com/immich-app/immich) instance, using its API. It supports resuming by skipping files that already exist locally.

## Features

- Downloads all assets from a specified album
- Uses pagination to handle large albums
- Skips already-downloaded files
- Can be automated with `systemd` services and timers

## Requirements
You can install dependencies with:

```bash
pip install requests

or you can use your system's package manager.

Environment Variables

Variable Description
IMMICH_API_KEY Your Immich API key
IMMICH_INSTANCE_URL Immich instance URL (e.g. https://your-instance/api)
IMMICH_ALBUM_ID The ID of the album to download
IMMICH_DOWNLOAD_PATH Directory to save downloaded assets

Usage

You can run the script manually:

python3 main.py

Or set it up as a systemd service for automatic and scheduled execution.


Example: systemd Service

Create a service file at /etc/systemd/user/immich-album-downloader.service:

[Unit]
Description=Immich Album Downloader
After=network.target

[Service]
Type=simple
Environment="IMMICH_ALBUM_ID=my-super-cool-album-id"
Environment="IMMICH_API_KEY=averysecretapikeypleasedonotsteal"
Environment="IMMICH_DOWNLOAD_PATH=/home/marco/wallapers/"
Environment="IMMICH_INSTANCE_URL=https://your-immich.instance/api"
ExecStart=/usr/bin/python3 /opt/immich-album-downloader/main.py
Restart=no

[Install]
WantedBy=default.target

Enable and start the service:

systemctl --user daemon-reexec
systemctl --user enable --now immich-album-downloader.service

Example: systemd Timer

To run the download periodically, create /etc/systemd/user/immich-album-downloader.timer:

[Unit]
Description=Download an Immich album periodically

[Timer]
OnBootSec=15m
OnUnitActiveSec=6h

[Install]
WantedBy=timers.target

Enable the timer:

systemctl --user enable --now immich-album-downloader.timer

This will trigger the album download 15 minutes after boot and then every 6 hours.