It’s one of the worst-kept tech secrets in the world, but Real Audio streams can be downloaded using software such as mplayer
and then converted to MP3 format with lame
. Both of these are available in Ubuntu using the non-Ubuntu package manager Automatix. The possibility of doing this conversion implies that, although the BBC offer all their programs in Real Audio and only a few as podcasts, you can in principle put any you like on your portable music device.
Similar solutions abound on the web: Tom Taylor has a method involving mencoder
; other methods can be found all over the place. However, these all involve a bit of ad hoc command-line intervention, or scripts which aren’t terribly configurable. There are GUI and proprietary commands, but they tend not to offer great support for command-line and therefore scheduled operation.
I’ve knocked together a Python application called rmrip
: it’s available in a tar file from http://www.jpstacey.info/blog/files/code/rmrip.tgz. If you unzip this to a directory you’ll find a number of .py
files and a config.conf
configuration file. Edit config.conf
to match your system requirements and stream preferences, make sure rmrip.py
is executable, then run it. mp3s should eventually appear in a subdirectory called YYYYMMDD unless you configure the system otherwise.
The application can in principle be run from a cronjob, so it could tick over late at night when everyone’s internet is otherwise nice and quiet. In addition, conversion works via a named pipe, which is a funky way of piping the intermediary, enormous .wav
audio file straight into lame
, rather than saving it to disk. This does unfortunately restrict the application to non-Windows machines, but it’s a great help for audiophiles with limited disk space: .ra
and .mp3
files can be in the hundreds of megabytes for many-hour programmes, but the associated .wav
would take up gigabytes.
Current requirements include (please give any feedback on this!):
mplayer
andlame
: their locations are configurable- The
subprocess
module in Python
Current file types supported:
- Direct rtsp://….ra Real Audio stream links
- http://….ram references to Real Audio streams
- http://….rpm Real Audio playlists (BBC so far only format tested)
To get you started, dave.org.uk has provided information on how to get stream information using a standalone Python program, and also has potentially out-of-date static pages detailing the current BBC streams.
Comments
Tom Taylor (not verified)
Wed, 06/12/2006 - 22:11
Permalink
Very cool, I've been getting
Very cool, I've been getting into Python a bit recently - I'll check this out.
Matt (not verified)
Fri, 26/01/2007 - 20:42
Permalink
This is lovely. Is it
This is lovely. Is it possible to pass the configuration file as an argument? I'd really like to cron this every few days with a different list of jobs.
Python isn't my bag so if I start to hack it then either,
i) It'll get badly munged
ii) It'll get re-written in PHP
Maybe I'll try i) and find out if it already does this already..
Matt.
jps (not verified)
Mon, 29/01/2007 - 19:53
Permalink
Hi, thanks very much for the
Hi,
thanks very much for the feedback. I think I was holding off putting any command-line arguments in place as once you do that it's hard to change your mind at a later date if anyone's actually using it by then.
That does seem a reasonable addition to the functionality, though, so I'll look into it when I have my old, cranky development machine up and running.
In the mean time, if you edit
rmrip.py
and change:to:
then that should override the default value.
Matt (not verified)
Thu, 08/02/2007 - 16:32
Permalink
What I actually did was in
What I actually did was in the crontab CD into a directory with that particular day's config.conf and then run rmrip from the directory that was put in. e.g.
0 2 * * 2 cd $HOME/rmrip/tuesday; $HOME/rmrip/rmrip.py
0 2 * * 3 cd $HOME/rmrip/wednesday; $HOME/rmrip/rmrip.py
Though I think
0 2 * * 2 $HOME/rmrip/rmrip.py tuesday.conf
0 2 * * 3 $HOME/rmrip/wednesday wednesday.conf
would be neater. So I'll have to read a python manual and work out how to get argv[1] and pass that into config.load_config
Play It Again |... (not verified)
Tue, 17/04/2007 - 08:57
Permalink
[...] Seb James dropped me an
[...] Seb James dropped me an email to say that’s he’d enhanced my BBC Radio recording script and added Ogg Vorbis encoding as well as cleverer file handling. He’s named it ‘listenagain’, and I’ve included the full script below. This follows JP Stacey’s Python wrapper, using rmrip, which skips the intermediate wav file and allows the use of a configuration file. [...]