Some of the scripts listed below are currently off-line, pending a massive overhaul due to abuses unforeseen during their development.

## Project summary

This project consists of several hacked together scripts, which generate playlists for various internet radio stations.

It was mainly born because foobar2000 doesn't support retrieving the Shoutcast radio directory, so to fix this, one rainy Sunday afternoon I started writing scripts to generate playlists which can be imported into foobar2000.

If one of the scripts broke, or you have a suggestion feel free to email me about it.

## Changelog

• 2014-03-30: Fixed iTunes.
• 2013-03-02: Fixed 1.FM and added AAC streams to .977 Music.
• 2013-02-27: Added 3 mirrors: replace lab with aws-eu, aws-us or aws-as to use them.
• 2013-02-26: Implemented the hq, codec and regional parameters in the BBC Radio script.
• 2012-12-23: Apple removed their iTunes playlist redirection service, implemented my own.
• 2012-11-10: Initial commit.

## Mirrors

Multiple mirrors are not available for now. If you were using one that was listed here in the past, it most likely isn't working anymore, and you should rename them to one listed above.

## Scripts

### ShoutCast

URL: http://lab.rolisoft.net/playlists/shoutcast.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.
For ShoutCast, this is limited to 40 stations. Use proxy for more.
api legacy/Top500? any ShoutCast API path and parameter When the default value is in effect, the following URL will be processed:
http://api.shoutcast.com/legacy/Top500?&f=xml&k=key
This parameter lets you change the underlined part, so you can generate playlists for various genres, for example. Check out the ShoutCast API documentation for valid values.
(Make sure to ommit &f=json and encode the value, if you're copying the examples.)

### IceCast

URL: http://lab.rolisoft.net/playlists/icecast.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.
For IceCast, this is limited to 40 stations. Use proxy for more.
As of June 2012, the script will download yp.xml and try to find the stream by title in it. However, this file is limited to 1000 unsorted entries, so a lot of streams will not be resolved by this method.
pages 1 1 - 5 IceCast only lists 20 stations per page, which might be a little small for a search. If you want to use resolve, the maximum number of pages is 2 which will result in 40 stations. Otherwise, it's 5 pages which will result in 100 streams. There is no pagination on the front page, so you will need to use the api parameter to browse a genre or use the search.
api null any dir.xiph.org path and parameter Open the IceCast directory in your browser, then search for something or click on a genre.
The resulting URL will be similar to this:
http://dir.xiph.org/by_genre/Top40
This parameter lets you change the underlined part. By default, its value is empty, and it'll scrape the 20 stations on the front page.

### TuneIn

URL: http://lab.rolisoft.net/playlists/tunein.php

#### Required parameters

Key Example values Description
id g71 for smooth jazz Go to TuneIn.com in your browser. Select a category or genre, such as "Local radio" or "Electronic". If the page lists at least one radio station, look at the URL in your browser. It should look something like this:
http://tunein.com/radio/Electronic-c57941/
Note down the underlined part. It's always the last segment in the URL, starts with a C, G, S, M or R and is followed by a number. This is your id and the generated playlist will have the stations listed on this page.

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.
For TuneIn, this is limited to 40 stations. Use proxy for more.

### iTunes

URL: http://lab.rolisoft.net/playlists/itunes.php

#### Required parameters

Key Example values Description
category top 40 Open your iTunes or look at this screenshot of iTunes to see the categories. Specify a regular expression which will match the category title. The first matched category will be used.
For example, if you want to generate a playlist for the streams listed in the "Top 40 / Pop" section, you can either specify top 40 or pop.

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
showcateg false true
false
When set to true, the category hierarchy will be prepended to the title of each stream.
categsepr :  anything When showcateg is set to true, you can specify the character sequence to use for separating the various categories and the stream title.

### FilterMusic

URL: http://lab.rolisoft.net/playlists/filtermusic.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
category null any regex matching category title You can specify a regular expression to filter the categories included in the generated playlist. When this is not specified, all the categories will be included.
Go to FilterMusic.net in your browser, then click on "Categories" to see the list. For example, if you want to generate a playlist for stations under "Hits / Mainstream", then use hits or mainstream. If the parameter matches for multiple categories, all matching will be included. So you can generate for both "Hits / Mainstream" and "House / Dance" by using (hits|house).
showcateg false true
false
When set to true, the category hierarchy will be prepended to the title of each stream.
categsepr :  anything When showcateg is set to true, you can specify the character sequence to use for separating the various categories and the stream title.

URL: http://lab.rolisoft.net/playlists/screamerradio.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
category null any regex matching category title You can specify a regular expression to filter the categories included in the generated playlist. When this is not specified, all the categories will be included.
Go to Screamer-Radio.com in your browser, then inspect the three drop-down menu's (Select Category/Network/Country) contents. A regular expression matching a parent category will automatically include any sub-category.
showcateg false true
false
When set to true, the category hierarchy will be prepended to the title of each stream.
categsepr :  anything When showcateg is set to true, you can specify the character sequence to use for separating the various categories and the stream title.

### Digitally Imported / Sky.FM / JazzRadio.com

URL: http://lab.rolisoft.net/playlists/difm.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
key null your listen key When this parameter is specified, 256 Kb/s premium playlist will be generated with your listen key included in the URLs. aac, proxy and resolve are ignored when this is specified, since the premium IP addresses will be used.
aac false true
false
Free: When set to true, the 40 Kb/s HE-AAC streams will be used instead of the 96 Kb/s MP3. This option will have an impact only on Digitally Imported streams; Sky.FM and JazzRadio.com don't have free AAC streams.
Premium: When set to true, the 128 Kb/s HE-AAC streams will be used instead of the 256 Kb/s MP3.
exclude null di
sky
jr
A comma-separated list of sites to exclude from the generated playlist. For example, if you only want Digitally Imported streams, set this parameter to sky,jr.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.

### SomaFM

URL: http://lab.rolisoft.net/playlists/somafm.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.

### .977 Music

URL: http://lab.rolisoft.net/playlists/977music.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
aac false true
false
When set to true, the 64 Kb/s HE-AAC streams will be used instead of the 128 Kb/s MP3 streams.

URL: http://lab.rolisoft.net/playlists/addictedtoradio.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.
Because AddictedToRadio uses Radio Loyalty, proxy is on by default and can't be turned off.

### 181.FM

URL: http://lab.rolisoft.net/playlists/181fm.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.

### 1.FM

URL: http://lab.rolisoft.net/playlists/1fm.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.
Because 1.FM uses Radio Loyalty, proxy is on by default and can't be turned off.

URL: http://lab.rolisoft.net/playlists/accuradio.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.

URL: http://lab.rolisoft.net/playlists/bbcradio.php

#### Optional parameters

Key Default value Valid values Description
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.
proxy false true
false
When set to true, generates an URL, which when accessed, downloads the playlist and redirects the client to the first stream URL. Useful when your player doesn't support playlists linking to playlists, such as foobar2000.
resolve false true
false
When set to true, instead of linking to the playlist, downloads it and links to the first stream. This is similar to proxy, except it'll download the playlist at generation and your player won't have to deal with redirection.
BBC Radio streams contain an expiring token, therefore it's pointless to resolve all the streams because they're going to expire anyways in a few minutes. Use proxy instead, which will always provide a fresh stream.
hq false true
false
When set to true and codec is left on aac, the playlist will be downloaded through a UK proxy and you will get the 128-320 Kb/s LC-AAC streams instead of the 56 Kb/s LC-AAC streams BBC offers for non-UK users. Can be used with both proxy and resolve. On average it adds 500 milliseconds to the resolution time of each stream, except if a proxy goes defunct, in which case you'll have to wait out the 6 second timeout period. If most or all proxies seem to be down or you can offer a better alternative, contact me. Please consider listening to the 56 Kb/s HE-AACv2 streams which sound like the 128 Kb/s LC-AAC, but are available to international users.
codec aac aac
heaac
wma
-> 56 Kb/s LC-AAC without hq and 128-320 Kb/s LC-AAC with hq
-> 56 Kb/s HE-AACv2 regardless of hq
-> 48 Kb/s WMA regardless of hq
regional false true
false
When set to true, 46 regional BBC streams will be included. These are only available in 48 Kb/s WMA, regardless of codec and hq.

URL: http://lab.rolisoft.net/playlists/nrj.php

#### Optional parameters

Key Default value Valid values Description
aac false true
false
When set to true, the 64 Kb/s AAC streams will be used instead of the 128 Kb/s MP3.
format pls pls
m3u
asx
xspf
Specifies the type of playlist to generate. Unless you're having trouble with PLS files, there's no reason to change this. However, Windows Media Player doesn't support PLS.

## Tools

### Standalone Playlist Proxy

Downloads the specified playlist and redirects to the first stream listed in it. Supported formats are: pls, m3u, asx and xspf.

URL: http://lab.rolisoft.net/playlists/redirect.php

#### Required parameters

Key Example values Description
url http://dir.xiph.org/listen/2019372/listen.xspf The playlist to download and parse. The format will be auto-detected from the content type or extension.

#### Optional parameters

Key Default value Valid values Description
referer hostname of the url any url Useful when the specified url has a hotlink protection and the playlist is not served from a whitelisted domain.

Sends a RadioLoyalty.getStationConfig() call to the amfPHP installation on RadioLoyalty's server and redirects to the streamURL from the response.

URL: http://lab.rolisoft.net/playlists/radioloyalty.php

#### Required parameters

Key Example values Description
ch 3753 The ID of the channel on RadioLoyalty. Can be extracted from the URL of a RadioLoyalty pop-up player:
http://player.radioloyalty.com/Universal/stationPreview.php?stationID=3753