Takeout JSON

Google Fotos zu Immich übertragen: Datum, JSON, Alben

So kommt ein Google-Takeout-Export mit richtigen Daten in Immich: mit immich-go, oder indem Sie die Dateien vorher reparieren und beliebig hochladen.

Sie haben Immich eingerichtet, den Takeout-Ordner hochgeladen, und die Zeitleiste zeigt alles an einem einzigen Tag. Oder Sie haben immich-go benutzt, und ein paar tausend Fotos sind trotzdem ohne Datum angekommen, während das Protokoll Hunderte fehlende JSON-Dateien meldet.

Immich ist ein gutes Ziel. Die Kunst ist, die Daten in eine Form zu bringen, die Immich liest.

Wie Immich das Datum eines Fotos bestimmt

Immich liest bei Bildern das EXIF-Feld DateTimeOriginal und bei Videos das Erstelldatum aus dem Container. Fehlt beides, nimmt es das Änderungsdatum der Datei. Es liest außerdem .xmp-Sidecars. Googles .json-Dateien liest es nicht, wenn Sie über die Weboberfläche, die Handy-App oder die CLI hochladen. Diese Dateien gelten schlicht als nicht unterstützt, und Immich protokolliert für jede einen Fehler.

Nach dem Entpacken eines Takeout-Exports ist das Änderungsdatum der Datei der Moment des Entpackens. Jedes Foto ohne EXIF-Datum landet also an diesem Tag. Screenshots, Chat-Bilder, Scans und alles, was Sie in Google Fotos umdatiert haben, sind die üblichen Opfer. Kamerafotos mit intaktem EXIF sind in Ordnung.

Weg 1: immich-go

immich-go ist ein kostenloses Kommandozeilenwerkzeug genau für diesen Zweck. Es liest die Takeout-ZIPs direkt, ordnet jedem Foto seine JSON-Datei zu, nutzt photoTakenTime als Datum, baut die Alben aus den Albumordnern nach und lädt alles auf Ihren Server. Es ist der Weg, den die Immich-Community empfiehlt, und er funktioniert gut.

Ein einfacher Aufruf:

immich-go upload from-google-photos --server http://ihr-server:2283 --api-key IHRKEY ~/Downloads/takeout-*.zip

Was Sie wissen sollten: Aktuelle Versionen kennen die supplemental-metadata-Namen von 2024 und die gekürzten Namen. Sehen Sie "JSON missing" bei vielen Dateien, aktualisieren Sie zuerst. immich-go lädt die Datei unverändert hoch und schickt das Datum aus der JSON-Datei separat mit. Das Datum liegt dann in der Datenbank von Immich, nicht im Foto. Exportieren Sie später aus Immich oder zeigen Sie mit einem anderen Programm auf dieselben Dateien, hat die Datei selbst immer noch kein Datum. Lassen Sie es zuerst mit --dry-run laufen, um die Zahlen zu sehen.

Eine Zahl fehlender JSON-Dateien im niedrigen Hunderterbereich ist bei einer großen Bibliothek normal. Das sind meist Live-Photo-Clips, bearbeitete Kopien und Dateien aus alten Uploads, die nie eine JSON-Datei hatten. immich-go nimmt für sie das Dateidatum.

Weg 2: Dateien reparieren, dann beliebig hochladen

Die Alternative ist, die JSON-Daten in die Dateien zu schreiben, bevor sie Immich erreichen. Dann funktioniert jeder Upload-Weg, die Daten reisen mit den Dateien mit, falls Sie Immich je wieder verlassen, und eine externe Bibliothek, die auf den Ordner zeigt, wird korrekt indiziert.

Mit exiftool:

exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
  "-DateTimeOriginal<PhotoTakenTimeTimestamp" \
  "-GPSLatitude<GeoDataLatitude" "-GPSLatitudeRef<GeoDataLatitude" \
  "-GPSLongitude<GeoDataLongitude" "-GPSLongitudeRef<GeoDataLongitude" \
  -ext jpg -ext heic -ext png -overwrite_original .

Videos brauchen die QuickTime-Tags, gekürzte und (1)-JSON-Namen brauchen eigene Durchläufe. Die exiftool-Anleitung geht alles durch.

Takeout JSON Metadata Fixer macht das als Desktop-App auf Windows, Linux und Mac, auch auf dem Rechner, auf dem Immich läuft.

Zeigen Sie der App die Takeout-ZIPs. Sie schreibt das echte Datum und die GPS-Koordinaten in jedes Foto und Video, setzt die Dateidaten passend und sortiert die Ausgabe auf Wunsch in Ordner nach Jahr und Monat. Zwei Einstellungen sind für Immich wichtig. Lassen Sie Live Photos auf "Clip neben dem Foto behalten", damit Immich Foto und Clip beim Upload als Paar erkennt. Und schalten Sie "JSON-Sidecars schreiben" ein, wenn Sie danach immich-go nutzen wollen. Die App schreibt dann zu jeder Datei eine saubere JSON-Datei in Googles Format, mit dem echten Datum und den Koordinaten, sodass immich-go nichts raten muss.

Das Ergebnis ist ein normaler Ordner mit datierten Fotos. Laden Sie ihn über die Weboberfläche, die CLI oder immich-go hoch. Oder binden Sie ihn als externe Bibliothek ein und lassen Sie Immich ihn an Ort und Stelle indizieren. Die ersten 1000 Fotos sind kostenlos.

Alben

Takeout stellt ein Album als Ordner dar, der Kopien der Fotos und eine metadata.json mit dem Albumnamen enthält. immich-go macht daraus Immich-Alben. Gehen Sie den Weg über die reparierten Dateien, laden Sie entweder die Albumordner mit hoch, was Duplikate erzeugt, die Immich dann über den Hash aussortiert, oder Sie laden nur die Ordner Photos from YYYY hoch und bauen die Alben von Hand nach.

Immich erkennt exakte Byte-Kopien beim Upload. Sind die Daten in die Dateien geschrieben, sind zwei Kopien desselben Fotos immer noch identisch zueinander, die Duplikaterkennung funktioniert also weiter.

Das Ergebnis prüfen

Öffnen Sie nach dem Upload die Zeitleiste und scrollen Sie zu einem alten Jahr. Öffnen Sie ein Foto und schauen Sie ins Info-Feld. Das Datum sollte dem entsprechen, was Google Fotos gezeigt hat. Öffnen Sie die Karte. Fotos mit echten GPS-Daten sollten erscheinen. Fotos, die in der JSON-Datei 0.0, 0.0 hatten, dürfen nicht im Ozean liegen. Tun sie es doch, hat Ihr Werkzeug Nullen geschrieben, und Sie müssen sie mit exiftool -gps:all= aus den betroffenen Dateien entfernen.

Ist eine ganze Gruppe noch falsch, können Sie in Immich mehrere Fotos auswählen und das Datum in der Weboberfläche gesammelt ändern.

Häufige Fragen

immich-go oder erst die Dateien reparieren?

Beides funktioniert. immich-go ist schneller und baut die Alben nach. Die Dateien vorher zu reparieren heißt, dass die Daten in den Fotos stecken, was zählt, wenn Sie externe Bibliotheken nutzen oder später noch einmal umziehen. Manche machen beides: Dateien reparieren, dann mit immich-go hochladen, wegen der Alben.

Warum zeigt Immich eine Uhrzeit, die ein paar Stunden daneben liegt?

Der JSON-Zeitstempel ist UTC. Beim Schreiben ins EXIF wird er zur Ortszeit Ihres Rechners, ohne Zonenangabe. Immich zeigt ihn dann so an. Stellen Sie die Zeitzone des Rechners vor der Korrektur passend zu den Fotos ein oder korrigieren Sie in Immich nachträglich.

Immich meldet "Unsupported file" für jede .json. Ist das ein Problem?

Nein. Immich sagt Ihnen nur, dass es die Dateien ignoriert hat. Löschen Sie die JSON-Dateien vor dem Upload oder nutzen Sie immich-go, das sie verarbeitet.

Muss ich HEIC umwandeln?

Nein. Immich liest HEIC und erzeugt eigene Vorschaubilder. Behalten Sie die Originale.