Co to jest supplemental-metadata.json w Google Takeout?
Ten plik zawiera datę, miejsce i opis zdjęcia ze Zdjęć Google. To nazwa pliku .json z Takeout od 2024 roku. Zachowaj go, dopóki dane nie trafią do zdjęcia.
supplemental-metadata.json to mały plik tekstowy, który Google Takeout zapisuje obok każdego zdjęcia i filmu. Zawiera to, co Zdjęcia Google wiedziały o danym pliku: datę wykonania, lokalizację GPS, opis i oryginalną nazwę pliku. Od 2024 roku tak nazywa się plik, który starsze eksporty nazywały IMG_5512.HEIC.json. Zawartość jest taka sama.
Zachowaj go, dopóki data i lokalizacja nie zostaną zapisane w zdjęciu. Większość aplikacji do zdjęć nigdy go nie czyta, więc bez tego kroku zdjęcia pokazują datę pobrania.
Może trafiłeś tutaj, bo skrypt, który kiedyś naprawiał eksporty z Takeout, teraz pomija połowę zdjęć. Albo zobaczyłeś IMG_5512.HEIC.supplemental-metadata.json obok jednego zdjęcia i PXL_20240311_183022711.jpg.supplemental-m.json obok innego i zastanawiasz się, czy ten drugi plik jest uszkodzony. Żaden nie jest uszkodzony. Poniżej wyjaśniamy nazwy, pola i to, co zrobić z tymi plikami.
Co znaczy „supplemental metadata”
Metadane to informacje o zdjęciu: kiedy, gdzie, jakim aparatem. „Supplemental” znaczy „dodatkowe”. To informacje, które Zdjęcia Google trzymały we własnej bazie danych, a nie w pliku zdjęcia.
Wiele zdjęć ma już datę w sobie, w danych EXIF. Zrzuty ekranu, obrazy zapisane z czatów, skany i każde zdjęcie, któremu poprawiłeś datę lub miejsce w Zdjęciach Google, jej nie mają. Dla nich plik z dodatkowymi metadanymi to jedyny zapis tego, kiedy i gdzie zdjęcie zostało zrobione. Szersze tło znajdziesz w artykule Czym są pliki JSON w Google Takeout.
Co jest w środku pliku
Otwórz go w Notatniku, TextEdit albo dowolnym edytorze kodu. To zwykły tekst. Najważniejsze pola:
title: oryginalna nazwa pliku. Przydaje się, gdy Takeout skrócił prawdziwą nazwę.photoTakenTime: data wykonania zdjęcia, taka, jaką pokazywały Zdjęcia Google. Uwzględnia każdą datę poprawioną ręcznie. To tej daty należy użyć.creationTime: kiedy plik został wysłany do Google. Przy skanie starej odbitki może to być kilkadziesiąt lat po prawdziwej dacie.geoData: lokalizacja znana Zdjęciom Google, także miejsce ustawione ręcznie.geoDataExif: lokalizacja, która była w danych EXIF pliku w chwili wysłania.description: twój opis, jeśli go wpisałeś.peopleifavorited: oznaczone osoby i zdjęcia oznaczone gwiazdką, jeśli są.
Znaczniki czasu to sekundy od 1 stycznia 1970 roku, w UTC. Zdjęcie bez lokalizacji ma 0.0 zarówno dla szerokości, jak i długości geograficznej. Traktuj to jako „brak lokalizacji”, a nie jako prawdziwe miejsce. Zobacz przywracanie GPS z Takeout (po angielsku).
Dlaczego nazwa zmieniła się w 2024 roku
Przez lata plik .json dla IMG_5512.HEIC nazywał się IMG_5512.HEIC.json. Nazwa zdjęcia, potem .json. Każdy skrypt szukał właśnie tego.
W 2024 roku Google przeszło na IMG_5512.HEIC.supplemental-metadata.json. Ta sama zawartość, te same pola, dłuższa nazwa. Nowa nazwa mówi, czym jest plik, zamiast gołego .json, który można wziąć za własne dane zdjęcia. Eksporty zrobione od tego czasu używają nowej nazwy. Stary eksport gdzieś na dysku używa starej, a folder, w którym zmieszano oba eksporty, zawiera obie.
Wszystko, co szuka <zdjęcie>.json, teraz nic nie znajduje i idzie dalej. Niektóre narzędzia zgłaszają „nie znaleziono pliku .json” dla każdego pliku. Inne po cichu biorą datę pliku, czyli datę pobrania, więc zdjęcia wychodzą źle bez żadnego błędu. Ten cichy błąd stoi za wieloma wpisami na forach w stylu „poprawka nie zadziałała”.
Dlaczego niektóre nazwy są ucięte, np. .supplemental-m.json
Google skraca całą nazwę pliku .json do 46 znaków. Przy starym, krótkim .json rzadko miało to znaczenie. Po dodaniu .supplemental-metadata.json każda nazwa zdjęcia dłuższa niż około 19 znaków traci część końcówki.
Zdjęcie z Pixela o nazwie PXL_20240311_183022711.jpg ma 26 znaków. Po dodaniu .supplemental-metadata.json ma 53. Google skraca je do 46: PXL_20240311_183022711.jpg.supplemental-m.json. Zdjęcie z Samsunga 20240311_183022.jpg dostaje 20240311_183022.jpg.supplemental-metada.json. Każda marka aparatu daje trochę inne cięcie, więc nie ma jednej końcówki, której można szukać.
Plik nie jest uszkodzony. Krótka jest tylko nazwa. Niezawodna reguła: nazwa pliku .json to początek <nazwa zdjęcia>.supplemental-metadata.json. Skrypt musi sprawdzać właśnie to, a nie porównywać stały ciąg znaków. Bardzo długie oryginalne nazwy, np. wpisane ręcznie, mogą zostać ucięte już w nazwie samego zdjęcia. Dlatego warto czytać pole title w pliku .json. Wszystkie reguły nazewnictwa zebrano w artykule Why Takeout files have strange names (po angielsku).
Gdzie trafia (1)
Zdjęcia Google pozwalają na dwa pliki o tej samej nazwie, a Takeout musi je umieścić w jednym folderze. Do drugiego dodaje licznik: IMG_5512.HEIC i IMG_5512(1).HEIC.
Można by się spodziewać plików IMG_5512.HEIC.supplemental-metadata.json i IMG_5512(1).HEIC.supplemental-metadata.json. Tak nie jest. Licznik przesuwa się na koniec nazwy pliku .json, przed .json: IMG_5512.HEIC.supplemental-metadata(1).json. W starym schemacie było to IMG_5512.HEIC(1).json.
Narzędzie musi więc wziąć nazwę zdjęcia, usunąć (1), zbudować nazwę pliku .json i wstawić (1) z powrotem tuż przed .json. Połącz to z cięciem do 46 znaków, a dostaniesz nazwy takie jak PXL_20240311_183022711.jpg.supplemental-(1).json. Prawdziwe eksporty je zawierają.
Liczniki są częste. Powstają, gdy to samo zdjęcie jest w dwóch albumach, gdy edytowałeś zdjęcie, a Google zachowało obie wersje, albo gdy dwa telefony nazwały plik IMG_0001.JPG.
Edytowane kopie nie mają własnego pliku .json
Zdjęcia edytowane w Zdjęciach Google wychodzą jako dwa pliki: IMG_5512.HEIC i IMG_5512-edited.HEIC. Zwykle jest jeden plik .json, przypisany do oryginalnej nazwy. Proste narzędzie zostawia edytowaną kopię bez daty. Staranne narzędzie usuwa -edited i używa pliku .json oryginału. Więcej w artykule Takeout duplicates and edited versions (po angielsku).
Czy mogę usunąć supplemental-metadata.json?
Tak, ale dopiero wtedy, gdy data i lokalizacja są już w zdjęciu. Jeśli usuniesz pliki wcześniej, te informacje przepadną. Zdjęcia zachowają datę pobrania, a jedyna droga powrotu to nowy eksport z Takeout.
Bezpieczna kolejność: zapisz dane w zdjęciach, sprawdź kilka zdjęć, a potem usuń pliki .json. Jeśli importujesz do Immich lub PhotoPrism, zachowaj je do końca importu, bo te narzędzia potrafią czytać pliki .json. Krótka odpowiedź jest w artykule Czy można usunąć pliki JSON z Google Takeout?.
Które aplikacje go czytają?
Zdjęcia na Macu, Windows i galerie w telefonach go nie czytają. Zaglądają tylko do pliku zdjęcia. Zdjęcia Google też go nie czytają, jeśli wyślesz folder ponownie. Immich, PhotoPrism i niektóre inne narzędzia instalowane na własnym serwerze potrafią czytać pliki .json z Takeout podczas importu. W każdym innym przypadku najpierw zapisz dane w zdjęciu.
Jak zapisać dane z powrotem w zdjęciu
Zapisywanie danych z pliku .json w danych EXIF zdjęcia to scalanie. W exiftool uruchom polecenie dwa razy, raz dla każdej końcówki:
exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" "-DateTimeOriginal<PhotoTakenTimeTimestamp" -ext jpg -ext heic -overwrite_original .
exiftool -r -d %s -tagsfromfile "%d/%F.json" "-DateTimeOriginal<PhotoTakenTimeTimestamp" -ext jpg -ext heic -overwrite_original .
Potem wypisz zdjęcia, które nadal nie mają daty, poleceniem exiftool -r -if 'not $DateTimeOriginal' -filename .. Zostaną przypadki ucięte i te z (1). Najprościej zmienić nazwy tych plików .json na pełną oczekiwaną nazwę krótkim skryptem i uruchomić exiftool jeszcze raz. Pełny opis, z GPS i filmami, jest w artykułach o scalaniu metadanych JSON ze zdjęciami i poprawianiu dat w exiftool.
GooglePhotosTakeoutHelper, darmowe narzędzie społeczności, ma to dopasowywanie wbudowane i jest zwykłym wyborem, jeśli dobrze czujesz się w terminalu. Jego wersje czasem nie nadążają za zmianami Google, więc jeśli przebieg pomija pliki, zajrzyj do listy zgłoszeń (issue tracker).
Aplikacja
Takeout JSON Metadata Fixer obsługuje wszystkie te przypadki bez żadnej konfiguracji, na macOS, Windows i Linux.
Dla każdego zdjęcia próbuje nazwy z 2024 roku, starej nazwy, przesuniętego licznika (1), a na końcu każdego pliku .json w folderze, którego nazwa jest początkiem pełnej oczekiwanej nazwy. Edytowane kopie korzystają z pliku .json oryginału. Potem aplikacja zapisuje w pliku datę i GPS. Podaje, ile zdjęć dopasowała do pliku .json, a ile dostało datę z EXIF lub datę pliku, więc zanim cokolwiek usuniesz, widzisz, czy dopasowanie się udało. Przebieg próbny pokazuje plan bez zapisywania. Pierwsze 1000 zdjęć jest za darmo.
Częste pytania
Czy zawartość supplemental-metadata.json różni się od starego .json?
Nie. Pola są te same: title, photoTakenTime, creationTime, geoData, geoDataExif i tak dalej. Zmieniła się tylko nazwa pliku.
Moje zdjęcie w ogóle nie ma pliku .json. Dlaczego?
Klipy Live Photo często go nie mają. Niektóre bardzo stare przesłane pliki też nie. A jeśli plik .json jest ucięty albo ma przesunięty licznik, narzędzie może zgłosić go jako brakujący, choć jest na miejscu. Zajrzyj do folderu sam. Typowe przypadki opisuje artykuł Why some photos have no JSON file (po angielsku).
Czy ten plik to wirus albo oprogramowanie szpiegujące?
Nie. To zwykły plik tekstowy, który Google zapisuje w twoim własnym eksporcie. Nie zawiera żadnego kodu programu.
Czy mogę zmienić nazwy plików .json z powrotem na stary schemat?
Tak, i dzięki temu stare skrypty znów działają. Wystarczy zmiana nazwy, która usuwa .supplemental-metadata i przenosi (1) z powrotem do części z nazwą zdjęcia. Najpierw zrób to na kopii.
Czy Google znowu zmieni nazwę?
Możliwe. Bezpieczne podejście dla każdego narzędzia to dopasowywanie po początku nazwy i po polu title, a nie po dokładnej końcówce.