Some Internet Radios are not their listener’s friend.
In the case of jamfm.de, the radio is not your friend on so many levels. visit their webstream selector at http://www.jamfm.de/cms/streams-playlist/stream-playlist/stream-playlist.html and you get a choice between MP3 or WMA streaming. Nothing exeptional, you’d think. But no. Instead of a pristine mms://, .asx or .pls all you get is a bloatware html/flash page with no apparent controls. Flash-Ads before playback. POPUPS! URGH! No me gusta. No gusta my iTunes, either.
Ok, let’s dig a bit deeper, maybe there is some way to get to the stream. Peeking inside the HTML of the page(s) http://184.108.40.206/freestream/download/jamfm/frameset_mp3.html and http://220.127.116.11/freestream/download/jamfm/frameset.html (mp3 and wma, respectively) we find a clue that the answer to the question at hand my lie somewhere close.
I’ll now proceed separately, first detailing the results for the mp3 stream and then for the WMA stream.
Ok, the http://18.104.22.168/freestream/download/jamfm/frameset_mp3.html wants us to go to http://22.214.171.124/freestream/download/jamfm/forwarder_mp3.html which redirects to http://126.96.36.199/sltokens/flashplayer/stream-mp3-player.php?stream=jamfm/livestream.mp3 which is a really small flash player. Much improvement, but still we’d need a flash-capable browser to listen to the stream (hello iPhone, waving at you). So, the flash applet does accesses this file: http://188.8.131.52:80/jamfm/livestream.mp3?token=e5d5816ce89fe048baa280725383bfb9. Not good. Not good at all. Dynamically generated token. When inserting this URI into VLC or iTunes, you get the stream, BUT. Once you stop the stream and then try to restart it, you get a password request for “Icecast2 Server on 184.108.40.206”. Same thing when opening the URI inside Firefox. So everytime you want to access the mp3 stream, you need to go to the flash player (and here to you’ll be asked a password sometimes, just reload it and it will work), get the MP3 file with token and insert it into itunes. Not really practical, as you may agree. There are two options here: 1) finding out the password asked or 2) writing a script that somehow gets a correct token from the flash player page and writes a pls with the correct mp3 or, even better, a script that relays the stream so that e.g. iTunes can accept the URL right away. Both options go beyond the scope of this article at the moment.
http://220.127.116.11/freestream/download/jamfm/frameset.html sends us to http://18.104.22.168/freestream/download/jamfm/forwarder.html like the mp3 does. This forwarder.html sends us to http://22.214.171.124/sltokens/stream-radio-player.php?stream=jamfm/livestream.wma. The Activity tabs of Safari does not help here, so off we go to firefox. Going to “Media” in the “Show page info” (get to url, you’ll hear the music start or a small controller (much like the mp3, at the end)) and we get this URL called by the stream-radio-player.php: http://lsd.newmedia.tiscali-business.com/bb/redirect.lsc?adid=0&stream=jamfm/livestream.wma&content=live&media=ms&token=e665919ce58c3422a2f953a4f18040fbs
Saving the redirect.lsc file and looking at it with a text editor, we get something which (result!!) yields the WMA stream. It is: mms://126.96.36.199/jamfm$livestream.wma?token=665919ce58c3422a2f953a4f18040fbs. Not better than mp3. Same caveats apply. Damn token. Inserting this URL into VLC only results in a 401 Access denied. Here too, there are only two options: break the password or get the token from somewhere and add it dynamically.
This is not over.
Add the xxx to http://188.8.131.52:80/jamfm/livestream.mp3?token=xxx and you’re ready to go. I guess i’ll learn PHP tonight.