Django Podcasting

Audio podcasting functionality for django sites.

The source code for Django Podcasting can be found and contributed to on django-podcasting. There you can also file tickets.

History

Django Podcasting started off as a heavily stripped down version of the wonderful django-podcast. Eventually this app grew enough differences to be useful to others as a reusable applciation outside of my sandbox. I hope it inspires you to share your sounds with the rest of the world, whatever they may be.

This application can seen running on:

Differences

At the time I had no interset in the Video podcasting features of django-podcast and video introduces a lot of extra complexity into the application, considering I was first studying compliance with the various specs and the syndication feed framework.

This application also differs from django-podcast in that it uses UUID identifiers, support multiple authors,makes use of Django’s sites framework and syndication feed framework. Podcasting only supports Django 1.3 or greater due to its choice in class-based views, though writing additional views and urls to work with 1.2 would be a trivial task. There are also other less significant diffences which may or may not be of relavance to your project.

Nomenclature

An individual podcast is a show.

A show has many episodes 001, 002, etc.

An episode has one or many enclosures formats for example .flac, .wav or .mp3.

Requirements

django-podcasting requires django-autoslug which is included in the setup.py.

Features

Feeds
Supports Atom, RSS 2.0, iTunes, and FeedBurner by attempting to match as best as possible their detailed specifications and additionally utilizing Django’s syndication feed framework.
Multi-site
Supports Django’s sites framework allowing for great flexibility in the relationships between shows and sites in a multi-site application.

Licensing

To publish a podcast to iTunes it is required to set a license. It is suggested to install django-licenses which provides a light weight mechanism for adding licenses to the shows.
Serve your media from anywhere
Podcasting assumes nothing about where your media file will be stored, simply save any valid url to an enclosure object.
Multiple enclosure types
Want to offer versions in .ogg, .flac, and .mp3? It’s possible.
UUID
Podcasting uses a UUID field for show and episode uniqueness rather than relying on the url.
Bundled Forms and Templates
Podcasting comes with some example forms to get you started with for allowing site users ability to manage a show. Generic templates are also bundled to get you started.
Comments

To add commenting to you app, you must use a separate Django application. One of the simplest options is django-disqus, but you should also look into django-threadedcomments and Django’s built in comments framework.

There is an field on both the Show and Episode models to enable commenting. The default is to enable commenting. To completely disable comments for all of an individual show’s episodes, set enable_comments field on the Show model to False. To disable comments on an individual episode, set enable_comments on the Show model to True and enable_comments on the Episode model to False.

Draft Mode

You may work on the new episode in and publish it when ready, simply by checking publish in the Admin. While in draft mode the episode’s get_absolute_url returns a link comprised of the show_slug and the episode’s uuid but once live, it uses the show slug, friendlier publish date and episode slug.

Optional Features

The following features are expected to work with the most recent versions of the following libraries, if you find an issue please report it on github.

Thumbnailed Album Artwork Install django-imagekit,
easy-thumbnails or sorl-thumbnails_ in your project to get sane defaults and model support for album artwork thumbnails. Either may be is added to your project at point any time and the django-podcasting app will recognize and use it. It is highly advised to use a thumbnailing app because thumbnailing podcast artwork for iTunes is nontrivial. Support for other thumbnail libraries will be considered for inclusion.
Taggable episodes and shows
Install django-taggit to provide tagging support for episodes and shows. Taggit may be is added to your project at point any time and the django-podcasting app will recognize and support it. Taggit may become a requirement in 1.0 if there are no strong objections.
Share to Twitter
Django Pocasting can optionally provide the ability to announce new episodes on twitter. Install python-twitter to get started.
Embeddable Media
Want to display Youtube, Vimeo or Soundcloud content on Episode detail pages? Django Pocasting provides the ability to link to external embeddable media via the podcasting.models.EmbedMedia class. Optionally install django-embed-video for easy embedding of YouTube and Vimeo videos and music from SoundCloud.

Usage

There has yet to be a need to configure anything via the settings.py file and the included templates and forms should be enough to get started. One area that may be somewhat difficult is connecting with a commenting application. For the simplest option, take a look at django-disqus.

Future

For the 0.9.x series I’d like to first see if others have interest in this application and fix any issues discovered with the current version.

If there is desire, video support after a 1.0 (audio only) version has been released is possible.