(Multimedia) Stream Ripper (mal zum Testen)
hotti
- perl
0 hotti
hi,
eine kleine Bitte hab ich, untenstehendes Script schneidet einen Stream mit, mein Player spielt die Datei einwandfrei ab, kann das mal jemand mit einem beliebigen Player testen?
#!/usr/bin/perl
###########################################################################
# VARs
my $host = '88.191.90.189';
my $port = 8083;
###########################################################################
use strict;
use IO::Socket;
$| = 1;
# socket handle erstellen
my $socket = new IO::Socket::INET (
PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp'
);
print $socket "GET / HTTP/1.0\n\n";
open(OUT, ">test.mpeg");
binmode OUT;
while(my $s = read($socket, my $buffer, 1024)){
print OUT $buffer;
}
close OUT;
Evntl. muss die Dateierweiterung angepasst werden.
Danke und viele Grüße,
Hotti ;-)
hi,
also, ich hoffe, dass ich meine Begeisterung fürs InternetRadio hier ein bischen teilen kann ;-)
Nachdem die Zeile
print $socket "GET / HTTP/1.0\n\n";
in das Socket geschrieben wurde kommt der Header, der sieht so aus:
ICY 200 OK
icy-notice1:<BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR>
icy-notice2:SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-name:DIVA FUNK - FUNK MUSIC PARADISE - DEEVARADIO.NET - ALSO ON AAC+
icy-genre:Funk Disco 80s RnB Rap Soul
icy-url:http://deevaradio.net
content-type:audio/mpeg
icy-pub:1
icy-br:128
und dem Header folgt nach einer Leerzeile der Stream. Das RTSP ist dem HTTP sehr ähnlich und das SYN/ACK Geschnatter per TCP übernimmt IO::Socket. Ich hab mir das vorher natürlich mal mit einem Netzwerk-Analysetool (Ethereal) angeschaut, es ist tatsächlich recht einfach. Meine Befürchtungen, dass der Klartext-Header in der geschriebenen mp3-Datei stören würde, haben sich nicht bestätigt, andere Player spielen die Datei und gebrannt werden kann die auch.
Aber nicht, dass Ihr jetzt alle Eure Platten mit mp3's zumüllt ;-)
Horst Sockenschuss