Covering the space of open source projects and initiatives

README: Podcast

So for the past couple weeks, I have been working on a podcasting platform app in Go (one of the programming languages by Google) that can automatically generate a podcast RSS feed based on a flat-file directory structure.

Basically how it works is by using specially formatted episode names to parse out info for the episode, and pull info for the description from the file corresponding to it. It’s very basic but I wanted to avoid more “complex” deployment requirements like an RDBMS or the like. Using a format like this means human-readable file names for downloads, which are very likely to occur for a podcast listener. For the time being, shownotes are plain Markdown files, unparsed (for now), however while writing this I am contemplating moving them to JSON or HTML (whichever is easier to embed in an RSS feed item).

When a file is changed, the fsnotify/fsnotify package triggers an event that regenerates two files - feed.rss and feed.json. It may seem odd that I am generating two file of essentially the same data, however it’s for a reason I feel comfortable with - JSON parsing is much easier for JavaScript-based development (and many other languages), whereas XML parsing may be a bit more rare.

The RSS generated does work fine, and I tested it using the Podcast Addict Android app (I usually use Pocket Casts however PA is much easier to test with). The W3 Feed Validation Service does complain a bit (mostly about URLs not matching), but it does work.

Now the more difficult part - implementing the special iTunes tags to make podcasts more discoverable on platforms. I am opting for iTunes tags over Google Play tags for the simple fact of I’m not sure if iTunes likes <googleplay:*> tags, but I do know for a fact Google is fine with parsing Apple’s tags.

This implementation is taking the form of a fork of the gorilla/feeds. This library is mostly aimed for traditional blog-based RSS feeds, without the fancy iTunes tags (or even working tags as I discovered). Since I have completed the core functionality of the actual feed generation, that has become my primary focus.

That said, I am planning on deploying the base application to the server soon so that you guys can see a working version of the app, and also so I can start playing around with actual audio podcasts!

Of course the entire development of the app is open source, and you can follow along and try it out yourself here: gmemstr/whiterabbit. You’ll need to go get a couple requirements, otherwise it’s fairly straightforward.

README is a short informative post aimed to inform readers about changes and progress behind the scenes.