Shoutcast mit Hilfe von PHP auslesen!

Status
Nicht offen für weitere Antworten.
Ist relativ einfach.
Hab mir sowas mal mit Perl gecoded. War zwar keine perfekte Lösung aber ging auch ganz gut:

Und zwar einfach eine Socketverbindung zum Sohoutcast server öffnen.

Dann folgenden Header senden:
Code:
GET / HTTP/1.0
User-Agent:SHOUTcast PHP Proxy 0.1
icy-metadata:1

Nach 'icy-metadata:1' müssen 2 leerzeilen folgen, wie bei jedem HTTP-Header halt auch! ;)

Jetzt kann man einfach wie wild die Daten des Servers empfangen.

Jetzt einfach nur noch solange den Socket abfragen bis man mithilfe eines regulären Ausdrucks folgendes auffängt:
Code:
StreamTitle='(.*?)';

Hier mal noch das Perl Script, vielleicht hilfts ja weiter.

Code:
#!/usr/bin/perl -w

use IO::Socket;

my $socket = IO::Socket::INET->new(
			PeerAddr	=> '205.188.245.131',
			PeerPort	=> 8004,
			Type		=> SOCK_STREAM,
			Proto		=> 'tcp',
			) || die "Error Socketopen: $!";

print $socket "GET / HTTP/1.0\nUser-Agent:Perl_ShoutCAST_Parser\nicy-metadata:1\n\n";

print "Opened Connection to ShoutCAST-Server...\n";

while($socket->recv($buf, 4096)) {
	# StreamTitle='Gatecrasher Resident Transmission 02 - CD2 mixed by Matt Hardwick';
	if($buf =~ /.*StreamTitle='(.*?)';.*/gi) {
		print "Found $1\n";
	}
}
close($socket);
 
PHP:
<?php
$stream_ip = "http://sb.mthn.net";
$stream_port = "8000";

$fp = fsockopen($stream_ip, $stream_port, &$errno, &$errstr, 30);
if ($fp) {
    fputs($fp, "GET / HTTP/1.0\r\n\r\n");
    fputs($fp, "User-Agent: SHOUTcast PHP Proxy 10.1\r\n\r\n");
    fputs($fp, "icy-metadata:1\r\n\r\n");
    while(!feof($fp)) {
        echo fgets($fp,128) . "\n";
    }
} else {
    echo "Cannot open stream. ($errstr)";
    exit;
}
?>

So ungefähr, hab es nicht getestet, deshalb wird es wohl nicht laufen...
Aber du kannst ja selber denken.
 
hab grad mal shoutcast gezogen.
in der windows readme findet sich was.
Code:
http://host:port/admin.cgi?pass=yourpass&mode=viewxml&page=0

dazu steht noch folgendes:

Page 0 is all DNAS data
Page 1 is only Main data
Page 2 is only Webdata Table
Page 3 is only Listener Table
Page 4 is only Songhistory Table

Your XML parser MUST send a User-Agent: HTTP header containing the
word "Mozilla" in order for the DNAS to recognize it as something
other than a listener.
 
Zuletzt bearbeitet:
Mein Gott, willst oder kannst du es nicht verstehen? Wenn du dich weigerst selber zu denken wirst du hier *keinen* Schritt weiterkommen!
 
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück