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

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

 

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

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

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

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

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

  1. <?
  2. //Icecast stats.xml parser
  3. class Icestat {
  4. private $xml = array();
  5. private $stat = array();
  6. var $current = array();
  7. function getfile($user, $pass, $serv, $port) {
  8. $url = "http://".$user.":".$pass."@".$serv.":".$port."/admin/stats.xml";
  9. $this->xml = simplexml_load_file($url);
  10. }
  11. function parsefile() {
  12. $mcount = count($this->xml->source);
  13. for ($i=0; $i<$mcount; $i++) {
  14. foreach ($this->xml->source as $arr) {
  15. $mnt=str_replace("/","",$arr['mount']);
  16. $this->stat[$mnt]['mount_name'] = $mnt; //ID маунта (например: ices)
  17. $this->stat[$mnt]['audio_info'] = $arr->audio_info; //инфо маунта
  18. $this->stat[$mnt]['bitrate'] = $arr->bitrate; //битрейт
  19. $this->stat[$mnt]['genre'] = $arr->genre; //жанр
  20. $this->stat[$mnt]['channels'] = $arr->ice-channels; //каналы (моно, стерео)
  21. $this->stat[$mnt]['listener_peak'] = $arr->listener_peak; //пик слушателей
  22. $this->stat[$mnt]['listeners'] = $arr->listeners; //текущее кол-во слушателей
  23. $this->stat[$mnt]['max_listeners'] = $arr->max_listeners; //максимум слушателей
  24. $this->stat[$mnt]['server_description'] = $arr->server_description; //описание маунта
  25. $this->stat[$mnt]['server_name'] = $arr->server_name; //название маунта
  26. $this->stat[$mnt]['title'] = $arr->title; // название текущей песни
  27. }
  28. }
  29. }
  30. function currentmount() {
  31. //if (!$this->stat['ID маунта живого вещания (например: live)']['audio_info']) {
  32. if (!$this->stat['live']['audio_info']) {
  33. //$this->current = $this->stat['ID маунта нонстопа (например: play)'];
  34. $this->current = $this->stat['play'];
  35. } else {
  36. $this->current = $this->stat['live'];
  37. }
  38. $this->stat = 0;
  39. }
  40. function printcurrent() {
  41. //Выводимая инфа (+ диз если нужно). Можно дополнять и изменять
  42. print "
  43. <nowrap>
  44. Активный маунт: ".$this->current['mount_name']."<br />
  45. Название маунта: ".$this->current['server_name']."<br />
  46. Описание маунта: ".$this->current['server_description']."<br />
  47. Композиция: ".$this->current['title']."<br />";
  48. if (!$this->current['bitrate']) {
  49. print "
  50. Битрейт: 96 Кб/с<br />";
  51. } else {
  52. print "
  53. Битрейт: ".$this->current['bitrate']." Кб/с<br />";
  54. }
  55. print "
  56. Слушателей: ".$this->current['listeners']."<br />
  57. Пик слушателей: ".$this->current['listener_peak']."
  58. </nowrap>";
  59. }
  60. }
  61. //Непосредственно вывод
  62. $output = new Icestat;
  63. //заполнить данные
  64. //пример: $output->getfile('юзер', 'пароль', 'сервер', 'порт');
  65. $output->getfile('', '', '', '');
  66. $output->parsefile();
  67. $output->currentmount();
  68. $output->printcurrent();
  69. //End of file
  70. ?>

Отредактировано Freak - 03.06.2011
0
303
Сергей @Sergei
зачем изобретать велосипед? сказано же что этот модуль от Gronpipmaster'а есть у меня и помогал мне его переделывать tarasian666. в этот модуль запихали вывод аватарки диджея, 2 потока, вывод трека при переходе на нонстоп **********

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

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

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

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

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

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

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.