Dominic Cleal's Blog

Wed, 02 Nov 2011 18:03:17 GMT

permalink Creating RSS/podcast feeds from iPlayer radio programmes

Last night, Chris mentioned that he's been wanting to set up an RSS feed for radio programmes available from iPlayer. All the bits were there - the excellent get_iplayer, MP3 converters, RSS and Google Listen for Android.

I also listen to the BBC's Friday Night Comedy podcast on the train, but miss out on the evening shows from Monday to Thursday while I'm travelling. Here's how I set up a private podcast feed.

Pre-requisites:
  1. get_iplayer
  2. flvstreamer to download radio programmes with get_iplayer quickly (don't rely on mplayer).
  3. ffmpeg to convert from AAC, ensure your copy has MP3 support if you need it.
  4. id3v2 for get_iplayer to tag the resulting audio files.
  5. MP3::Podcast to easily generate the RSS feed, plus a small patch. I suggest using cpanm to build your own Perl libs dir like so: cpanm -l ~/pvr/lib MP3::Podcast

get_iplayer has a great PVR mode which stores any set of command line arguments for search keywords, format and output options allowing you to run it in a one-shot mode to fetch all the current programmes. Here's my configuration, explained below:

get_iplayer --pvr-add r4comedy \
    --type=radio --category=comedy --channel="4$" \
    -o ~/downloads/pvr/r4comedy/ --nopurge \
    --aactomp3 --mp3vbr=8 --modes=flashaacstd,flashaaclow --tag-fulltitle
Line 1: add a new PVR entry titled "r4comedy". View and manage PVR entries with --pvr-list, --pvr-del etc.
Line 2: search for radio comedy programmes on Radio 4 (the regex prevents Radio 4 Extra programmes from being returned).
Line 3: output directory, don't delete old ones.
Line 4: convert to MP3, variable bit rate, download in AAC and tag with the name of the show.

A small script on a cronjob runs get_iplayer --pvr and regenerates the RSS feed using genpodcast.pl from the MP3::Podcast examples:

#!/bin/bash
LIBDIR=/path/to/pvr
OUTDIR=/path/to/pvr/downloads
IPLAYER=/path/to/get_iplayer

$IPLAYER --pvr >/dev/null 2>&1

# Delete after 2 weeks
find $OUTDIR -name "*.mp3" -mtime +14 -delete

# Update RSS feeds
perl -I${LIBDIR}/lib/lib/perl5/ $LIBDIR/genpodcast.pl \
    $OUTDIR "http://example.com/pvr" \
    r4comedy "Radio 4 Comedy" > $OUTDIR/r4comedy/index.rss

And lastly the output directory is added to the Apache config so it's accessible:

Alias /pvr /path/to/pvr/downloads
<Directory "/path/to/pvr/downloads">
    DirectoryIndex index.rss
</Directory>
The URL http://example.com/pvr/r4comedy/ can simply be added to your podcast/RSS client.

Archives


Comments for this entry are now closed.