Apa itu supplemental-metadata.json di Google Takeout?
File ini menyimpan tanggal, lokasi, dan keterangan tiap foto dari Google Foto. Ini nama baru file .json Takeout sejak 2024. Simpan sampai datanya masuk ke foto.
supplemental-metadata.json adalah file teks kecil yang dibuat Google Takeout di samping setiap foto dan video. Isinya adalah apa yang diketahui Google Foto tentang file itu: tanggal pengambilan, lokasi GPS, keterangan (caption), dan nama file aslinya. Sejak 2024, inilah nama untuk file sidecar yang di ekspor lama bernama IMG_5512.HEIC.json. Isinya sama saja.
Simpan file ini sampai tanggal dan lokasinya sudah ditulis ke dalam foto. Kebanyakan aplikasi foto tidak pernah membacanya, jadi tanpa langkah itu foto Anda akan menunjukkan tanggal unduhan.
Mungkin Anda sampai di sini karena skrip yang dulu bisa memperbaiki ekspor Takeout sekarang melewatkan separuh foto. Atau Anda melihat IMG_5512.HEIC.supplemental-metadata.json di samping satu foto dan PXL_20240311_183022711.jpg.supplemental-m.json di samping foto lain, lalu bertanya apakah file kedua rusak. Keduanya tidak rusak. Bagian di bawah ini menjelaskan nama-namanya, isinya, dan apa yang perlu dilakukan dengan file ini.
Apa arti "supplemental metadata"
Metadata adalah informasi tentang foto: kapan, di mana, dengan kamera apa. "Supplemental" berarti tambahan. Artinya, ini informasi yang disimpan Google Foto di database-nya sendiri, bukan di dalam file gambar.
Banyak foto sudah membawa tanggal di dalamnya, yaitu di data EXIF. Tangkapan layar, gambar yang disimpan dari aplikasi chat, hasil pindai, dan foto yang tanggal atau tempatnya pernah Anda koreksi di Google Foto tidak membawanya. Untuk foto-foto itu, file supplemental metadata adalah satu-satunya catatan kapan dan di mana foto diambil. Latar belakang lengkapnya ada di Apa itu file JSON di Google Takeout.
Apa isi file ini
Buka saja dengan Notepad, TextEdit, atau editor kode apa pun. Isinya teks biasa. Kolom yang penting:
title: nama file asli. Berguna jika Takeout memendekkan nama file sebenarnya.photoTakenTime: tanggal pengambilan foto, seperti yang ditampilkan Google Foto. Termasuk tanggal yang pernah Anda perbaiki sendiri. Inilah tanggal yang harus dipakai.creationTime: kapan file diunggah ke Google. Untuk hasil pindai foto cetak lama, ini bisa berselisih puluhan tahun dari tanggal aslinya.geoData: lokasi seperti yang diketahui Google Foto, termasuk tempat yang Anda atur sendiri.geoDataExif: lokasi yang ada di EXIF file itu saat diunggah.description: keterangan Anda, jika pernah Anda ketik.peopledanfavorited: nama orang yang ditandai dan foto berbintang, jika ada.
Stempel waktunya berupa jumlah detik sejak 1 Januari 1970, dalam UTC. Foto tanpa lokasi berisi 0.0 untuk lintang dan bujur. Anggap itu "tidak ada lokasi", bukan tempat sungguhan. Lihat memulihkan GPS dari Takeout (bahasa Inggris).
Mengapa namanya berubah pada 2024
Selama bertahun-tahun, sidecar untuk IMG_5512.HEIC bernama IMG_5512.HEIC.json: nama foto, lalu .json. Semua skrip mencocokkan pola itu.
Pada 2024 Google beralih ke IMG_5512.HEIC.supplemental-metadata.json. Isi sama, kolom sama, nama lebih panjang. Nama baru ini menjelaskan jenis filenya, alih-alih .json polos yang bisa dikira data milik foto itu sendiri. Ekspor sejak saat itu memakai nama baru. Ekspor lama yang tersimpan di sebuah drive memakai nama lama, dan folder yang mencampur kedua ekspor berisi keduanya.
Alat apa pun yang mencari <foto>.json sekarang tidak menemukan apa-apa lalu lanjut. Sebagian alat melaporkan "no sidecar found" untuk setiap file. Yang lain diam-diam memakai tanggal file, yaitu tanggal unduhan, sehingga hasilnya salah tanpa pesan kesalahan. Kegagalan diam-diam inilah penyebab banyak keluhan "perbaikannya tidak berhasil".
Mengapa sebagian nama terpotong, seperti .supplemental-m.json
Google memotong seluruh nama file sidecar menjadi 46 karakter. Dengan akhiran .json yang pendek dulu, ini jarang jadi masalah. Dengan tambahan .supplemental-metadata.json, nama foto apa pun yang lebih dari sekitar 19 karakter akan kehilangan sebagian akhirannya.
Foto Pixel bernama PXL_20240311_183022711.jpg panjangnya 26 karakter. Tambahkan .supplemental-metadata.json, jadilah 53. Google memotongnya ke 46: PXL_20240311_183022711.jpg.supplemental-m.json. Foto Samsung 20240311_183022.jpg mendapat 20240311_183022.jpg.supplemental-metada.json. Setiap merek kamera menghasilkan potongan yang sedikit berbeda, jadi tidak ada satu akhiran pun yang bisa dicocokkan.
Filenya tidak rusak. Hanya namanya yang pendek. Aturan yang bisa diandalkan: nama sidecar adalah bagian awal dari <nama foto>.supplemental-metadata.json. Skrip harus memeriksa itu, bukan membandingkan teks yang tetap. Nama file asli yang sangat panjang, misalnya yang Anda ketik sendiri, bisa terpotong sampai ke nama fotonya. Karena itulah kolom title di dalam sidecar layak dibaca. Mengapa file Takeout punya nama aneh (bahasa Inggris) merangkum semua aturan penamaan.
Di mana letak (1)
Google Foto mengizinkan dua file dengan nama yang sama, dan Takeout harus menaruhnya di satu folder. Takeout menambahkan penghitung pada file kedua: IMG_5512.HEIC dan IMG_5512(1).HEIC.
Anda mungkin mengira sidecar-nya IMG_5512.HEIC.supplemental-metadata.json dan IMG_5512(1).HEIC.supplemental-metadata.json. Ternyata bukan. Penghitungnya pindah ke ujung nama sidecar, sebelum .json: IMG_5512.HEIC.supplemental-metadata(1).json. Dengan gaya lama, namanya IMG_5512.HEIC(1).json.
Jadi sebuah alat harus mengambil nama foto, membuang (1), menyusun nama sidecar, lalu menaruh (1) kembali tepat sebelum .json. Gabungkan dengan pemotongan 46 karakter, dan Anda mendapat nama seperti PXL_20240311_183022711.jpg.supplemental-(1).json. Nama seperti ini benar-benar ada di ekspor.
Penghitung seperti ini sering muncul. Foto yang sama disimpan di dua album, foto yang Anda edit dan kedua versinya disimpan Google, atau dua ponsel yang sama-sama memberi nama IMG_0001.JPG, semuanya menghasilkan penghitung.
Salinan yang diedit tidak punya sidecar sendiri
Foto yang diedit di Google Foto keluar sebagai dua file: IMG_5512.HEIC dan IMG_5512-edited.HEIC. Biasanya hanya ada satu sidecar, yang terikat pada nama aslinya. Alat yang sederhana membiarkan salinan yang diedit tanpa tanggal. Alat yang teliti membuang -edited dan memakai sidecar milik file aslinya. Selengkapnya di duplikat dan versi yang diedit di Takeout (bahasa Inggris).
Bolehkah saya menghapus supplemental-metadata.json?
Boleh, tetapi hanya setelah tanggal dan lokasinya sudah ada di dalam foto. Jika Anda menghapusnya lebih dulu, informasi itu hilang. Foto Anda tetap bertanggal unduhan, dan satu-satunya jalan kembali adalah ekspor Takeout baru.
Urutan yang aman: gabungkan datanya ke dalam foto, periksa beberapa foto, lalu hapus file .json. Jika Anda mengimpor ke Immich atau PhotoPrism, simpan file itu sampai impor selesai, karena alat-alat itu bisa membaca sidecar. Jawaban singkatnya ada di Bolehkah menghapus file JSON Google Takeout?
Aplikasi mana yang membacanya?
Apple Photos, Windows, dan galeri ponsel tidak membacanya. Mereka hanya melihat isi file gambar. Google Foto juga tidak membacanya jika Anda mengunggah foldernya lagi. Immich, PhotoPrism, dan beberapa alat self-hosted lain bisa membaca sidecar Takeout saat impor. Untuk tujuan lainnya, tulis dulu datanya ke dalam foto.
Cara memasukkan data kembali ke foto
Menulis data sidecar ke EXIF foto disebut menggabungkan (merge). Dengan exiftool, jalankan dua kali, sekali untuk setiap akhiran:
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 .
Lalu tampilkan foto yang masih belum bertanggal dengan exiftool -r -if 'not $DateTimeOriginal' -filename .. Sisanya adalah kelompok nama yang terpotong dan yang ber-(1). Cara termudah: ganti nama sidecar-sidecar itu ke nama lengkap yang diharapkan dengan skrip pendek, lalu jalankan exiftool lagi. Panduan lengkapnya, termasuk GPS dan video, ada di menggabungkan metadata JSON ke foto dan panduan exiftool.
GooglePhotosTakeoutHelper, alat gratis buatan komunitas, sudah punya pencocokan ini dan biasanya dipilih oleh orang yang nyaman memakai terminal. Rilisnya kadang tertinggal dari perubahan Google, jadi periksa issue tracker-nya jika ada file yang dilewati.
Aplikasinya
Takeout JSON Metadata Fixer menangani semua kasus ini tanpa pengaturan apa pun, di macOS, Windows, dan Linux.
Untuk setiap foto, aplikasi mencoba nama gaya 2024, nama gaya lama, penghitung (1) yang berpindah, dan terakhir file .json apa pun di folder yang namanya merupakan awal dari nama lengkap yang diharapkan. Salinan yang diedit memakai sidecar milik aslinya. Lalu aplikasi menulis tanggal dan GPS ke dalam file. Aplikasi melaporkan berapa foto yang cocok dengan sidecar dan berapa yang memakai EXIF atau tanggal file, sehingga Anda bisa melihat apakah pencocokannya berhasil sebelum menghapus apa pun. Uji coba (dry run) menampilkan rencananya tanpa menulis apa-apa. 1000 foto pertama gratis.
Pertanyaan yang sering diajukan
Apakah isi supplemental-metadata.json berbeda dari .json yang lama?
Tidak. Kolomnya sama: title, photoTakenTime, creationTime, geoData, geoDataExif, dan seterusnya. Hanya nama filenya yang berubah.
Foto saya sama sekali tidak punya sidecar. Mengapa?
Klip Live Photo sering tidak punya. Sebagian unggahan yang sangat lama juga tidak. Dan jika sidecar terpotong atau penghitungnya berpindah, alat Anda bisa melaporkannya hilang padahal ada. Periksa sendiri foldernya. Mengapa sebagian foto tidak punya file JSON (bahasa Inggris) mencantumkan kasus-kasus yang biasa.
Apakah file ini virus atau spyware?
Bukan. Ini file teks biasa yang ditulis Google ke dalam ekspor Anda sendiri. Tidak ada kode program di dalamnya.
Bisakah saya mengganti nama sidecar kembali ke gaya lama?
Bisa, dan itu membuat skrip lama berfungsi lagi. Cukup ganti nama dengan membuang .supplemental-metadata dan memindahkan (1) kembali ke bagian nama foto. Lakukan dulu pada salinan.
Apakah Google akan mengganti namanya lagi?
Mungkin. Cara yang aman untuk alat apa pun adalah mencocokkan berdasarkan awal nama dan kolom title, bukan berdasarkan akhiran yang persis.