Diffenbach coordinates time lapse photography with Python.

What exactly does it do?

Diffenbach uses PyEphem to generate sunrise and sunset times for any location. It then creates a photo schedule based on those times, and it snaps photos at the scheduled times.

Photos are captured with the gphoto2 command using any camera that supports automated capture by libgphoto2. Webcam support via pygame is coming soon.

The whole thing runs in the foreground in debug mode, or it can be daemonized thanks to the python-lust project.

What else will it do in the future?

  • Composite schedulers: mix and match multiple schedulers
  • Publish to remote systems via SCP/SFTP
  • Publish to S3
  • Publish to OpenPhoto instances
  • Host a built-in Flask webserver to expose files stored locally

So why's it called Diffenbach

I live next to the Lancaster Cemetery in Lancaster, PA. It's a beautiful place, especially when the light hits it just right and the seasons are changing. It's a great candidate for time-lapse photography.

I'm a terrible candidate for taking time-lapse photography, but I'm a decent candidate for writing software that takes time-lapse photography. Rather than fuss and procrastinate over a name, I named the software after the big tombstone right across the street.

While I figure out where to publish the full stream, a small selection of photos are posted in my OpenPhoto instance, and there's a sample video of a full day. We'll also be posting the latest image on our home renovation blog.

Image manipulation with PIL

We're using PIL for photo manipulation.

Although you can install PIL with pip or easy_install, you may have better luck using binary packages provided by your operating system:

  • python-imaging for Debian/Ubuntu

If you go this route, make sure to use the --system-site-packages option when creating your virtual environment.