Blog of Erwyn van der Meer

Project Description

FlickrMetadataSynchr is a tool that allows you to synchronize metadata added to images stored on Flickr with the original versions of those images stored locally on your hard drive. If you don't have the original version on your hard drive, the application can download the missing pictures for you. The app can sync the metadata two-way on a picture-by-picture and metadata field-by-field basis.
Relevant metadata on Flickr is:
  • Title
  • Description
  • Tags
  • Author
  • GPS location info
  • Date and time at which the image was taken
  • Last updated date and time
The synchronization is done two-way. The embedded metadata in XMP, EXIF and IPTC sections in locally stored images can be updated with the metadata of matching pictures on Flickr. And vice versa. See also my blog entry with some background info on the metadata problem.

This is a screenshot of the latest version of the app:
FlickrMetadataSynchr-v1.8.0.0.png

Status

The project is currently at version 1.8.0.0. The application runs on both 32 and 64-bit versions of Windows 7, 8 and 8.1. It requires the Microsoft .NET Framework 4 or higher to be installed, which will automatically be the case on Windows 7 or higher.

Download the latest release here. Source code can be found here.

How-to-install the app

  • Make sure you have the .NET Framework 4 or higher installed.
  • Download the ZIP file with the application.
  • Unzip it to a folder.
  • Run the FlickrMetadataSynchr.exe executable.

How-to-use

  • If you run the application for the first time on a computer, you first have to authorize the application to access your Flickr pictures on your behalf. Click the "Authorize application button" to start the authorization process. Follow the on-screen instructions.
  • After you have authorized the application or have run the application before, you can connect to Flickr to fetch a list of all your photosets. The application automatically tries to connect when it starts. If this fails, for example when your Internet connection is down or if a firewall is blocking the program, you can try to connect again by using the "Connect to Flickr" button.
  • When you have successfully connected to Flickr, the application shows your name and Flickr avatar. You can select a photoset that you want to sync from the drop down list. You need to have at least one photoset on Flickr to be able to use the application.
  • After you have selected a Flickr photoset, you can select a folder on a local drive by using the "Browse for local folder" button.
  • If you like, you can change the synchronization settings. You can choose if subfolders of the local folder should be included and if pictures that are missing in the local folder should be downloaded from Flickr.
  • If you are happy with what you have selected, hit the "Sync" button and the synchronization process will start. This process is fully automatic. The app will show you what it is doing in the status area. The status area is the gray area at the bottom of the window. If anything goes wrong during the synchronization, the sync process will stop and the application will show you an error message in the status area.
  • The synchronization process can be cancelled at any time by hitting the "Cancel Sync" button.
  • If you want to see more detail about what is going on, select the "Show activity log window" option. This will open another window which shows you a log of all activity.

The application performs the following steps during the synchronization process:
  • Download metadata from Flickr pictures in the selected Flickr set.
  • Extract metadata from JPEG images in the selected local folder.
  • Match pictures into pairs based on Flickr id, date and time taken and/or title and filename.
  • Merge the metadata two-way (see details below).
  • Optionally download pictures from the selected Flickr set that do not have a matching picture in the local folder for users with a Flickr Pro account.

The metadata is merged from both sides. Apart from tags, if both sides contain data for a metadata field, the most recently updated side wins for that field. For tag synchronization, you can choose what behavior you want: combine tags (i.e., do not delete tags, just add them), most recently updated side wins (to enable deletion of tags) or leave tags alone. Finally the metadata for the Flickr picture, the local picture or both are updated if the synchronization procedure has determined they should be updated.

The application will embed the Flickr id of a matching picture as ImageUniqueID in the XMP and EXIF metadata of a local picture. This makes it possible to match pictures during future sync operations even if the date time taken and/or the title and filename of the picture have changed or are not unique. Usually upload tools set the title on Flickr equal to the filename. If that is the case, it is recommended to run a sync operation immediately after upload, before any metadata changes, because then the pictures can still be matched based on title/filename.

The application saves and remembers your Flickr account, the local folder, the selected Flickr set and the synchronization options when you restart the application. If you want the app to forget your Flickr account, e.g., when you want to log into another Flickr account or you are using a shared computer, use the "Forget Me" button.

The application has a simulation mode in which no real updates take place. Use this mode first, if you are not sure if the automatic synchronization will do the right thing.

The status area shows very limited information during the synchronization process. Full information about what the app is doing and detailed error information if something goes wrong is written to the so called Windows debug output. There are multiple options for viewing this information. It is written to a file called SyncActivity.log in the application directory, it can be viewed in a separate window, and finally it is viewable with the DebugView tool). This is helpful if you want to check the proposed changes in simulation mode before actually applying them.

Download of non-JPEG pictures like PNGs and GIFs is supported, but synching metadata only works for JPEG pictures.

How-to-remove the app

  • Click the "Forget Me" button in the running application if you are concerned about leaving behind data about your Flickr account.
  • Just delete the folder that contains the application.

Possible future enhancements

  • Show the user the match that was made by the application to give the user the opportunity to review for any matching errors.
  • Let the user deselect matched image pairs that he or she does not want to process.
  • Let the user be able to overrule the metadata merge on a picture-by-picture and field-by-field basis.

Reuse or contributions

Dependencies

  • Flickr account. For downloading pictures you need a Flickr Pro account.
  • Windows 7, Windows 8 or Windows 8.1 or Windows Server 2008 R2, 2012/2012 R2
  • .NET Framework 4 or higher
  • FlickrNet as the API to access Flickr (http://www.codeplex.com/FlickrNet).

Development tools

  • Visual Studio 2013 Professional, Premium or Ultimate

Last edited Jun 1 at 6:13 PM by Erwyn, version 57