Saturday, December 5, 2009


My girlfriend and I use SmugMug for all of our pictures. It's actually been amazingly helpful for organizing and storing all of our photos, let's us easily show our photos to everyone else, and is pretty cheap.

However, when we first started using it there weren't a lot of great clients for uploading pictures from Linux. There are a few command-line clients, but I found that they weren't greatly documented, and I didn't like the way they were written. In particular, they were written in Python (which is great!), but they did not use an object-oriented API. Because of this, they didn't feel very natural, and seemed hard to extend.

So I decided to implement my own little library for accessing the SmugMug API's: SmugAPI. It implements a very object-oriented Python class, with the ability to manipulate albums, images, categories, and sub-categories. It also comes with a command-line client for uploading files, smugtool. All of this is fairly well documented, and I even include unittests. Finally, all of the code is under the GPLv2.

SmugAPI is available in GitHub. Let me know what you think, and if you have feature requests, bugs, or other problems, please let me know about it!