Takeout JSON
PL

Pliki JSON w Google Takeout: co to jest i czy można je usunąć?

Każdy plik .json zawiera prawdziwą datę, miejsce i opis jednego zdjęcia. Usuń go dopiero wtedy, gdy te dane są zapisane w zdjęciu, inaczej daty przepadną.

Pliki JSON w Google Takeout zawierają to, co Zdjęcia Google wiedziały o każdym zdjęciu: datę wykonania, lokalizację, opis i oryginalną nazwę pliku. Jeden taki plik leży obok prawie każdego zdjęcia i filmu, z nazwą w rodzaju IMG_3391.HEIC.supplemental-metadata.json. Możesz je usunąć, ale dopiero wtedy, gdy ich daty i lokalizacje są zapisane w zdjęciach. Jeśli usuniesz je wcześniej, zdjęcia zostaną z datą pobrania.

Rozpakowałeś eksport ze Zdjęć Google, a połowa plików to nie zdjęcia. Nie prosiłeś o nie, większość programów nie potrafi ich otworzyć, a jest ich tysiące. To nie są śmieci. Zawierają daty i miejsca, których Google nie zapisało w twoich zdjęciach.

Dlaczego Google je dodaje

Zdjęcia Google trzymają wiedzę o zdjęciu we własnej bazie danych: kiedy zostało zrobione, gdzie, w którym jest albumie, czy oznaczyłeś je gwiazdką i każdą datę lub lokalizację poprawioną ręcznie. Sam plik zdjęcia może mieć te informacje w bloku EXIF albo nie. Zrzuty ekranu i obrazy z czatów zwykle ich nie mają. Zmiany zrobione w Zdjęciach Google nie trafiają tam nigdy.

Przy eksporcie Google oddaje plik zdjęcia mniej więcej w takiej postaci, w jakiej został wysłany. Nie zapisuje swojej bazy danych z powrotem w każdym pliku. Zamiast tego wpis z bazy trafia do małego pliku tekstowego obok zdjęcia. Taki plik to plik towarzyszący (sidecar) (po angielsku), a JSON to format, w którym jest zapisany.

Co jest w środku

Otwórz go w Notatniku, TextEdit albo dowolnym edytorze kodu. Typowy plik wygląda tak (trochę skrócony):

{
  "title": "IMG_3391.HEIC",
  "description": "",
  "imageViews": "12",
  "creationTime": {
    "timestamp": "1690120442",
    "formatted": "Jul 23, 2023, 2:34:02 PM UTC"
  },
  "photoTakenTime": {
    "timestamp": "1689929130",
    "formatted": "Jul 21, 2023, 9:25:30 AM UTC"
  },
  "geoData": {
    "latitude": 48.8583,
    "longitude": 2.2945,
    "altitude": 35.0,
    "latitudeSpan": 0.0,
    "longitudeSpan": 0.0
  },
  "geoDataExif": {
    "latitude": 48.8583,
    "longitude": 2.2945,
    "altitude": 35.0
  },
  "url": "https://photos.google.com/photo/...",
  "googlePhotosOrigin": {
    "mobileUpload": {
      "deviceType": "IOS_PHONE"
    }
  }
}

Dwie daty, photoTakenTime i creationTime, mają własną sekcję poniżej. Pozostałe ważne pola:

geoData to lokalizacja znana Zdjęciom Google, także miejsce ustawione ręcznie. geoDataExif to lokalizacja, która była w danych EXIF pliku w chwili wysłania. Gdy zdjęcie nie ma lokalizacji, oba pola mają zera: 0.0, 0.0, czyli punkt na Oceanie Atlantyckim. Traktuj same zera jako „nieznane”, a nie jako prawdziwe miejsce. Więcej w artykule o przywracaniu GPS z Takeout (po angielsku).

description to wpisany przez ciebie opis, jeśli jest. people zawiera oznaczone osoby, jeśli są. favorited ma wartość true dla zdjęć z gwiazdką. title to oryginalna nazwa pliku. Przydaje się, bo Takeout czasem skraca prawdziwą nazwę pliku.

Która data jest właściwa?

Użyj photoTakenTime. To data wykonania zdjęcia, taka, jaką pokazywały Zdjęcia Google. Jeśli poprawiłeś datę w Zdjęciach Google, to pole zawiera twoją poprawkę.

creationTime to chwila wysłania pliku do Google. Dla zdjęcia zrobionego i zarchiwizowanego tego samego dnia obie daty są zgodne. Dla skanu odbitki z 1985 roku wysłanego w 2021 roku dzielą je dziesięciolecia.

Obie są zapisane jako timestamp, czyli liczba sekund od 1 stycznia 1970 roku, w UTC. Wiersz formatted to ta sama chwila w czytelnej formie, też w UTC.

Pliki albumów

Każdy folder albumu ma też jeden plik metadata.json, który opisuje sam album, a nie zdjęcie. Zawiera tytuł albumu, a czasem datę i informację, czy album jest udostępniony. Jest mały i nieszkodliwy. Czytają go narzędzia, które importują albumy, np. immich-go. Foldery wyjaśnia artykuł What happens to albums in Google Takeout (po angielsku).

Dlaczego nazywają się supplemental-metadata.json

Starsze eksporty nazywały plik IMG_3391.HEIC.json. Od 2024 roku nazwa brzmi IMG_3391.HEIC.supplemental-metadata.json. Google skraca też długie nazwy plików .json do 46 znaków, więc zdjęcie z Pixela dostaje partnera o nazwie PXL_20230721_092530123.jpg.supplemental-m.json. Gdy dwa zdjęcia mają tę samą nazwę, licznik trafia w pliku .json w inne miejsce: IMG_3391(1).HEIC łączy się z IMG_3391.HEIC.supplemental-metadata(1).json. Szczegóły są w artykule supplemental-metadata.json – wyjaśnienie.

Czy można usunąć pliki JSON z Google Takeout?

Tak, ale dopiero gdy je wykorzystasz. Jeśli usuniesz je wcześniej, daty i lokalizacje, które zawierają, przepadną. Zdjęcia na zawsze pokażą datę pobrania, a jedyny sposób na odzyskanie tych informacji to ponowny eksport z Takeout.

Jeśli wszystkie twoje zdjęcia mają już dobre dane EXIF, pliki .json niewiele dodają. Możesz to sprawdzić w exiftool: exiftool -r -if 'not $DateTimeOriginal' -filename . wypisuje każde zdjęcie bez daty EXIF. Jeśli lista jest pusta, możesz je usunąć.

W większości bibliotek lista nie jest pusta. Bezpieczna kolejność: zapisz dane z plików .json w zdjęciach, sprawdź kilka z nich, a potem usuń pliki .json. Immich, PhotoPrism i niektóre inne narzędzia instalowane na własnym serwerze potrafią czytać pliki .json z Takeout podczas importu, więc jeśli tam przenosisz zdjęcia, zachowaj je do końca importu. Krótka wersja jest w artykule Czy można usunąć pliki JSON z Google Takeout?

Które programy je czytają?

Zdjęcia na Macu, aplikacja Zdjęcia w Windows, Eksplorator plików, Finder i galerie w telefonach ich nie czytają. Szukają daty w pliku zdjęcia, nic nie znajdują i biorą datę pliku, czyli dzień rozpakowania eksportu. Dlatego każde zdjęcie z Takeout ma złą datę.

Zdjęcia Google też ich nie czytają. Immich i PhotoPrism potrafią je czytać podczas importu; zobacz PhotoPrism and JSON sidecars (po angielsku) i Google Photos to Immich (po angielsku).

Dlaczego niektóre zdjęcia nie mają pliku JSON?

Nie każde zdjęcie go dostaje. Część filmowa Live Photo często go nie ma. Niektóre bardzo stare przesłane pliki też nie. Takie zdjęcia zachowują datę, którą mają w sobie. Przypadki i to, co się dzieje z tymi zdjęciami, opisuje artykuł Why some photos have no JSON file (po angielsku).

Zapisanie danych z powrotem w zdjęciach

Ten krok to scalanie. Możesz to zrobić w exiftool, który czyta plik .json i zapisuje znaczniki EXIF. Polecenie i jego pułapki opisuje artykuł o scalaniu metadanych JSON ze zdjęciami. Darmowe skrypty, takie jak GooglePhotosTakeoutHelper, robią to samo.

Takeout JSON Metadata Fixer robi to jako aplikacja na komputer z macOS, Windows i Linux.

Czyta każdy plik .json, zapisuje photoTakenTime w danych EXIF zdjęcia, ustawia daty pliku tak samo i zapisuje współrzędne GPS, jeśli są prawdziwe, a nie zerowe. Zna oba schematy nazw plików .json, ucięte nazwy i liczniki (1), więc nie pomija plików, które przeoczyłby wzorzec nazwy. Opcjonalnie zmienia nazwy zdjęć i układa je w foldery, a obok wyniku może zapisać nowe pliki .json dla Immich lub PhotoPrism. Wszystko działa na twoim komputerze. Pierwsze 1000 zdjęć jest za darmo.

Częste pytania

Czy na jedno zdjęcie przypada jeden plik JSON?

Zwykle tak. Zdjęcia, które są w kilku albumach, mają kopię pliku .json w folderze każdego albumu. Kilka zdjęć nie ma go wcale, najczęściej klipy Live Photo i pliki z bardzo starych przesłań. Zachowują datę, którą mają w sobie.

Jak otworzyć plik JSON z Google Takeout?

W dowolnym edytorze tekstu: w Notatniku na Windows, w TextEdit na Macu albo w edytorze kodu. To zwykły tekst. Otwarcie niczego nie zmienia.

Czy Zdjęcia Google same potrafią je z powrotem odczytać?

Nie. Jeśli wyślesz folder z powrotem do Zdjęć Google, zignorują pliki .json i użyją danych EXIF z plików. Dlatego osoby, które przenoszą zdjęcia między dwoma kontami Google, też tracą daty. Zobacz Moving Google Photos between accounts (po angielsku).

Czy znaczniki czasu są w mojej strefie czasowej?

Nie. To chwile w UTC. Narzędzie przelicza je na czas lokalny przy zapisie EXIF, według strefy ustawionej w komputerze. Sprawdź, czy komputer ma ustawioną strefę, w której zrobiono większość zdjęć.

Czy pliki JSON zajmują dużo miejsca?

Od kilkuset bajtów do paru kilobajtów każdy. Dziesięć tysięcy takich plików to około 10 MB. Nie usuwa się ich z powodu miejsca, tylko z powodu bałaganu.