Shoutcast2 Auslesen

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
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")) {
in
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:
Zurück
Oben