Whew, what an ordeal. I finally got my Adobe Photoshop CS in the other day, and last night, I created a "Droplet" for batch converting all my raw files from my Canon Digital Rebel. Droplets are a really sweet feature that lets you create a little executable from recorded actions for batch operations. So, I burned through about 2000 images, creating big jpgs suitable for uploading to my newly upgraded Flickr account. It was getting pretty late, so I fired up an uploader an set it to upload my 1GB limit (roughly 900 pictures).
This morning, I checked my account, only to find that none of the metadata had been uploaded. All my images appeared to have been taken on Feb 11, 2005...uh oh. So, I set out to find out what happened. Turns out, Photoshop saves the metadata in it's XMP format within the file. XMP is simply an rdf encoding of the data in an XML payload within the file. It's actually pretty cool, but Flickr doesn't read this data yet. So I set out to "fix" my pictures, since I can't upload anymore until next month and I have lots more to upload.
After looking at lots of libraries and Adobe's XMP SDK, I decided it would be easy enough to pull the data out myself. So, I built a little app using my FlickrApi library I just created that would blast through my uploaded pictures, find the corresponding image on my local pc, pull the xmp data out of the file, and set the "date taken" on the Flickr site. That way, I can at least organize them more easily.
It worked perfectly. It blasted through about 900MB in less than a minute. Look for the pictures as I tag them, annotate them, and change them from private to public. I'll have to see if there's a way to have Photoshop preserve that data next time because I'd really like to have the rest of the metadata available. I'll probably make my XMP parser available as well if anyone's interested. As far as I know, there is not another managed implementation available.