and Singleshot

I moved my photo site back to a machine I control directly. It’s probably not going to stay there, but it does free me from debugging everything twice when I want to add features.

Since the last Singleshot release I’ve fixed a bunch of bugs in IPTC parsing (and added a fallback to use XMP if IPTC is not there and XMP is). I’ve also greatly enhanced the robustness of my tests for the IPTC reading code with a script that automatically compares the output of Singleshot’s reader to a couple of other parsers (exiv2, PIL) and alerts me when they differ. As usual the reality of what shows up in files (even just ones I have) seems to differ from the cold, formal world of a spec.

I’ve also added a couple a feature of dubious merit: for runs of photos tagged with an event:foo keyword, Singleshot’s RSS feed and front page treats them as a single post with a link to an album /album/events/foo. I did it so I could post lots of photos for a party without having them all show up individually in the RSS feed — it really didn’t make sense to have that. I may still have to refine how it works, though. I’m not thrilled with the magic dependence on an Album, but I wanted it for this because I wanted to link to a page with some description of the event.

I’ve also added some pretty experimental support to allow commenting on individual photos. It pretty gratutiously uses AJAX-y refreshing because I wanted to play with that. It appears to work in all the modern browses I have access to (Firefox, IE 6). If you disable JavaScript, then the comments and the UI for submitting them just don’t appear.

On the back-end, it stores all the comments in a SQLite “database” — mostly preserving the ‘file system is the true source of information’ property of Singleshot.