[Icecast] Retrieving Playing Stats

convinceme at atrocions.com convinceme at atrocions.com
Tue Mar 29 00:59:59 UTC 2005


I got the following script from this mailing list but when i try using it doesnt really seem to
work and gives me the following error.

Warning: fopen(http://...@64.157.204.179:9095/admin/stats): failed to open stream: Bad file
descriptor in E:\Public ftp\epakimusic\test.php on line 9
Error reading Icecast data from 64.157.204.179:9095.

So could someone please help me out with this.. or if someone has a better script that would be
just great...

<?php

$server = "64.157.204.179:9095";
$user = "login";
$passw = "pass";
$mountpoint = "/mountname";

$fp = fopen("http://$user:$passw@$server/admin/stats","r")
         or die("Error reading Icecast data from $server.");

while(!feof($fp))
{
     $data .= fread($fp, 8192);
}

fclose($fp);

// Now parse the XML output for our mountpoint
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);

$params = array();
$level = array();
foreach ($vals as $xml_elem) {
     if ($xml_elem['type'] == 'open') {
        if (array_key_exists('attributes',$xml_elem)) {
            list($level[$xml_elem['level']],$extra) = 
array_values($xml_elem['att
ributes']);
         } else {
             $level[$xml_elem['level']] = $xml_elem['tag'];
         }
     }
     if ($xml_elem['type'] == 'complete') {
         $start_level = 1;
         $php_stmt = '$params';
         while($start_level < $xml_elem['level']) {
             $php_stmt .= '[$level['.$start_level.']]';
             $start_level++;
         }
         $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
         eval($php_stmt);
     }
}

$listeners = $params['ICESTATS'][$mountpoint]['LISTENERS'];
$currenttrack = $params['ICESTATS'][$mountpoint]['TITLE'];

echo "$listeners listeners are currently connected.";
echo "<br />";
echo "Currently playing: $currenttrack";

?>



More information about the Icecast mailing list