Pacix Labs

Ảnh

Cách gộp tệp JSON của Google Takeout vào ảnh (sửa ngày chụp bị sai)

Google Takeout lưu ngày chụp ảnh của bạn trong các tệp JSON riêng. Bốn công cụ miễn phí gộp chúng trở lại: mỗi công cụ sửa gì, lệnh chính xác và cách kiểm tra kết quả.

· 9 phút đọc

Cũng có bằng: العربيةবাংলাDeutschespañolfrançaisગુજરાતીहिन्दीIndonesiaitaliano日本語ಕನ್ನಡ한국어EnglishमराठीpolskiportuguêsрусскийKiswahiliதமிழ்తెలుగుไทยTürkçeукраїнськаاردو中文

Bạn đã tải thư viện Google Photos của mình bằng Google Takeout. Giờ bạn có hàng nghìn ảnh nằm cạnh hàng nghìn tệp .json, và trình xem ảnh nói rằng một bức ảnh từ năm 2019 được chụp hôm qua. Để sửa, bạn gộp từng tệp JSON trở lại vào ảnh của nó. Một công cụ đọc ngày chụp từ tệp JSON rồi ghi vào ảnh, để mọi ứng dụng lại hiển thị đúng ngày.

Hướng dẫn này giải thích vì sao có các tệp JSON, vì sao việc gộp đôi khi thất bại và bốn công cụ miễn phí thực hiện việc gộp như thế nào. Bạn sẽ có lệnh chính xác cho từng công cụ, biết mỗi công cụ thay đổi ngày nào và có cách kiểm tra kết quả trước khi xóa bất cứ thứ gì.

Vì sao ảnh của bạn đi kèm tệp JSON

Với mỗi ảnh, Takeout đưa cho bạn hai tệp: hình ảnh, ví dụ IMG_1234.jpg, và một tệp JSON chứa ngày gốc, tọa độ GPS, mô tả và các album mà ảnh thuộc về. Một hướng dẫn xuất dữ liệu mô tả ấn tượng đầu tiên điển hình: một bức ảnh năm 2019 hiện ngày là "hôm qua", không có vị trí và không có album, dù chẳng có gì bị mất. Thông tin nằm trong tệp JSON (PixelUnion). Illinois Tech cũng giải thích tương tự vì sao bản xuất có nhiều tệp hơn số ảnh trong thư viện của bạn (Illinois Tech).

Tệp ảnh có thể không khớp với tệp JSON. Tác giả của google-photos-exif nhận thấy rằng nếu bạn đổi ngày trong Google Photos, siêu dữ liệu bên trong ảnh không được cập nhật: ngày mới chỉ có trong tệp JSON. Một số ảnh, thường là ảnh người khác chia sẻ với bạn, hoàn toàn không có ngày bên trong (google-photos-exif). README của gphotos-takeout-repair cho thấy nửa còn lại của vấn đề: trong bản xuất đã giải nén, ảnh, phiên bản đã chỉnh sửa của nó và tệp JSON đều hiển thị ngày xuất Takeout làm ngày tạo (gphotos-takeout-repair).

Vì vậy, ứng dụng chỉ đọc tệp ảnh sẽ không thấy ngày nào, hoặc thấy ngày bạn xuất dữ liệu. Ngày đúng nằm trong tệp JSON, và việc gộp sẽ đưa nó trở lại.

Ba điều làm hỏng việc gộp

Mọi công cụ gộp đều phải tìm đúng tệp JSON cho từng ảnh. Ba đặc điểm của Takeout khiến việc này khó hơn.

  1. Ảnh và tệp JSON của nó có thể nằm ở hai tệp zip khác nhau. Câu hỏi thường gặp về chuyển dữ liệu của Ente đưa ví dụ flower.jpeg ở một tệp zip và flower.json ở tệp khác, khiến hai tệp không ghép được với nhau (Ente). README của Porte liệt kê đúng trường hợp này là một giới hạn đã biết: công cụ không tìm thấy các tệp siêu dữ liệu nằm ở kho nén khác với ảnh của chúng (Porte).
  2. Tên tệp JSON không nhất quán. Với IMG123.jpg, bạn có thể nhận được IMG123.jpg.json hoặc chỉ IMG123.json, và một số thư mục chứa tệp JSON không có ảnh tương ứng (google-photos-exif).
  3. Ảnh đã chỉnh sửa xuất hiện hai lần. Takeout xuất ảnh gốc và bản sao đã chỉnh sửa thành hai tệp riêng có mã hash khác nhau, nên công cụ tìm ảnh trùng so sánh hash sẽ không phát hiện ra chúng (Ente). Tệp đã chỉnh sửa có hậu tố -edited, như IMG_0001-edited.jpg nằm cạnh IMG_0001.jpg (gphotos-takeout-repair).

Cách xử lý điểm đầu tiên giống nhau với mọi công cụ: tải về tất cả tệp zip, rồi giải nén tất cả vào cùng một thư mục cha và giữ nguyên các thư mục con (Ente). Nếu hai tệp zip có thư mục trùng tên, hãy gộp nội dung của các thư mục thay vì để thư mục này thay thế thư mục kia (google-photos-exif).

Một mẹo của Illinois Tech khi tải về: giữ cửa sổ Takeout ở phía trước. Nếu bạn thu nhỏ nó hoặc làm việc ở cửa sổ khác, quá trình tải sẽ thất bại sau 15 phút vì Google yêu cầu bạn đăng nhập lại (Illinois Tech).

Bốn công cụ miễn phí và ngày mà mỗi công cụ sửa

Một bức ảnh có hai loại ngày. Ngày EXIF (DateTimeOriginal) được lưu bên trong ảnh và đi theo ảnh đến bất kỳ ứng dụng hay dịch vụ nào. Ngày của tệp (ngày sửa đổi hoặc ngày tạo) thuộc về hệ thống tệp. Ngày này rất dễ mất: README của gpth cảnh báo rằng di chuyển tệp trên điện thoại Android thường đặt lại nó (gpth). Trước khi chọn công cụ, hãy kiểm tra xem nó ghi loại ngày nào trong hai loại.

Trong mọi lệnh bên dưới, thư mục thứ nhất là bản Takeout đã giải nén của bạn và thư mục thứ hai là một thư mục đầu ra mới, trống.

Porte: ghi ngày và vị trí vào ảnh

Porte sao chép dấu thời gian và vị trí địa lý từ tệp JSON tương ứng vào dữ liệu EXIF của ảnh mà không nén lại ảnh. Nếu không tìm thấy ngày, nó thử lấy từ tên tệp, và dùng ngày sớm nhất tìm được để ngày sửa đổi tệp không bị coi là ngày chụp. Nó sao chép tệp sang thư mục đầu ra thay vì sửa trực tiếp tại chỗ, đưa các tệp lỗi vào một thư mục riêng và lưu nhật ký. Nó không giữ dữ liệu album. Bạn có thể tải chương trình dựng sẵn từ trang phát hành của dự án (Porte):

porte srcpath destpath

google-photos-exif: điền ngày EXIF còn thiếu

Công cụ Node.js này đọc photoTakenTime từ mỗi tệp JSON. Nó đặt ngày sửa đổi của tệp, và chỉ điền DateTimeOriginal khi ảnh chưa có. Các tệp nó không xử lý được sẽ chuyển vào thư mục lỗi (google-photos-exif). Tác giả của PixelUnion đã dùng nó và cho biết nó xử lý toàn bộ thư viện trong khoảng hai mươi phút (PixelUnion).

yarn start --inputDir ~/takeout --outputDir ~/output --errorDir ~/error

gpth: sắp xếp vào một thư mục hoặc theo tháng, rồi đặt ngày của tệp

Google Photos Takeout Helper là công cụ tương tác: bạn chạy nó và trả lời các câu hỏi. Nó gom mọi ảnh vào một thư mục, hoặc vào các thư mục theo tháng với tùy chọn --divide-to-dates, và đặt ngày sửa đổi cuối cùng của tệp. Việc ghi dữ liệu JSON trở lại EXIF vẫn còn trong danh sách việc cần làm của nó, vì vậy README đưa thêm một lệnh exiftool sao chép ngày của tệp vào các trường ngày EXIF cho những ảnh chưa có. Hãy chạy lệnh đó trước khi đụng lại vào các tệp. Lưu ý rằng gpth mặc định di chuyển tệp, vì vậy hãy giữ các tệp zip gốc (gpth).

exiftool -overwrite_original -r -if 'not defined DateTimeOriginal' -P "-AllDates<FileModifyDate" "your/output/folder/ALL_PHOTOS/"

gphotos-takeout-repair: loại bỏ tệp JSON và bản trùng đã chỉnh sửa

Công cụ này sao chép ảnh của bạn sang một thư mục mới, giữ nguyên cấu trúc thư mục và đặt ngày tạo của từng tệp theo photoTakenTime trong tệp JSON. Khi có bản sao -edited, nó giữ phiên bản đó (thường là bản tốt nhất) và bỏ bản gốc, nên kết quả không có tệp JSON và không có bản trùng đã chỉnh sửa (gphotos-takeout-repair). Cài đặt bằng npm install -g gphotos-takeout-repair, rồi:

gphotos-takeout-repair --src ./unzipped-takeout-dir --dest ./output-dir

Nếu bạn muốn ngày nằm bên trong ảnh với mọi bức ảnh, Porte ghi trực tiếp. Với ba công cụ còn lại, hãy kiểm tra ngày EXIF sau đó, như hướng dẫn bên dưới.

Kiểm tra ngày đã thật sự nằm trong ảnh

Đừng tin cột "ngày sửa đổi" trong trình duyệt tệp. Hãy kiểm tra chính siêu dữ liệu.

  1. Không cần phần mềm thêm: nhấp chuột phải vào một ảnh và chọn Get Info trên Mac hoặc Properties trên Windows. Sau khi gộp thành công, bạn sẽ thấy đúng ngày chụp, tọa độ GPS nếu ảnh có và mẫu máy ảnh nếu có thông tin (PixelUnion).
  2. Cho cả một thư mục: ExifTool có thể in thẻ DateTimeOriginal cho mọi tệp JPG trong một thư mục. Dòng lệnh này dựa trên một ví dụ trong tài liệu của nó (ExifTool):
exiftool -DateTimeOriginal -S -s -ext jpg .

Một dòng trống hoặc một ngày trong tuần bạn xuất dữ liệu nghĩa là ảnh đó chưa được gộp. Khi đó hãy xem thư mục lỗi hoặc thư mục thất bại của công cụ, và kiểm tra xem tệp JSON tương ứng có đến từ một tệp zip khác không.

  1. So sánh số lượng. Thư mục đầu ra cộng với thư mục lỗi phải chứa xấp xỉ số ảnh và video bằng bản Takeout đã giải nén, trừ đi các bản trùng đã chỉnh sửa nếu công cụ của bạn loại bỏ chúng.

Một lựa chọn chỉ cần một cú nhấp

Nếu bạn không muốn dùng dòng lệnh, một ứng dụng máy tính có thể làm cùng công việc. PHOTOK là một sản phẩm của Pacix Labs. Theo trang của nó, ứng dụng đọc các tệp .json mà Google rải khắp nơi và đưa ngày và địa điểm thật trở lại, rồi sắp xếp ảnh vào các thư mục Năm / Tháng / Địa điểm và để riêng các bản trùng giống hệt nhau. Ứng dụng chạy trên Windows 10 và 11 và trên máy Mac dùng chip Apple, hoạt động mà không tải lên bất cứ thứ gì và không bao giờ xóa tệp. Bản xem trước miễn phí, còn bản đầy đủ có giá €49, trả một lần (PHOTOK).

Dù bạn chọn cách nào, các công cụ miễn phí ở trên hay một ứng dụng, quy tắc vẫn như nhau: làm việc trên bản sao, kiểm tra một số ảnh mẫu và giữ lại các tệp zip.

Danh sách kiểm tra

  • Tải về mọi tệp zip và giữ một bản sao trên ổ đĩa thứ hai.
  • Giải nén tất cả tệp zip vào một thư mục cha, giữ các thư mục con, gộp các thư mục trùng tên.
  • Chọn một công cụ và biết nó ghi ngày nào: ngày EXIF, ngày của tệp hay cả hai.
  • Chạy công cụ trên một bản sao, xuất ra một thư mục mới.
  • Kiểm tra DateTimeOriginal trên một số ảnh mẫu từ các năm khác nhau, và xem thư mục lỗi.
  • Quyết định sẽ làm gì với các bản sao -edited.
  • Chỉ xóa các tệp JSON và tệp zip sau khi đã kiểm tra và có bản sao lưu thứ hai.

Câu hỏi thường gặp

Vì sao Google Takeout trả về các tệp JSON kèm theo ảnh của tôi?

Google lưu ngày chụp, vị trí, mô tả và thông tin album mà họ biết về từng ảnh trong một tệp .json riêng nằm cạnh ảnh. Bản thân tệp ảnh có thể không chứa những thông tin đó, ví dụ nếu bạn đã đổi ngày trong Google Photos.

Tôi có thể xóa các tệp JSON không?

Chỉ sau khi ngày và địa điểm đã nằm trong ảnh và bạn đã kiểm tra một số ảnh mẫu. Trước đó, tệp JSON là nơi duy nhất lưu ngày và vị trí của ảnh mà Google biết.

Công cụ gộp sửa ngày nào?

Tùy công cụ. Một số ghi ngày vào siêu dữ liệu EXIF của ảnh (DateTimeOriginal), thông tin này đi theo tệp. Số khác chỉ đặt ngày sửa đổi hoặc ngày tạo của tệp, vốn bị một số cách sao chép đặt lại. Hãy đọc README của công cụ trước khi chọn.

Vì sao một số ảnh vẫn sai sau khi gộp?

Thường là do ảnh và tệp JSON của nó nằm ở hai tệp zip khác nhau và chưa bao giờ được đặt lại cạnh nhau, hoặc tệp JSON có tên khác với ảnh. Hãy giải nén tất cả tệp zip vào một thư mục, chạy lại công cụ trên một bản sao mới và xem thư mục lỗi hoặc thư mục thất bại của công cụ.

Tôi có cần giữ các tệp zip gốc không?

Có, cho đến khi thư viện đã gộp được kiểm tra và bạn có thêm một bản sao lưu khác. Một số công cụ di chuyển tệp thay vì sao chép, và các tệp zip là cách duy nhất để bạn làm lại từ đầu.

Nguồn