Move tagged photos from Facebook to Google Photos with correct Date & Timestamps

The built-in Facebook “Data Transfer” service doesn’t include Tagged Photos. This sucks. As a workaround, you can use the following tools to migrate your photos with correct date/time stamps.

These instructions are Windows only, though I don’t see why similar tools wouldn’t work for other platforms:

  1. Download the Tagged Photo Exported for Facebook Chrome extension
  2. Run the extension as per the instructions, while you’re logged into Facebook.
  3. When you get to step 7, download the CSV metadata provided by the plugin. This contains the names of the files & the correct timestamps — put this into the album_files directory you saved earlier.
  4. Run the following one-liner in PowerShell while in your album_files directory. This will transfer the Timestamp into the Photo filedata:
    Import-Csv exif.csv | ForEach-Object { $(Get-Item $_.Filename).LastWriteTime = [datetime]::ParseExact($_.Timestamp,'yyyy-MM-ddTHH:mm:ss.000Z',$null) }
  5. Finally, download and run jhead to create the EXIF data in the photos based on the file date/time.
    .\jhead.exe -mkexif *.jpg
  6. Leave the developer a 5 star review :)

If you need any assistance with the instruction above, please comment. I’ll aim to keep them updated, though they may be moved into the plugin at some stage.

Comments

3 Responses

  1. could you explain a bit more on how to run that jhead command?
    After I downloaded the jhead application, when I click on the .exe, there just show nothing on my windows 10….

    1. jhead can only be run through the command prompt, it doesn’t have a GUI. copy jhead.exe into album_files, which should already have the csv in it. then in command prompt, first type “cd ” to change your directory to album_files, THEN enter the “.\jhead.exe -mkexif *.jpg” from above to create the exif data

  2. Hey there – having a bunch of trouble with this with the following errors poppin up:

    Import-Csv : Could not find file ‘C:\Users\sianb\exif.csv’.
    At line:1 char:1
    + Import-Csv exif.csv | ForEach-Object { $(Get-Item $_.Filename).LastWr …
    + ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : OpenError: (:) [Import-Csv], FileNotFoundException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ImportCsvCommand

    if I put the exif.csv in the C drive where the code wants it to be i get these errors for every photo:

    Get-Item : Cannot find path ‘C:\Users\sianb\37475_410943203142_714710_n.jpg’ because it does not exist.
    At line:1 char:42
    + Import-Csv exif.csv | ForEach-Object { $(Get-Item $_.Filename).LastWr …
    + ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (C:\Users\sianb\…42_714710_n.jpg:String) [Get-Item], ItemNotFoundExcep
    tion
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand

    The property ‘LastWriteTime’ cannot be found on this object. Verify that the property exists and can be set.
    At line:1 char:42
    + Import-Csv exif.csv | ForEach-Object { $(Get-Item $_.Filename).LastWr …
    + ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound

    Anyone able to help?

Leave a Reply

Your email address will not be published.