Takeout JSON
KO

테이크아웃 JSON 메타데이터를 사진에 합치는 방법, 단계별로

구글 테이크아웃 .json 사이드카의 촬영일과 GPS를 사진 파일 안에 써 넣는 방법입니다. exiftool 명령과 클릭 몇 번으로 끝나는 앱, 두 가지를 순서대로 설명합니다.

사진이 가득한 폴더가 있고, 사진마다 옆에 .json 파일이 하나씩 붙어 있습니다. 진짜 날짜와 위치는 그 .json 안에 있는데, 사진 자체는 엉뚱한 날짜를 보여 줍니다. 원하는 것은 .json의 정보를 사진 안에 써 넣고, 사이드카는 버리고, 평범한 사진 폴더를 갖는 것입니다.

이미 답이 있는 문제입니다. 손으로 하는 방법과 클릭 몇 번으로 하는 방법을 차례로 설명합니다.

"합친다"는 게 정확히 무엇인가요?

JPEG, HEIC, PNG 파일 안에는 EXIF라는 메타데이터 블록이 있습니다. 카메라는 촬영 날짜를 DateTimeOriginal이라는 태그에, GPS 좌표를 GPSLatitudeGPSLongitude 태그에 씁니다. 윈도우, 맥, 휴대폰의 사진 앱은 모두 이 태그를 읽습니다.

테이크아웃 사이드카에는 같은 정보가 다른 그릇에 담겨 있습니다. 합친다는 것은 사이드카의 photoTakenTimegeoData를 읽어 EXIF 태그에 쓰는 일입니다. 하는 김에 파일의 만든 날짜와 수정한 날짜도 맞춥니다. 그래야 EXIF를 보지 않는 탐색기나 파인더 화면에서도 순서가 맞습니다.

동영상에는 EXIF가 없습니다. 날짜는 MP4나 MOV 컨테이너 안의 CreateDate 같은 태그에 들어갑니다. 원리는 같고 태그 이름만 다릅니다.

1단계: 모든 zip을 한 곳에 풀기

테이크아웃은 큰 내보내기를 여러 zip으로 나눕니다. 전부 같은 상위 폴더에 풀어서 앨범 폴더가 하나로 합쳐지게 하십시오. 앨범 하나가 두 zip에 걸쳐 있으면 사진 절반과 사이드카 절반이 각각 다른 zip에 들어 있을 수 있습니다. 결국 나란히 놓여야 합니다. zip이 많다면 테이크아웃 zip 분할 압축 풀기를 참고하십시오.

2단계: 사진이 자기 사이드카를 찾는 방식

사이드카 이름은 사진 이름 뒤에 꼬리가 붙은 형태입니다. 2024년 이후 내보내기에서는 IMG_0042.JPG의 짝이 IMG_0042.JPG.supplemental-metadata.json이고, 예전 내보내기에서는 IMG_0042.JPG.json입니다.

이 단순한 규칙이 깨지는 경우가 두 가지 있습니다. 46자보다 긴 이름은 잘리기 때문에 꼬리도 잘립니다. 그리고 중복 사진은 번호가 엉뚱한 자리에 붙습니다. IMG_0042(1).JPG의 짝은 IMG_0042.JPG.supplemental-metadata(1).json입니다. 어떤 도구를 쓰든 두 경우를 모두 처리해야 합니다. 그렇지 않으면 그 파일들을 아무 말 없이 건너뜁니다. 자세한 내용은 supplemental-metadata.json 설명에 있습니다.

3단계: exiftool로 합치기

exiftool은 무료이고 모든 운영체제에서 동작합니다. 설치한 뒤 Google Photos 폴더에서 터미널을 열고 다음을 실행합니다.

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

이 명령은 모든 이미지에 대해 같은 폴더에서 "같은 이름 + .supplemental-metadata.json" 파일을 찾아, 나열한 항목을 옮겨 씁니다. -d %s는 타임스탬프가 1970년부터 센 초 단위라는 뜻입니다. -overwrite_original을 넣지 않으면 파일마다 백업 사본이 하나씩 남습니다.

예전 방식의 사이드카를 위해 "%d/%F.json"으로 바꿔 한 번 더 실행합니다. 그다음 동영상용으로 한 번 더 실행합니다.

exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
  "-CreateDate<PhotoTakenTimeTimestamp" "-ModifyDate<PhotoTakenTimeTimestamp" \
  "-TrackCreateDate<PhotoTakenTimeTimestamp" "-MediaCreateDate<PhotoTakenTimeTimestamp" \
  "-FileModifyDate<PhotoTakenTimeTimestamp" \
  -ext mp4 -ext mov -overwrite_original .

4단계: exiftool이 놓친 것 처리하기

남은 파일을 세어 봅니다.

exiftool -r -if 'not $DateTimeOriginal' -ext jpg -ext heic -ext png -filename .

목록에는 잘린 이름, (1) 중복, 그리고 처음부터 사이드카가 없던 사진이 나옵니다. 잘린 이름은 기대한 이름의 앞부분과 일치하는 .json을 찾는 짧은 스크립트로 잡을 수 있습니다. 중복은 이름을 바꿔야 패턴이 맞습니다. 10분짜리 작업이 저녁 한나절이 되는 부분이 바로 여기입니다. GooglePhotosTakeoutHelper 같은 커뮤니티 스크립트가 있는 이유이기도 합니다. 무료이고 짝짓기를 대신해 주지만 터미널에서 돌려야 합니다. 비교는 GooglePhotosTakeoutHelper 대안에 있습니다.

함정이 하나 더 있습니다. 위의 GPS 줄은 사이드카에 "위치 모름"이라고 되어 있는 사진에도 0.0, 0.0을 그대로 씁니다. -if '$GeoDataLatitude ne 0'을 추가하지 않으면 대서양 한가운데 사진 무더기가 생깁니다.

5단계: 대신 앱으로

Takeout JSON Metadata Fixer는 1단계부터 4단계까지를 한 번에 처리합니다. 윈도우, 맥, 리눅스에서 동작합니다.

테이크아웃 zip이나 압축을 푼 폴더를 고르면 됩니다. 앱은 구글이 써 온 모든 이름 방식을 시도해 사진과 동영상을 사이드카와 짝짓습니다. 46자 잘림과 (1) 번호도 포함됩니다. 이미지는 EXIF에, 동영상은 컨테이너에 날짜를 쓰고, 파일 날짜도 맞추며, GPS는 좌표가 실제 값일 때만 씁니다. 사이드카가 없는 사진은 자기 EXIF 날짜를 유지하고, 그것도 없으면 파일 날짜를 씁니다.

"이름 유지"와 "내 폴더 유지"를 고르면 같은 폴더가 올바른 메타데이터로 돌아옵니다. 원하면 같은 실행에서 파일 이름을 날짜로 바꾸고 연/월 폴더로 정리할 수도 있습니다. 시험 실행으로 아무것도 쓰기 전에 계획을 볼 수 있습니다. 처음 1000장은 무료이고, 무제한은 19.99달러 한 번입니다. 컴퓨터 다섯 대는 49.99달러입니다. 어디에도 업로드하지 않습니다.

6단계: 확인한 뒤 사이드카 지우기

사진 앱에서 연도가 다른 사진 몇 장을 열어 날짜를 확인합니다. 그다음 .json 파일을 지웁니다. 맥이나 리눅스에서는 폴더 안에서 find . -name "*.json" -delete를 실행합니다. 윈도우에서는 폴더에서 *.json을 검색해 전부 선택하고 지웁니다. 문제가 나중에 보일 수 있으니 원본 zip은 한 달쯤 어딘가에 남겨 두십시오. 순서는 JSON 파일 삭제에 자세히 있습니다.

자주 묻는 질문

합치면 화질이 떨어지나요?

아니요. 메타데이터 블록만 다시 씁니다. 압축된 픽셀 데이터는 바이트 그대로 복사됩니다.

사진에 이미 있는 EXIF 날짜가 사이드카와 다르면요?

사이드카는 구글 포토가 보여 주던 날짜입니다. 사용자가 고친 값도 포함됩니다. 대부분은 그쪽이 원하는 날짜입니다. 구글 포토에서 날짜를 고친 적이 없다면 둘은 어차피 같습니다.

시간이 몇 시간 어긋나게 나옵니다.

사이드카의 타임스탬프는 UTC입니다. EXIF에는 시간대가 없어서 도구가 컴퓨터의 현지 시간대로 바꿔 씁니다. 사진을 찍은 곳의 시간대로 컴퓨터를 맞추거나, 차이를 받아들이십시오. 한국 사진이라면 9시간 차이 나는 이유를 보십시오.

날짜만 합치고 GPS는 빼도 되나요?

됩니다. exiftool 명령에서 GPS 줄을 빼면 됩니다. 앱은 GPS가 있으면 씁니다. 파일 이름에 장소가 들어가는 것이 싫다면 장소가 없는 이름 형식을 고르십시오.