Originally posted by engineering
I have a draught 'Reverse Engineered' explanation of the protocol, it was worked out by sniffing packets at the client, and server.
I will not post it, until you tell me what you propose to do with this information. If it is acceptable I may, providing nobody objects.
P.S - I am only cautious as I, like many others would not like this information to be abused.
damm i can't belive someone would just tell you, as if it's a secret. blaa!
my best advice is to look a dump of whats going on, get a sniffer. it's REALLY obvious, the only thing that isn't is the meta-data (title streaming), thats a little weird. also check out the source for some programs that know how to read it. freeamp, xmms come to mind. icecast/shout had a program called listen that did that, and my own self plug, streamripper (*link removed) also does this.
anyway, here's the skinny.
1: connect to the stream you want
2: send GET /path, usully it's just GET /
3: you'll get back a HTTP header with a bunch of "ICY" tags, these are completly self descriptive, such as "icy-name: Monkey Radio", and "icy-bitrate: 128". this is followed by 2 CRLF's, then it's strait MP3. feed it into your decoder and blast out the PCM data to your speakers and your good to go.
the meta data is set as "icy-metaint: 8192", 8192 would be the "interval" between meta data, or title info, look at a dump of whats going on and you'll see, also an early version of streamripper (like 6.5) has a pretty clean decoding of it, (it's only about 600 lines of code). you might want to check that out.