Skip to main content

[!NOTE] Compatibility:
v0.0.5 → Immich version 1.106.x - latest
v0.0.4 → Immich version 1.105.x
v0.0.2 → Immich version 1.93.x - 1.104.x

PyPI version

Photoprism to Immich migrator

This tool can migrate albums and favorites from Photoprism to Immich. It does not migrate your photo files.

Prerequisites

  1. The tool will only work if you keep the same file structure in immich that you already had in photoprism. This is the case if you take the originals folder from photoprism and use it in immich as external library.
  2. Photoprism and Immich must both be running at the same time, because the tool communicates with both APIs.

How it works

ppim-migrator-diagram

Migrate favorites

  1. The tool fetches all photos with a favorite tag from your photoprism instance
  2. For each photo, it retrieves the original filename and its respective path
  3. It connects to immich, tries to find the photo by filename and validates potential candidates on the immich side by comparing the file path
  4. If a match was found, it marks the photo on immich as favorite

Migrate album

  1. The tool fetches all photos of a certain album from your photoprism instance
  2. For each photo, it retrieves the original filename and its respective path
  3. It connects to immich, tries to find the photo by filename and validates potential candidates on the immich side by comparing the file path
  4. If a match was found, it creates a new album in immich and adds the matched photos

Migrate all albums

  1. The tool fetches all albums from your photoprism instance (1000 albums by default)
  2. For each album found, the migration is launched as described per the previous paragraph.

Installation

pip install ppim-migrator

Configuration

Create a config.yaml file in the working directory where you want to run the command.

photoprism:
  base_url: https://photoprism.example.com
  username:
  password:
immich:
  base_url: https://immich.example.com
  api_key:

Notes:

  • The PhotoPrism account must not have two factor authentication enabled

Usage

Migrate all favorites from photoprism to immich

python -m ppim-migrator migrate-favorites

Migrate a certain album from photoprism to immich

To get an album-id just open the album in photoprism. The id is part of the url. Example:

  • Url, when opening the album: https://photoprism.example.com/library/albums/aqrcixa2uf1q45iq/view The album-id would be aqrcixa2uf1q45iq
python -m ppim-migrator migrate-album <album-id-here>

Migrate all albums from photoprism to immich

python -m ppim-migrator migrate-all-albums

You can overwrite the default 1000 albums cap, by adding a --count= option:

python -m ppim-migrator migrate-all-albums --count=5000

Migrate JPG+RAW stacks from photoprism to immich

Since Immich does not support auto stacking yet, these stacks can be migrated over from photoprism.

python -m ppim-migrator migrate-stacked-raws

You can overwrite the default 100000 photos cap, by adding a --count= option:

python -m ppim-migrator migrate-stacked-raws --count=200000

Metadata

Release files for ppim-migrator 0.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ppim-migrator 0.0.9
File Size Uploaded
ppim_migrator-0.0.9.tar.gz 6.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ppim-migrator 0.0.9
File Interpreter ABI Platform
ppim_migrator-0.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 13.7 kB

Release files / ppim_migrator-0.0.9.tar.gz

Download URL ppim_migrator-0.0.9.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6bec344563e02d2daac558ffa93844c944ae9bf01e0558291d94fe988d837be7
BLAKE2b-256 checksum
How to use checksums
cf98025b2a91c7e1f4c68832c2a0cde44a2fde39d8f0bdcbed57e621eab2a3ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 21, 2025.

Transparency log

Release files / ppim_migrator-0.0.9-py3-none-any.whl

Download URL ppim_migrator-0.0.9-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aacaa20c2248374381d254d93e71dab7f6be465784599c6b701419e68efab5f9
BLAKE2b-256 checksum
How to use checksums
28f1cda8e4055bb2d3575fbab4be600bd5a6aa2863def3cdb8b7f58b228e95d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 21, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.9 This release

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page