Уже лучше. Но желательно было бы посмотреть на файл при активном маунте /live. Но ничего, и так сойдет.
Вот какбэ скрипт, который работает.
Осталось подогнать его под двиг сайта или просто вставить куда-нибудь.
Писал для себя. Заточен под Ваш случай. Переключает на маунт /play, если маунт /live недоступен и выводит инфу (если маунт /live доступен, то есть активный - показывает инфу маунта /live).
Для Джумлы нужно переделывать. Я не работаю с этим движком - он поганый.
Если понадобится, скрипт можно дописать.
<?
//Icecast stats.xml parser
class Icestat {
private $xml = array();
private $stat = array();
var $current = array();
function getfile($user, $pass, $serv, $port) {
$url = "http://".$user.":".$pass."@".$serv.":".$port."/admin/stats.xml";
$this->xml = simplexml_load_file($url);
}
function parsefile() {
$mcount = count($this->xml->source);
for ($i=0; $i<$mcount; $i++) {
foreach ($this->xml->source as $arr) {
$mnt=str_replace("/","",$arr['mount']);
$this->stat[$mnt]['mount_name'] = $mnt; //ID маунта (например: ices)
$this->stat[$mnt]['audio_info'] = $arr->audio_info; //инфо маунта
$this->stat[$mnt]['bitrate'] = $arr->bitrate; //битрейт
$this->stat[$mnt]['genre'] = $arr->genre; //жанр
$this->stat[$mnt]['channels'] = $arr->ice-channels; //каналы (моно, стерео)
$this->stat[$mnt]['listener_peak'] = $arr->listener_peak; //пик слушателей
$this->stat[$mnt]['listeners'] = $arr->listeners; //текущее кол-во слушателей
$this->stat[$mnt]['max_listeners'] = $arr->max_listeners; //максимум слушателей
$this->stat[$mnt]['server_description'] = $arr->server_description; //описание маунта
$this->stat[$mnt]['server_name'] = $arr->server_name; //название маунта
$this->stat[$mnt]['title'] = $arr->title; // название текущей песни
}
}
}
function currentmount() {
//if (!$this->stat['ID маунта живого вещания (например: live)']['audio_info']) {
if (!$this->stat['live']['audio_info']) {
//$this->current = $this->stat['ID маунта нонстопа (например: play)'];
$this->current = $this->stat['play'];
} else {
$this->current = $this->stat['live'];
}
$this->stat = 0;
}
function printcurrent() {
//Выводимая инфа (+ диз если нужно). Можно дополнять и изменять
print "
<nowrap>
Активный маунт: ".$this->current['mount_name']."<br />
Название маунта: ".$this->current['server_name']."<br />
Описание маунта: ".$this->current['server_description']."<br />
Композиция: ".$this->current['title']."<br />";
if (!$this->current['bitrate']) {
print "
Битрейт: 96 Кб/с<br />";
} else {
print "
Битрейт: ".$this->current['bitrate']." Кб/с<br />";
}
print "
Слушателей: ".$this->current['listeners']."<br />
Пик слушателей: ".$this->current['listener_peak']."
</nowrap>";
}
}
//Непосредственно вывод
$output = new Icestat;
//заполнить данные
//пример: $output->getfile('юзер', 'пароль', 'сервер', 'порт');
$output->getfile('', '', '', '');
$output->parsefile();
$output->currentmount();
$output->printcurrent();
//End of file
?>
Отредактировано Freak (03-06-2011 23:32:15)