I have been listing to podcasts for a long time and many years ago I wrote a podcast downloader. Back then I had a media center and I wanted my favorite podcasts to automatically download each night. At that time there wasn’t anything that really did that. Well, there was but they were full management and play back applications. All I wanted was a simple downloader and not seeing any I wrote my own.

I was a bit board over the past few months and I had been wanting to update this app. That one was written in C++ and used Qt 4. It was a headless application and didn’t use any of the GUI components, which always confuses people. People still have trouble understanding that Qt is a set of interrelated libraries. It has a very expansive non-GUI part and you don’t have to use the GUI if you don’t want to. You don’t even have to install the GUI because it’s completely separate. That said, instead of updating it to Qt 5 I decided to start over and rewrite it from scratch.

The result of that rewrite is Poddown. I decided to drop Qt and write this in C to make it more streamlined. Without the Qt libraries it’s much smaller when deployed. I did drop the episode database which ensures episodes aren’t re-downloaded due to bad feeds. But I think I can deal without having that feature.

Dependencies are pretty simple:

  • libcurl
  • libxml2

Most of the code supports Windows but the app itself actually doesn’t. The only thing that precludes Windows is I use strptime for some time parsing. I don’t use Windows nor do I have a Windows machine so I don’t really care that strptime prevents Windows support.

Overall, it was as fun little project. libcurl is really easy to work with and it’s especially easy when used in a threaded environment. libxml2 is a pain but there’s no way around that. It’s hard to make XML intuitive and easy.

9 years from now maybe I’ll rewrite this one too… But for now I’ve scratched my podcast downloader itch.