Code to scrape stream information from the BBC web site
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This was fun while it lasted and it generated a lot of attention (not least, from the BBC itself!)

But all things must pass. And with the arrival of the Radio iPlayer the BBC have retired all of the audio streams which this program relied on.

Therefore this program no longer does anything useful and is only left here for historical interest.


get_streams is a program that parses the BBC radio web site looking for Real Audio streams of program content. The streams found are then written to a YAML (see file for later processing.

The distribution also includes a sample file which can be used to generate a web page from the YAML data.

The intention is for people to be able to sidestep the BBC's complex navigation and open the streams directly in RealPlayer.

The URLs of the stream may also be of use to people using something like Ben Hammersley's RadioPod application (see

If you don't want to go to all the hassle of installing and running the program yourself, then the output will be online at


get_streams is a Perl program, so you'll need Perl installed. A recent version (at least 5.6.x) is recommended.

You'll also need the following extra Perl modules from CPAN (

  • LWP::Simple
  • HTML::TreeBuilder
  • URI
  • YAML

The file is a Template Toolkit. To use it you'll need to install the Template Toolkit from either CPAN or You will also need the Template::Plugin::YAML module.


To run get_streams, simply run it from the command line

$ ./get_streams

There is one optional parameter which is the name of the YAML file to store the date in.

$ ./get_streams streams.yaml

If no YAML filename is given then 'streams.yaml' is used.

To use to create a web page, you can use the 'tpage' program which is installed as part of the Template Toolkit.

$ tpage > index.html

To read the YAML data from a different file, use the --define option.

$ tpage --define yaml_file=another.yaml > index.html


Yes, it's not perfect yet. This is probably because of some flaky HTML on the BBC pages and not because of problems with my coding ability :)

I'm working on ironing out the glitches.

Latest Version

The latest version will always be available from


Copyright 2004, Dave Cross, All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Dave Cross

I like to hear about people using my software.