Takeout JSON
PL

Immich pokazuje złe daty zdjęć po imporcie. Jak to naprawić

Dlaczego zdjęcia lądują w Immich pod złą datą, jak Immich wybiera datę z EXIF i plików towarzyszących i jak naprawić pliki przed importem.

Postawiłeś Immich, wgrałeś bibliotekę, a oś czasu się nie zgadza. Tysiące zdjęć mają datę importu. Stare wakacje wiszą na samej górze. Część dat jest przesunięta o dokładnie kilka godzin.

Jak Immich wybiera datę

Immich czyta metadane każdego pliku i bierze pierwszą datę, jaką znajdzie, w stałej kolejności. W przybliżeniu: plik towarzyszący XMP obok pliku, jeśli jest, potem EXIF DateTimeOriginal, potem CreateDate filmu, a na samym końcu data modyfikacji pliku.

Czyta plik. Nie pyta ciebie. Zdjęcie bez daty w EXIF dostaje więc datę pliku, a data pliku to to, co zostawiło ostatnie kopiowanie, zwykle dzisiejszy dzień. Różnicę wyjaśnia artykuł EXIF date taken vs file modified (po angielsku).

Własne narzędzia Immich do wysyłania, aplikacja mobilna i CLI, przekazują datę modyfikacji pliku. Jeśli ona też jest zła, nic już zdjęcia nie ratuje.

Najczęstsze przyczyny

Google Takeout. Największa z nich. Google usuwa daty EXIF z wielu zdjęć i zapisuje prawdziwą datę w pliku .json obok. Immich nie czyta formatu .json od Google. Wgraj te pliki bezpośrednio, a każdy bez EXIF dostanie datę wysłania. Pełny poradnik dla tego przypadku to Google Photos to Immich (po angielsku).

Komunikatory. WhatsApp i podobne aplikacje usuwają EXIF w całości. Takie zdjęcia mają tylko datę pliku.

Zrzuty ekranu i pobrane obrazy. Pliki PNG i obrazy z sieci rzadko mają datę w EXIF.

Skany. Data skanera, czyli dzień skanowania, a nie dzień zrobienia zdjęcia.

Przesunięcia stref czasowych. Zdjęcie z datą EXIF, ale bez przesunięcia strefy, jest w jednych ścieżkach traktowane jako UTC, a w innych jako czas lokalny. Data jest dobra, godzina nie. Nowsze telefony zapisują znacznik przesunięcia i tego unikają.

Dwa sposoby naprawy

Naprawa w Immich. W interfejsie webowym możesz zaznaczyć zdjęcia i zmienić datę i godzinę, jedno zaznaczenie naraz. Dla kilku zdjęć to w porządku. Dla eksportu Takeout z czterdziestoma tysiącami zdjęć już nie, a poprawka żyje tylko w bazie danych Immich. Wyeksportujesz kiedyś bibliotekę i daty znowu znikną.

Naprawa plików przed importem. Zapisz poprawną datę w EXIF każdego pliku przed wysłaniem. Immich ją odczyta i zrobi to dobrze, podobnie jak każde inne narzędzie, które kiedykolwiek skierujesz na te pliki. To trwała naprawa.

immich-go i kiedy go używać

immich-go to darmowe narzędzie wiersza poleceń do wysyłania, które rozumie Google Takeout. Czyta pliki .json, dopasowuje je do zdjęć i przy wysyłaniu przekazuje do Immich poprawną datę. Jeśli Immich to twoje jedyne miejsce docelowe, a terminal cię nie straszy, to dobre narzędzie, które radzi sobie też z albumami.

Nie zmienia jednak plików. Data trafia do bazy Immich, a nie do zdjęcia. Jeśli kiedyś znowu się przeniesiesz albo skierujesz PhotoPrism lub Apple Photos na te same pliki, zaczynasz od nowa.

Naprawa plików ręcznie

exiftool potrafi zapisać datę z Takeout w EXIF. Polecenie jest kłopotliwe, bo nazwy plików .json od Google na kilka sposobów nie pasują do nazw zdjęć. Działający przykład jest w artykule exiftool: poprawa dat z Google Takeout.

Dla zdjęć bez pliku .json i bez EXIF, ale z dobrą datą pliku, skopiuj datę pliku do środka:

exiftool "-DateTimeOriginal<FileModifyDate" -if 'not $DateTimeOriginal' -r .

Dla folderu, o którym wiesz tylko, z jakiego jest dnia, ustaw datę:

exiftool -DateTimeOriginal="2014:08:10 12:00:00" -overwrite_original .

Potem uruchom ponownie zadanie wyciągania metadanych na stronie administracyjnej Immich albo wgraj pliki jeszcze raz, żeby Immich odczytał nowe wartości.

Z aplikacją

Takeout JSON Metadata Fixer przygotowuje folder, który Immich importuje bez problemów. Zapisuje prawdziwą datę i GPS w każdym pliku, więc Immich czyta je prosto z EXIF.

Daj jej eksport z Takeout, w jednym pliku zip albo w wielu, albo dowolny folder. Dla każdego zdjęcia bierze datę z pliku .json, a jeśli jej nie ma, z EXIF, a potem z daty pliku, i zapisuje wynik w EXIF i w znacznikach czasu pliku. GPS trafia do środka w ten sam sposób. Po drodze można zamienić HEIC na JPG. Zdjęciom bez żadnej daty można nadać jedną datę i miejsce dla całego folderu.

Jeśli to włączysz, zapisuje też plik .json obok każdego pliku wynikowego. Sam Immich ich nie czyta, ale immich-go i inne narzędzia do importu tak, a metadane pozostają czytelne poza jakąkolwiek biblioteką. Potem wgraj folder wynikowy aplikacją Immich, przez CLI albo jako bibliotekę zewnętrzną. Daty są w plikach, więc od razu przychodzą poprawne.

Działa offline na macOS, Windows i Linux. Za darmo do 1000 zdjęć, 19,99 USD jednorazowo za wersję bez limitu.

Najczęstsze pytania

Już zaimportowałem. Muszę zaczynać od nowa?

Niekoniecznie. Napraw pliki na dysku, a potem uruchom zadanie „Extract metadata” dla wszystkich zasobów na stronie administracyjnej Immich. Jeśli pliki zostały wysłane, a nie są w bibliotece zewnętrznej, musisz wgrać naprawione pliki jeszcze raz i usunąć stare kopie, bo Immich trzyma własną kopię.

Dlaczego niektóre daty są przesunięte o kilka godzin?

Strefa czasowa. Data w EXIF nie ma przesunięcia, a Immich traktuje ją jako UTC albo jako czas serwera, zależnie od wersji i ustawień. Nowsze wersje radzą sobie z tym lepiej. Pomaga ustawienie strefy czasowej serwera na tę, w której zrobiono większość zdjęć.

Czy Immich czyta już pliki .json od Google?

W chwili pisania nie bezpośrednio. Czyta pliki towarzyszące XMP. immich-go czyta format Google i zamienia go w locie. Sprawdzaj informacje o wydaniach Immich, bo to się zmienia.

Czy zapis EXIF pogorszy jakość zdjęcia?

Nie. Zapis EXIF zmienia blok metadanych. Skompresowany obraz zostaje nietknięty.