In 2016 I wrote a blog post with this exact title when moving all of my pictures from Facebook to Google photos. I wrote a hacky little script which met my needs and added exif data from a HTML Facebook data dump back to the images that came along with it.
A few months ago I took another look at the script and made it slightly easier to run, but it still fell short on the usability side of things.
Since then more and more people have and been commenting and messaging me wanting to do exactly the same thing, and so I finally made a more usable version of my little tool.
How to use it?
The latest release of the tool can be downloaded from Github (0.1 as of writing this).
The tool is distributed as a jar file, and you’ll need Java in order to run it, which you can download here.
You’ll also need to download a JSON dump of all of your Facebook data with high resolution images and extract it locally. You can find the instructions here.
Once you have the tool running you’ll find yourself faced with a simple UI with just 2 fields to fill out and 1 button to run the tool over your facebook images.
The first field needs to point to the location of the “photos_and_videos” directory inside your extracted Facebook data dump.
The second field needs to point to a copy of exiftool by Phil Harvey. If you are running the windows bundle version of the tool or already have exif tool installed and in your PATH then this field will already be populated.
Then click Run!
The output is pretty basic and the tool can be pretty slow, but it will step through each album and each file, ending with “Done!!”.
The files will be altered in place but a copy of the original file will be left by its side with the “_original” suffix. If everything seems okay after the tool and finished you can delete the originals and just keep the adjusted files.
Which Exif data is re added?
Currently the tool will add:
- Time taken
- Time modified
- The camera make
- The camera model
- Coordinate data (latitude & longitude)
- ISO Speed
- Focal Length
- F number
There could be other bits of data that I missed when writing the main logic of the script, and if there are any requests they should be fairly trivial to add.