Hallo ich habe mir die Frage gestellt, wie ich am besten den Shoutcast2 auslesen könnte.
Zum einen gibt es ja hier im Forum die Variante für den Shoutcast Server bis version 1.9.9
(http://www.hackerboard.de/code-kitchen/23733-shoutcast-auslesen-2.html#post217822)
Nun wollt ich das ganze auf Shoutcast2 umstellen, hab die abfrage angepasst von
in
vor der änderrung habe ich einen Shoutcast V1 Server eingetragen und der hat dann Funktioniert (nicht anders zu erwarten)
Nach der änderrung habe ich die Daten eines Sc_Serv2 Servers eingetragen und es wird mir nur noch Offline ausgegeben.
die adresse funktioniert auch, also wird mir auch die XML angezeigt, deswegen versteh ich auch nicht warum das da nicht funktioniert.
Shoutcast Server V2 XML
die Daten sind hier zwar aktuell für den Test aber nicht im Betrieb vorhanden. Nicht wundern also
so nun meine Frage.:
Kann mir jemand dabei helfen ein Besseres ergebniss zu erhalten aus die ständige Offline meldung?
Zum einen gibt es ja hier im Forum die Variante für den Shoutcast Server bis version 1.9.9
(http://www.hackerboard.de/code-kitchen/23733-shoutcast-auslesen-2.html#post217822)
Nun wollt ich das ganze auf Shoutcast2 umstellen, hab die abfrage angepasst von
PHP:
if(fputs($fp, "GET /admin.cgi?pass=".$scast_pass."&mode=viewxml HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n")) {
PHP:
if(fputs($fp, "GET /admin.cgi?pass=".$scast_pass."&sid=1&mode=viewxml HTTP/1.1\r\nUser-Agent: (Mozilla Compatible)\r\n\r\n")) {
vor der änderrung habe ich einen Shoutcast V1 Server eingetragen und der hat dann Funktioniert (nicht anders zu erwarten)
Nach der änderrung habe ich die Daten eines Sc_Serv2 Servers eingetragen und es wird mir nur noch Offline ausgegeben.
die adresse funktioniert auch, also wird mir auch die XML angezeigt, deswegen versteh ich auch nicht warum das da nicht funktioniert.
Shoutcast Server V2 XML
PHP:
// Serverdaten
$scast_host = '84.200.43.10';
$scast_port = '8000';
$scast_pass = 'testing';
// XML holen
if($fp = @fsockopen($scast_host, $scast_port, $errno, $errstr, 30)) {
if(fputs($fp, "GET /admin.cgi?pass=".$scast_pass."&sid=1&mode=viewxml HTTP/1.1\r\nUser-Agent: (Mozilla Compatible)\r\n\r\n")) {
$xmldata = "";
while(!feof($fp)) $xmldata .= fgets($fp, 1000);
$xmldata = explode("\r\n", $xmldata);
$xmldata = $xmldata[3];
}
}
// Regex Funktionen
function get_item($name, $source) {
preg_match('#<'.$name.'>(.*?)</'.$name.'>#', $source, $matches);
return $matches[1];
}
function get_items($name, $source) {
preg_match_all('#<'.$name.'>(.*?)</'.$name.'>#', $source, $matches);
return $matches[1];
}
// Werte aus XML auslesen
$sc_stream_status = get_item("STREAMSTATUS", $xmldata);
if($sc_stream_status) {
$sc_stream_bitrate = get_item("BITRATE", $xmldata);
$sc_listeners_cur = get_item("CURRENTLISTENERS", $xmldata);
$sc_listeners_peak = get_item("PEAKLISTENERS", $xmldata);
$sc_listeners_max = get_item("MAXLISTENERS", $xmldata);
$sc_server_title = get_item("SERVERTITLE", $xmldata);
$sc_server_url = get_item("SERVERURL", $xmldata);
$sc_server_genre = get_item("SERVERGENRE", $xmldata);
$sc_server_version = get_item("VERSION", $xmldata);
$sc_current_song = get_item("SONGTITLE", $xmldata);
}
if(!($sc_stream_bitrate)) {
echo " <h1>Sorry, aber Server ist offline!</h1>" . "\n";
}
else {
echo " <h3>Allgemeine Infos</h3>" . "\n";
echo " <table border=1>" . "\n";
echo " <tr>" . "\n";
echo " <td>Bitrate</td><td>$sc_stream_bitrate</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>Aktuelle Zuhoerer</td><td>$sc_listeners_cur</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>Peak Zuhoerer</td><td>$sc_listeners_peak</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>Max Zuhoerer</td><td>$sc_listeners_max</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>Servertitel</td><td>$sc_server_title</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>ServerURL</td><td>$sc_server_url</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>ServerGenre</td><td>$sc_server_genre</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>Version</td><td>$sc_sever_version</td>" . "\n";
echo " </tr>" . "\n";
echo " <tr>" . "\n";
echo " <td>Liedtitel</td><td>$sc_current_song</td>" . "\n";
echo " </tr>" . "\n";
echo " </table>" . "\n";
}
echo " </body>" . "\n";
echo "</html>" . "\n";
die Daten sind hier zwar aktuell für den Test aber nicht im Betrieb vorhanden. Nicht wundern also
so nun meine Frage.:
Kann mir jemand dabei helfen ein Besseres ergebniss zu erhalten aus die ständige Offline meldung?
Zuletzt bearbeitet: