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 _SHOWNOTES.md 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.