Import photos from various sources to Immich
Project description
Immichporter
Google photos to immich importer helper
[!WARNING]
- Still experimental: Google Photos export works in some cases, but stability issues remain.
- Only works in English
- Immich import/update not yet tested!
Immichporter exports google photos information into a sqlite database which can be used to import the information back into immich.
[!IMPORTANT]
- This tool does not download any images from google photos. It only exports the information into a database.
- Make sure to manulley save all shared pictures in google photos before running a takeout.
Use google takeout to export your google photos assets and immich-go to import the data into immich.
[!IMPORTANT]
Use immichporter to get all assets and user per album and update/create all albums in immich again.
It can add all users again to shared albums and you can even move assets to the correct user.
Installation
Using uv (recommended):
uv add immichporter
Or with pip:
pip install immichporter
Usage
# Show help
immichporter --help
playwright install # might be required the first time
# login is required the first time, the session is saved
immichporter gphotos login
# add all albums to the database
immichporter gphotos albums
# add all photos for each album to the database
# it can run multiple times and only processes the not fully processed albums again
immichporter gphotos photos
# multiple runs might be needed until everything is correct,
# you can check with if every album is fully processed
immichporter db show-albums --not-finished
# edit/update users
immichporter db show-users
immichporter db edit-users # select which users should be added to immich
# see the database with https://sqlitebrowser.org
sqlitebrowser immichporter.db
# !! CAUTION: create a backup of your immich database before running this commands !!
# this steps are needed to get the immich ids into the 'immichporter.db' sqlite database
# and create non existing users and albums in immich
immichporter immich update-albums
immichporter immich update-users
# delete ablums (optional) if you want to start over
# !! this delete all albums in immich !!
# this is only needed if you have different album names in immich
immichporter immich delete-albums
# sync albums to immich (create albums and users, add assets to albums)
export IMMICH_ENDPOINT=http://localhost:2283
export IMMICH_API_KEY=your_api_key
export IMMICH_INSECURE=1
immichporter sync-albums --dry-run
immichporter sync-albums
TODO:
- export albums with photos and people from gphotos (first version)
- import to immich (80%)
- move assets to correct user (50%)
- improve documentation
- improve gphotos export stability (80%)
Development
To set up the development environment:
# Clone the repository
git clone https://github.com/burgdev/immichporter.git
cd immichporter
# Install development dependencies
make
uv run invoke install # install 'dev' and 'test' dependencies per default, use --all to install all dependencies
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
License
MIT - See LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file immichporter-0.0.3.tar.gz.
File metadata
- Download URL: immichporter-0.0.3.tar.gz
- Upload date:
- Size: 169.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86d649bdd088988f57fdaf5ba54f1eace032ef1fb5c88dc6ac72ed8f220fc411
|
|
| MD5 |
aeaa363cad3aebfc0e3e4a1164072bd9
|
|
| BLAKE2b-256 |
2ba3809511886d79e856400e1b3c804aedd630ad5333bb4484f15e2c945e19c7
|
Provenance
The following attestation bundles were made for immichporter-0.0.3.tar.gz:
Publisher:
publish-pypi.yml on burgdev/immichporter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
immichporter-0.0.3.tar.gz -
Subject digest:
86d649bdd088988f57fdaf5ba54f1eace032ef1fb5c88dc6ac72ed8f220fc411 - Sigstore transparency entry: 615622327
- Sigstore integration time:
-
Permalink:
burgdev/immichporter@f9757b455bacbdc6a2c00f8691f3041b294b3643 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/burgdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f9757b455bacbdc6a2c00f8691f3041b294b3643 -
Trigger Event:
repository_dispatch
-
Statement type:
File details
Details for the file immichporter-0.0.3-py3-none-any.whl.
File metadata
- Download URL: immichporter-0.0.3-py3-none-any.whl
- Upload date:
- Size: 591.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0702480f5cb532aaa9d77ff52264965849f7d3d329efba1148b7e5fe28195f67
|
|
| MD5 |
c7e794e9070aac3c84bf39b6ee5b065e
|
|
| BLAKE2b-256 |
efea01876e7cfe132e43813cad0867b7d35dea9ebcbe24e56592ea2d017f7cbd
|
Provenance
The following attestation bundles were made for immichporter-0.0.3-py3-none-any.whl:
Publisher:
publish-pypi.yml on burgdev/immichporter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
immichporter-0.0.3-py3-none-any.whl -
Subject digest:
0702480f5cb532aaa9d77ff52264965849f7d3d329efba1148b7e5fe28195f67 - Sigstore transparency entry: 615622387
- Sigstore integration time:
-
Permalink:
burgdev/immichporter@f9757b455bacbdc6a2c00f8691f3041b294b3643 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/burgdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f9757b455bacbdc6a2c00f8691f3041b294b3643 -
Trigger Event:
repository_dispatch
-
Statement type: