Skip to main content

Migrer ses photos avec Immich Go

Un outil existe pour migrer de grandes quantités de photos depuis un PC/Mac vers Immich de manière automatisée. 
https://github.com/simulot/immich-go?tab=readme-ov-file

Avantages 

Téléversez facilement de gros exports Google Photos : Immich-Go excelle dans la gestion des archives massives que vous téléchargez depuis Google Photos via Google Takeout. Il traite efficacement ces archives tout en préservant des métadonnées précieuses telles que la localisation GPS, la date de capture et les informations d'album.

Téléversements flexibles : Immich-Go n'est pas limité à Google Photos. Vous pouvez téléverser des photos directement depuis vos dossiers sur ordinateur, l'arborescence des dossiers et des archives ZIP.

Installation simple : Immich-Go ne nécessite pas NodeJS ni Docker pour son installation. Cela facilite le démarrage, même pour ceux qui sont moins familiers avec les environnements techniques.

Priorisez la qualité : Immich-Go rejette toutes les versions de résolution inférieure qui pourraient être incluses dans Google Photos Takeout, garantissant que vous avez les meilleures copies possibles sur votre serveur Immich.

Meilleures pratiques pour Google Photos :

Extraction de vos photos :

- Choisissez le format ZIP lors de la création de votre export pour faciliter l'importation.
- Sélectionnez la plus grande taille de fichier disponible (50 Go) pour minimiser le nombre de parties d'archive.
- Téléchargez toutes les parties sur votre ordinateur.

Importation de vos photos :

- Si votre export est au format ZIP, vous pouvez l'importer directement sans avoir besoin de décompresser les fichiers au préalable.
- Il est important d'importer toutes les parties de l'export ensemble, car certaines données peuvent être réparties sur plusieurs fichiers.
- Utilisez `/path/to/your/files/takeout-*.zip` comme nom de fichier.
- Pour les fichiers .tgz (archives tar compressées), vous devrez décompresser tous les fichiers dans un dossier unique avant d'importer. Lorsque vous utilisez l'outil d'importation, n'oubliez pas l'option `-google-photos`.
- Vous pouvez supprimer tous les fichiers ou dossiers indésirables de votre export avant l'importation.
- Redémarrer un import interrompu ne causera aucun problème et reprendra le travail là où il s'était arrêté.

Beaucoup de fichiers ne sont pas importés : Quelles sont les options ?

- Vérifiez si toutes les parties de l'export ont été incluses dans le traitement.
- Demandez un nouvel export, soit pour une année entière, soit par petits incréments.
- Forcez l'importation de fichiers malgré l'absence de JSON. Utilisez l'option `-upload-when-missing-JSON`.
- Pour des éclaircissements sur le raisonnement derrière cette alternative à immich-cli, veuillez lire la motivation ici.

⚠️ Ceci est une version préliminaire, pas encore testée de manière extensive.  
⚠️ Conservez une copie de sauvegarde de vos fichiers pour plus de sécurité.

Exécution de immich-go

immich-go est un outil en ligne de commande qui doit être exécuté à partir d'une fenêtre de terminal. Le programme immich-go utilise l'API Immich, donc il nécessite l'adresse du serveur et une clé API valide.

Sur Linux, macOS et FreeBSD :

./immich-go -server=URL -key=KEY -general_options COMMAND -command_options... {path/to/files}

Important :
Les utilisateurs de macOS doivent explicitement autoriser l'exécution de immich-go. Ouvrez Confidentialité et sécurité > Paramètres de sécurité pour autoriser.

Sur les systèmes Windows :

.\immich-go -server=URL -key=KEY -general_options COMMAND -command_options... {path/to/files}

Gestion des options booléennes

Les options booléennes ont une valeur par défaut indiquée ci-dessous. Mentionner une option sur la ligne de commande change l'option à TRUE. Pour forcer une option à FALSE, utilisez la syntaxe suivante : -option=FALSE.

Exemple : immich-go vérifie le certificat SSL du serveur. Vous pouvez désactiver ce comportement en activant l'option -skip-verify-ssl. Il suffit d'ajouter -skip-verify-ssl. -skip-verify-ssl est équivalent à -skip-verify-ssl=TRUE. Pour désactiver la fonctionnalité (qui est le comportement par défaut), utilisez -skip-verify-ssl=FALSE.

Options partagées avec toutes les commandes

ParamètreDescriptionValeur par défaut
-use-configuration=path/to/config/fileSpécifie le fichier de configuration à utiliser. L'URL du serveur et la clé API sont stockées dans le fichier de configuration immich-go.Linux : $HOME/.config/immich-go/immich-go.json
-server=URLURL du service Immich, exemple http://:2283 ou https://your-domain.tld 
-api=URLURL du point de terminaison API Immich (http://container_ip:3301) 
-device-uuid=VALUEForce l'identification de l'appareil$HOSTNAME
-client-timeout=durationDéfinit le délai d'attente pour les appels au serveur. La durée est un nombre décimal avec un suffixe d'unité, tel que "300ms", "1.5m" ou "45m".5m
-skip-verify-sslIgnorer la vérification SSL pour l'utilisation avec des certificats auto-signésfalse
-key=KEYUne clé générée par l'utilisateur. Les photos téléchargées appartiendront au propriétaire de la clé. 
-log-level=LEVELAjuste la verbosité des journaux : ERROR, WARNING, INFOINFO
-log-file=/path/to/log/fileÉcrire tous les messages dans un fichierLinux : $HOME/.cache/immich-go/immich-go_YYYY-MM-DD_HH-MI-SS.log
-log-jsonSortie du journal sous forme de fichier JSON délimité par des lignesfalse
-time-zone=time_zone_nameDéfinit le fuseau horaire pour les dates sans information de fuseau horaireLe fuseau horaire du système
-no-uiDésactiver l'interface utilisateurfalse
-debug-countersActiver la génération d'un CSV à côté du fichier journalfalse
-api-traceActiver le suivi des appels APIfalse

Commande upload

Utilisez cette commande pour télécharger des photos et vidéos depuis un répertoire local, un dossier compressé ou tous les fichiers zip générés par la procédure d'exportation de Google Photos.

Paramètres et options :

ParamètreDescriptionValeur par défaut
-album="NOM DE L'ALBUM"Importer les actifs dans l'album Immich NOM DE L'ALBUM. 
-dry-runAperçu de toutes les actions telles qu'elles seraient effectuées.FALSE
-create-album-folderGénérer des albums immich après les noms de dossier.FALSE
-use-full-path-album-nameUtiliser le chemin complet du fichier pour déterminer le nom de l'album.FALSE
-album-name-path-separatorDétermine comment plusieurs (sous) dossiers, le cas échéant, seront joints. 
-create-stacksEmpiler jpg/raw ou des rafales.FALSE
-stack-jpg-rawContrôler l'empilage des photos jpg/raw.FALSE
-stack-burstContrôler l'empilage des rafales.FALSE
-select-types=".ext,.ext,.ext..."Liste des extensions acceptées. 
-exclude-types=".ext,.ext,.ext..."Liste des extensions exclues. 
-when-no-date=FILENOWUtiliser la date du fichier ou l'heure actuelle si la date ne peut pas être déterminée.
-exclude-files=patternIgnorer les fichiers basés sur un modèle.@eaDir/

Exclusion de fichiers basée sur un modèle

Utilisez -exclude-files=PATTERN pour exclure certains fichiers ou répertoires du téléchargement. Répétez l'option pour chaque modèle dont vous avez besoin. Les répertoires suivants sont exclus automatiquement :

  • @eaDir/
  • @__thumb/
  • SYNOFILE_THUMB_.
  • Lightroom Catalog/
  • thumbnails/
  • .DS_Store/

Exemple : La commande suivante exclut tous les fichiers dans des répertoires appelés backup ou draft et tout fichier se terminant par "copy)".

immich-go -server=xxxxx -key=yyyyy upload -exclude-files=backup/ -exclude-files=draft/ -exclude=copy).*  /path/to/your/files

Options Google Photos

Paramètres spécialisés pour la gestion de Google Photos :

ParamètreDescriptionValeur par défaut
-google-photosImporter depuis une archive structurée Google Photos, recréant les albums correspondants. 
-from-album="ALBUM GP"Créer l'album dans immich et importer les actifs de l'album. 
-create-albumsContrôle la création d'albums Google Photos dans Immich.TRUE
-keep-untitled-albumsLes albums sans titre sont importés dans immich avec le nom du dossier comme titre.FALSE
-use-album-folder-as-nameUtiliser le nom du dossier au lieu du titre de l'album.FALSE
-keep-partnerSpécifie l'inclusion ou l'exclusion des photos prises par un partenaire.TRUE
-partner-album="album du partenaire"importer les actifs du partenaire dans l'album donné. 
-discard-archivedNe pas importer les actifs archivés.FALSE
-auto-archiveArchiver automatiquement les photos qui sont également archivées dans Google Photos.TRUE
-upload-when-missing-JSONTélécharger des photos non associées à un fichier de métadonnées JSON.FALSE

Détection des rafales

Actuellement, les rafales suivant ce schéma sont détectées :

  • xxxxx_BURSTnnn.*
  • xxxxx_BURSTnnn_COVER.*
  • xxxxx.RAW-01.COVER.jpg et xxxxx.RAW-02.ORIGINAL.dng
  • xxxxx.RAW-01.MP.COVER.jpg et xxxxx.RAW-02.ORIGINAL.dng
  • xxxxxIMG_xxxxx_BURSTyyyymmddhhmmss.jpg et xxxxxIMG_xxxxx_BURSTyyyymmddhhmmss_COVER.jpg (Huawei Nexus 6P)
  • yyyymmdd_hhmmss_xxx.jpg (Samsung)

Exemples d'utilisation : importer une archive d'exportation Google Photos

Pour illustrer, voici une commande qui importe des photos d'une archive d'exportation Google Photos capturées entre le 1er juin et le 30 juin 2019, tout en générant automatiquement des albums :

./immich-go -server=http://mynas:2283 -key=zzV6k65KGLNB9mpGeri9n8Jk1VaNGHSCdoH1dY8jQ upload -create-albums -google-photos -date=2019-06 ~/Download/takeout-*.zip             

Détermination des métadonnées

immich-go obtient les premières données disponibles dans l'ordre suivant :

  • Date de capture :

    • Google Photos Takeout
    • Champ JSON Google Photos photoTakenTime
    • Nom du fichier : ex PXL_20220909_154515546.jpg
    • Données EXIF de la photo
    • Importation de dossier
    • Fichier XMP
  • Localisation GPS :

    • Google Photos Takeout
    • Champ JSON Google Photos geoDataExif
    • Champ JSON Google Photos geoData
    • Champ d'album JSON Google Photos locationEnrichment
    • Données EXIF de la photo

Exemple d'utilisation : nettoyage du serveur immich après avoir fusionné une archive Google Photos et les fichiers originaux

Cette commande examine le contenu du serveur immich, supprime les images de moindre qualité et préserve les albums :

./immich-go -server=http://mynas:2283 -key=zzV6k65KGLNB9mpGeri9n8Jk1VaNGHSCdoH1dY8jQ duplicate -yes

Commande outil

Cette commande introduit des outils en ligne de commande pour manipuler votre serveur immich.

Sous-commande album delete [regexp]

Cette commande supprime les albums qui correspondent au modèle donné.

Exemple :


./immich-go -server=http://mynas:2283 -key=zzV6k65KGLNB9mpGeri9n8Jk1VaNGHSCdoH1dY8jQ tool album delete \d{4}-\d{2}-\d{2}

Installation

Installation depuis la release GitHub :

L'installation de immich-go est un processus simple. Visitez la page de la dernière release et sélectionnez le fichier binaire compatible avec votre système :

  • Darwin : arm-64, x86-64
  • Linux : arm-64, armv6-64, x86-64
  • Windows : arm-64, x86-64
  • FreeBSD : arm-64, x86-64

Téléchargez l'archive correspondant à votre OS/architecture sur votre machine et décompressez-la.

Ouvrez une fenêtre de commande, allez dans le répertoire où immich-go se trouve, et tapez la commande immich-go avec les paramètres et la commande obligatoires.

⚠️ Veuillez noter que la version Linux x86-64 est la seule testée.

Installation à partir des sources :

Pour une installation basée sur les sources, assurez-vous d'avoir les outils de développement nécessaires pour le langage Go en place. Téléchargez les fichiers sources ou clonez le dépôt.

bash
go build -ldflags "-X 'main.version=$(git describe --tag)' -X 'main.date=$(date)'"

Installation avec Nix :

immich-go est emballé avec Nix et distribué via nixpkgs. Vous pouvez essayer immich-go sans l'installer avec :

bash
nix-shell -I "nixpkgs=https://github.com/NixOS/nixpkgs/archive/nixos-unstable-small.tar.gz" -p immich-go
# Ou avec les flocons activés
nix run "github:nixos/nixpkgs?ref=nixos-unstable-small#immich-go" -- -help

Ou vous pouvez ajouter immich-go à votre configuration.nix dans la section environment.systemPackages.

Sources : 
Un outil existe pour migrer de grandes quantités de photos depuis un PC/Mac vers Immich de manière automatisée. 
https://github.com/simulot/immich-go?tab=readme-ov-file