ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Как показать на странице точку монтирования IceCast2?

 

73
Freak @Freak
Мда...
Можно попробовать ограбить stats.xml
Находится тут **********
Имхо удобно все, что имеет xml стандарт.

Отредактировано Freak - 01.06.2011
12
Realwhite @Realwhite
вот:
<?xml version="1.0"?>
<icestats><admin>icemaster@localhost</admin>
<client_connections>120525</client_connections><clients>5</clients>
<connections>120562</connections>
<file_connections>352</file_connections>
<host>localhost</host>
<listener_connections>477</listener_connections>
<listeners>4</listeners><location>Earth</location>
<server_id>Icecast trunk</server_id><server_start>Sat, 28 May 2011 11:37:07 +0400</server_start>
<source_client_connections>4</source_client_connections>
<source_relay_connections>0</source_relay_connections>
<source_total_connections>4</source_total_connections>
<sources>1</sources><stats>0</stats>
<stats_connections>0</stats_connections>
<source mount="/live"><listeners>0</listeners>
<listenurl>http://localhost:8000/live</listenurl>
<max_listeners>unlimited</max_listeners></source>
<source mount="/play"><audio_info>bitrate=96;channels=2;samplerate=44100</audio_info>
<channels>2</channels><genre>Ofther</genre><listener_peak>9</listener_peak>
<listeners>4</listeners><listenurl>http://localhost:8000/play</listenurl>
<max_listeners>unlimited</max_listeners>
<public>1</public>
<samplerate>44100</samplerate>
<server_description>Radio-Pirs 96kb</server_description>
<server_name>Radio-Pirs</server_name>
<server_type>audio/mpeg</server_type>
<server_url>http://radio-pirs.ru/</server_url>
<slow_listeners>74</slow_listeners><source_ip>::1</source_ip>
<stream_start>Sat, 28 May 2011 11:37:07 +0400</stream_start>
<title>Dilays - Belie rozi (Bold Brothers Rem</title>
<total_bytes_read>6368396395</total_bytes_read>
<total_bytes_sent>7040554708</total_bytes_sent>
<user_agent>libshout/2.2.2</user_agent></source></icestats>

Отредактировано Realwhite - 03.06.2011
73
Freak @Freak
Уже лучше. Но желательно было бы посмотреть на файл при активном маунте /live. Но ничего, и так сойдет.

Вот какбэ скрипт, который работает.
Осталось подогнать его под двиг сайта или просто вставить куда-нибудь.

Писал для себя. Заточен под Ваш случай. Переключает на маунт /play, если маунт /live недоступен и выводит инфу (если маунт /live доступен, то есть активный - показывает инфу маунта /live).
Для Джумлы нужно переделывать. Я не работаю с этим движком - он поганый. :D
Если понадобится, скрипт можно дописать.

<?

//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
303
Сергей @Sergei
зачем изобретать велосипед? сказано же что этот модуль от Gronpipmaster'а есть у меня и помогал мне его переделывать tarasian666. в этот модуль запихали вывод аватарки диджея, 2 потока, вывод трека при переходе на нонстоп **********

Добавлено спустя 1 минуту 7 секунд:
пример у меня на сайте можно посмотреть **********

73
Freak @Freak
Никто ничего не изобретал.
Для меня написать такой скрипт - дело 15 минут. Кроме того, человек спросил - я показал.
Да и приложенный модуль отличается глупостью - половину кода можно было бы сразу выкинуть, слишком много написано. Вывод через AJAX явно лишний.
Судить в компетентности не буду, ибо про структуру Джумла-модулей не знаю. Может быть по другому на этом дырявом и тормознутом движке не напишешь.

303
Сергей @Sergei
Freak пишет:

Никто ничего не изобретал.
Для меня написать такой скрипт - дело 15 минут. Кроме того, человек спросил - я показал.
Да и приложенный модуль отличается глупостью - половину кода можно было бы сразу выкинуть, слишком много написано. Вывод через AJAX явно лишний.
Судить в компетентности не буду, ибо про структуру Джумла-модулей не знаю. Может быть по другому на этом дырявом и тормознутом движке не напишешь.

я этот модуль уже давно выложил на этом форуме и достаточно было посмотреть в этом разделе и найти его а не тратить времени на поиск решения. этот модуль естественно требует доработки и не исключено что там много ошибок особенно там где я ковырял)))
Вывод через AJAX не лишний так как не надо перезагружать страницу после каждой песни!
я очень рад что для тебя не сложно написать скрипт который ты выложил и спасибо тебе за него! уверен что он многим пригодиться и возможно мне тоже

73
Freak @Freak
Пересмотрел я этот Джумловский модуль.
Брать инфу по ссылке на блок xsl файла, потом парсить полученный html и инфу выводить... геморрой...
Я же беру инфу из родного xml файла, где все данные заранее разбиты в массивы, осталось только выдернуть нужное значение и образовать вывод.
В общем, оба способа действенны, только у меня кода поменьше. :D
Автор темы пусть сам выбирает что ему использовать.