ente-io / ente

Fully open source, End to End Encrypted alternative to Google Photos and Apple Photos
https://ente.io
GNU Affero General Public License v3.0
16.19k stars 835 forks source link

wrong photo metadata after upload #3087

Open andrewbanchich opened 2 months ago

andrewbanchich commented 2 months ago

Description

I finished uploading my Google Takeout and noticed some odd things.

  1. I see a few photos uploaded with wrong dates. One of them says the date it was uploaded was Sun, Sept 1, 2024 (today), which is totally wrong. I didn't upload any today.
  2. The created date is also wrong - it says Thu, August 29, 2024. The date the Google Photos app shows is Tue, December 17, 2013. Looking in the Google Takeout JSON metadata also shows the date being 2013.
  3. Another issue I noticed is Google Photos and my Google Takeout files have an album called Wallpapers. I had created an album called Wallpapers in Ente manually. The photos from Takeout's Wallpapers are not in the manually-created Ente Wallpapers album.
  4. Some other photos show Mon, Dec 31 1979 as the date, while Google Photos says Aug 23, 2018.

I've only noticed this with five of the ~20K photos I uploaded.

Version

1.7.3

What product are you using?

Ente Photos

What platform are you using?

Desktop - Linux

ThakurAnkitSingh commented 2 months ago

Hi @andrewbanchich, Could you please tell me how to generate this problem again step by step with video(optional) and what you are using?

andrewbanchich commented 2 months ago

I took a look at one of the photos which was wrong, and noticed that when I upload the photo directly (instead of using Google Takeout import) it goes into the same date that it did with Google Takeout. Looking at the EXIF data, the only dates included are:

File Modification Date/Time     : 2024:08:29 12:45:49-04:00
File Access Date/Time           : 2024:09:08 14:31:01-04:00
File Inode Change Date/Time     : 2024:08:30 14:10:26-04:00

the first (modification) being August 29, which is what Ente is showing. That makes sense since Google Takeout removes the metadata, so Ente wouldn't have access to the real creation date data:

"creationTime": {
    "timestamp": "1392162250",
    "formatted": "Feb 11, 2014, 11:44:10 PM UTC"
  },
  "photoTakenTime": {
    "timestamp": "1387318885",
    "formatted": "Dec 17, 2013, 10:21:25 PM UTC"
  }

But the initial issue was from a Google Takeout import, which shouldn't have used the modification date over the EXIF data.

I tried deleting this photo, then clicking Upload -> Google Takeout -> Select folder and selecting just the album folder of the unzipped Takeout files to see if it would do the same thing, and it did - the photo appeared under August 29, 2024, 12:46 PM.

I thought maybe the metadata for this photo is different from one with correct dates, so I compared the incorrect metadata files with correct ones, and noticed that although the contents are the same, the names of the incorrect ones were missing the photo's file extension.

E.g. the takeout directory includes

foo.jpg foo.json // produces incorrect metadata
bar.jpg bar.jpg.json // produces correct metadata

The same pattern (missing the .jpg) is true for all the incorrect photo data I see, so I'm assuming the code can't find the metadata file due to the missing file extension and ends up falling back on the file metadata.

Maybe for Ente, if the user selected Google Takeout for the upload it could either fail the upload if it can't find the metadata file instead of silently falling back, or (even better) have some UI prompt at the end asking if we want to manually select a metadata file / use the one it finds without the extension?