ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
7   •   Посмотреть все темы

Скрипты для Icecast

 

332
Игорь @JamStyle
Klef пишет:

возникла задача по отображение общей численности слушателей (использую 4 потока в разных форматах). После раскуривания манов возник следующий код. Может он и не изящен, но поделюсь, мож кому пригодиться
  1. <?php
  2. $xml[1] = simplexml_load_file("http://линко:порт/radio.xspf");
  3. //$xml[2] = simplexml_load_file("http://линко:порт/potok2.xspf");
  4. //по необходимости увеличиваем
  5. $kp=1; //количество потоков
  6. $i=1;
  7. $vsego=0;
  8. while ($i <= $kp) {
  9. $ano = $xml[$i]->trackList->track->annotation;
  10. $mass=explode("\n", $ano);
  11. $kol=substr($mass[4],19);
  12. $i=$i+1;
  13. $vsego=$vsego+$kol;
  14. }
  15. echo "Слушают: " .$vsego;
  16. ?>


Чет оно не хочет пахать... все время просит исправить вторую строчку О_о

0
468
Klef @Klef
JamStyle пишет:

Klef пишет:

возникла задача по отображение общей численности слушателей (использую 4 потока в разных форматах). После раскуривания манов возник следующий код. Может он и не изящен, но поделюсь, мож кому пригодиться
  1. <?php
  2. $xml[1] = simplexml_load_file("http://линко:порт/radio.xspf");
  3. //$xml[2] = simplexml_load_file("http://линко:порт/potok2.xspf");
  4. //по необходимости увеличиваем
  5. $kp=1; //количество потоков
  6. $i=1;
  7. $vsego=0;
  8. while ($i <= $kp) {
  9. $ano = $xml[$i]->trackList->track->annotation;
  10. $mass=explode("\n", $ano);
  11. $kol=substr($mass[4],19);
  12. $i=$i+1;
  13. $vsego=$vsego+$kol;
  14. }
  15. echo "Слушают: " .$vsego;
  16. ?>


Чет оно не хочет пахать... все время просит исправить вторую строчку О_о

**********
из изменений только строка $xml[1]= где прописал линк на xspf к IceCast'у

0
332
Игорь @JamStyle
А какой собственно линк? По данной ссылке конечный итог только виден...
  1. Listens: 1

0
468
Klef @Klef
**********
и проверяй личку

0
332
Игорь @JamStyle
  1. Warning: simplexml_load_file(http://radio.telesweet.net:9000/absoluteclassicrock.xspf) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.0 404 File Not Found in /var/www/radio/1.php on line 2

Огромное спасибо за скрипт!Но...
Собственно, вот что пишет:( И так на все 87 станций!!

0
468
Klef @Klef
JamStyle пишет:

  1. Warning: simplexml_load_file(http://radio.telesweet.net:9000/absoluteclassicrock.xspf) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.0 404 File Not Found in /var/www/radio/1.php on line 2

Огромное спасибо за скрипт!Но...
Собственно, вот что пишет:( И так на все 87 станций!!

хм, как будто закрыт доступ на "внешнии" обращения, на веб сервере, сейчас попробую нагуглить

p.s. изменил скрипт для "многих" потоков, чтоб память не забивалась.
  1. <?php
  2. $xml[] = "http://ip:port/potok.xspf";
  3. //добавляем по маске
  4. $kp=1; //количество потоков
  5. $i=0;
  6. $vsego=0;
  7. while ($i <= ($kp-1)) {
  8. $vizov=simplexml_load_file($xml[$i]);
  9. $ano = $vizov->trackList->track->annotation;
  10. $mass=explode("\n", $ano);
  11. $kol=substr($mass[4],19);
  12. $i=$i+1;
  13. $vsego=$vsego+$kol;
  14. }
  15. echo "Potokov: " .$kp. "<br>";
  16. echo "Listens: " .$vsego;
  17. ?>


Добавлено спустя 1 минуту 5 секунд:
попробовал с твоими линками у себя (не 87, но первые 5)
**********

0
332
Игорь @JamStyle
Хм...действительно, у тебя все работает, а вот у меня...все таже ошибка...Что-то блокирует доступ, судя по всему.

0
468
Klef @Klef
веб и сервер icecasta на одной машине? или разных
icecast2_status_v1.1 пробовал?

Добавлено спустя 1 минуту :
ого канешно напильником стругать надо, но по первому потоку он инфу точно даст

0
332
Игорь @JamStyle
Да, на одной машине...но доступ только виртуальный (хостинг своеобразный)...Я так понял, судя по последнему посту, не судьба мне всех слушателей в одну кучу сбить...гггг

0
468
Klef @Klef
о, одна машина уже гуд, попробуй линк вида **********
но сработает или нет, от хоста зависит

0
332
Игорь @JamStyle
Не сработало...

0
468
Klef @Klef
********** пробовал пускать, если хоть что-то дает, то можно попробовать на основе него (там через админку Icecast'а). а там есть инфа о "общем" количестве слушателей

0
468
Klef @Klef
Иметься: старая машина под виндой на которой вертится Sam, Icecast, и апачь для малых нужд.

Задача: требуется собирать статистику по часам, суткам и т.д.

Условия: варианты с cacti и mrtg не подходят по причине крайне малого оставшегося машинного ресурса.

Решение:
Найдена и заюзана программа Radio Toolbox, она мониторит и ведет логи по всем необходимым потокам (в нашем случае три), логи имеют вид: 03_10_2009_rtb_log.txt
  1. ...
  2. [03/10/2009@14:45:19] 1 listeners - [CS: nadja - bliss torn from emptiness pt.1] (this log file generated by RTB v1.1.1)
  3. ...

используем два php скрипта, один простой, другой повеселее.

1. для перевода логов RTB в что нибудь попроще.
  1. <?php
  2. $y=date("Y",time()-86400);
  3. $m=date("m",time()-86400);
  4. $d=date("d",time()-86400);
  5. $file_name='C:/Radio Toolbox/logs/' .$m .'_' .$d. '_' .$y. '_rtb_log.txt';
  6. //директория хранениея логов Radio Toolbox с выборкой нужной даты
  7. $r=fopen($file_name,'r');
  8. $text=fread($r,filesize($file_name));
  9. fclose($r);
  10. $massiv=explode("\r\n", $text);
  11. foreach ($massiv as $txt) {
  12. $h = substr($txt,12,2);
  13. $h=$h*1;
  14. $temp=explode(" ", $txt);
  15. $l[$h]=$l[$h]+$temp[1];
  16. $s[$h]=$s[$h]+1;
  17. }
  18. $txtout='<?php'."\r\n";
  19. for ($i=0; $i<=23; $i++) {
  20. $txtout=$txtout. '$ls[]=' .$l[$i]. '; $kz[]=' .$s[$i]. ";\r\n";
  21. }
  22. $txtout=$txtout.'?>';
  23. //запись в файл
  24. $fp = fopen ("C:/listens/".$y.$m.$d.".dat", "w");
  25. fwrite($fp,$txtout);
  26. fclose($fp);
  27. ?>

данный скрипт запускаем после полуночи (когда начинает вестись лог на новый день)
php toBD.php (или диспетчером задач или crontab)

в итоге у нас получается файл 20090310.dat
обыкновенный текстовик формата
  1. <?php
  2. $ls[]=165; $kz[]=120;
  3. <sciped>
  4. $ls[]=360; $kz[]=120;
  5. ?>

всего в файле 24 записе (по 1 на час), первое значение сумма слушателей зарегенных в логах за час, второе количество замеров, т.е. среднее в час, это сумма/замеры

2. вывод статистики, более сложный и веселый
  1. <?php
  2. $font="fd.ttf";
  3. //имя шрифта
  4. $dir='C:/listens/*.dat';
  5. //путь к файлам БД =)
  6. $y=$_GET['y'];
  7. $m=$_GET['m'];
  8. $d=$_GET['d'];
  9. $in=$_GET['in'];
  10. $t=$_GET['t'];
  11. if ($y<2009) {$y=date("Y",time()-86500);}
  12. if ($y>2038) {$y=date("Y",time()-86500);}
  13. if ($m<1) {$m=date("m",time()-86500);}
  14. if ($m>12) {$m=date("m",time()-86500);}
  15. if ($d<1) {$d=date("d",time()-86500);}
  16. if ($d>31) {$d=date("d",time()-86500);}
  17. if ($in==0) {$in=1;}
  18. if ($in<0) {$in=1;}
  19. if ($in>3) {$in=1;}
  20. if ($t<1) {$t=1;}
  21. if ($t>3) {$t=1;}
  22. if ($t==1 && $in>2) {$in=2;}
  23. if ($t==2 && $in<2) {$in=2;}
  24. if ($t==3 && $in<3) {$in=3;}
  25. $d=substr("0000" .$d,-2,2);
  26. $m=substr("0000" .$m,-2,2);
  27. if ($in==1) {
  28. $d1=$y.$m.$d;
  29. $d2=$y.$m.$d;
  30. }
  31. if ($in==2) {
  32. $d1=$y.$m."01";
  33. $d2=$y.$m."31";
  34. }
  35. if ($in==3) {
  36. $d1=$y."0101";
  37. $d2=$y."1231";
  38. }
  39. $d1=$d1*1;
  40. $d2=$d2*1;
  41. if ($t<0) {$t=1;}
  42. if ($t>3) {$t=1;}
  43. $mass=glob($dir);
  44. $x=0;
  45. $td=0;
  46. $pem=0;
  47. $nachalo=mktime(0,0,0,substr($d1,4,2),substr($d1,6,2),substr($d1,0,4));
  48. //обработка БД согласно вводным
  49. foreach ($mass as $filename){
  50. $locfile= substr($filename,-12,8);
  51. $locfile=$locfile*1;
  52. if ($locfile >=$d1 && $locfile <=$d2) {
  53. $tm=1*substr($filename,-8,2);
  54. if ($pem==0) {$pem=1;$pm=$tm;}
  55. if ($t==3 && $pm<>$tm) {
  56. $pm=$tm;
  57. $l[$td]=array_sum($ls);
  58. $s[$td]=array_sum($kz);
  59. $ls='';
  60. $kz='';
  61. $td=$td+1;
  62. }
  63. include($filename);
  64. if ($t==2) {
  65. $l[$td]=array_sum($ls);
  66. $s[$td]=array_sum($kz);
  67. $ls='';
  68. $kz='';
  69. $td=$td+1;
  70. }
  71. }
  72. }
  73. if ($t==1) {
  74. $name="hours";
  75. $l=$ls;
  76. $s=$kz;
  77. }
  78. if ($t==2) {
  79. $name="days";
  80. }
  81. if ($t==3) {
  82. $name="months";
  83. if ($t==3) {
  84. $l[$td]=array_sum($ls);
  85. $s[$td]=array_sum($kz);
  86. }
  87. }
  88. $k=sizeof($l);
  89. $vivod=0;
  90. if (array_sum($l)==0) {$vivod=2;}
  91. if ($k==0) {$vivod=1;}
  92. $vis=0;
  93. for ($i=0;$i<$k;$i++){
  94. $r=$l[$i]/$s[$i];
  95. if ($vis<$r) {$vis=$r;}
  96. }
  97. $vt=250;
  98. if ($t==1 && $in==2) {$vt=300;}
  99. if ($t==2 && $in==3) {$vt=300;}
  100. //генерация графика
  101. header("Content-type: image/png");
  102. $image = imageCreate(800, $vt);
  103. $colorback = imageColorAllocate($image, 0, 0, 0);
  104. $color1 = imageColorAllocate($image, 0, 255, 0);
  105. $color2 = imageColorAllocate($image, 50, 160, 0);
  106. imageFilledRectangle($image, 0, 0, 99, 99, $colorback);
  107. imageLine($image,30,10,30, 240,$color2);
  108. $max=$k;
  109. if ($vivod==0) {
  110. if ($t==1 && $in==1) {$max=23;}
  111. if ($t==1 && $in==2) {$max=24*(date("t",$nachalo)-1);}
  112. if ($t==2 && $in==2) {$max=date("t",$nachalo)-1;}
  113. if ($t==2 && $in==3) {$max=365;}
  114. if ($t==3 && $in==3) {$max=11;}
  115. $sh=750/($max+1);
  116. $vd=round($vis);
  117. $st=1;
  118. if ($vis==0) {$rp=20;$st=1;}
  119. if ($vis<>0) {
  120. $rp=200*$st/$vis;
  121. while ($rp<10) {
  122. $st=$st+1;
  123. $rp=200*$st/$vis;
  124. }
  125. }
  126. $i=0;
  127. while ($i<=$vd) {
  128. $v=200*$i/$vis;
  129. $bbox=imagettfbbox(6, 0, $font, $i);
  130. imageLine($image,20,229-$v,780, 229-$v,$color2);
  131. imagettftext ($image, 6, 0, 30-$bbox[2]-3, 229-$v-2, $color2, $font,$i);
  132. $i=$i+$st;
  133. }
  134. for ($i=0;$i<$k;$i++){
  135. $r=$l[$i]/$s[$i];
  136. $v=200*$r/$vis;
  137. $nc=$i+1;
  138. if ($t==1) {$nc=$i;}
  139. imageFilledRectangle($image, 31+$sh*$i, 229-$v, 29+$sh*($i+1), 229, $color1);
  140. $bbox=imagettfbbox(6, 0, $font, $i);
  141. }
  142. $st=1;$oo=1;$u=0;
  143. if ($t==1 && $in==2) {$st=24;$oo=0;$u=-90;}
  144. if ($t==2 && $in==3) {$st=30;$oo=0;$u=-90;}
  145. $rp=750*$st/$max;
  146. while ($rp<10) {
  147. $st=$st+1;
  148. $rp=200*$sh;
  149. }
  150. $i=0;
  151. while ($i<=$max) {
  152. $v=750*$i/$max;
  153. $io=$i;
  154. if ($t<>1) {$io=$i+1;}
  155. if ($t==1 && $in==2) {$io=date("d-M",$nachalo+3600*$i);}
  156. if ($t==2 && $in==3) {$io=date("M",$nachalo+24*3600*$i);}
  157. if ($t==3) {$io=date("M",$nachalo+31*24*3600*$i);}
  158. if ($i<>0) {imagettftext ($image, 6, $u, 31+$sh+$sh*$i-$sh/2-$bbox[2]/2, 240-$bbox[3]/2, $color2, $font,$io);}
  159. if ($i==0 && $oo==1) {imagettftext ($image, 6, $u, 31+$sh+$sh*$i-$sh/2-$bbox[2]/2, 240-$bbox[3]/2, $color2, $font,$io);}
  160. $i=$i+$st;
  161. }
  162. }
  163. if ($vivod==1) {imagettftext ($image, 20, 0, 175, 150, $color1, $font,"NOT DATA IN STORAGE");}
  164. if ($vivod==2) {imagettftext ($image, 20, 0, 260, 150, $color1, $font,"Not Listens");}
  165. $dati=substr($d1,0,4).":".substr($d1,4,2).":".substr($d1,6,2)."-".substr($d2,0,4).":".substr($d2,4,2).":".substr($d2,6,2)." (" . date("T",$nachalo). ")";
  166. if ($d1==$d2) {$dati=substr($d1,0,4).":".substr($d1,4,2).":".substr($d1,6,2)." (" . date("T",$nachalo). ")";}
  167. imagettftext ($image, 6, 0, 40, 10, $color2, $font,$dati);
  168. imagettftext ($image, 6, 0, 760, 10, $color2, $font,'V.2.8');
  169. imagettftext ($image, 6, 0, 2, 247, $color2, $font,$name);
  170. imageInterlace($image, 1);
  171. imagepng($image);
  172. ?>

Переменные, которые можно передать скрипту
d - день
m - месяц
y - год
t - тип графика (1-по часам, 2- по дням, 3 - по месяцам)
in - период графика (1 - день, 2 - месяц, 3 - год)
т.е. можно укозать скрипту данные на которое отображать, шаг графика и период
так например:
script.php?d=8&m=3&y=2009&t=1&in=1 отразит статистику за 8 марта 2009 по часам.
script.php?y=2009&t=3&in=3 отразит статистику за 2009 год по месяцам
неуказанные данные принимаются по умолчанию: текущая дата, по часам за сутки
В целях не загромождения графика ограничения в комбинациях периода и шага (для часов, только за сутки и месяц, для дней, только за месяц и год, для месяца, только за год)

Результат работы: **********

Аспекты: так как код и так довольно громоздок, дни когда логи не велись (с 1 января 2009 года, по 7 марта 2009 года) созданы "пустые" файлы:
  1. <?php
  2. $ls[]=0; $kz[]=120;
  3. <sciped>
  4. $ls[]=0; $kz[]=120;
  5. ?>

Заглушки: при запросе данных, которых нет в БД или только "пустые"записи, выдается соответствующее предупреждение.

Плюсы:
1. вторая версия скрипта (та что представлена выше) довольна шустра и имеет потенциал развития (например отображение графика по минутам, но в этом случае целесообразно для "поминутных" записей хранить в отдельной БД.
2. оно работает.

Минусы:
1. Статистика только раньше текущих суток.
2. отображение "средних" показателей

p.s. на текущий момент по выдаче статистических данных в графической форме скрипт удовлетворяет меня и команду, ухудшения производительности не предвидеться в ближайшее время (проводилось моделирование на заполнение БД данными за весь год). Решения по минутам и годам не вводились, по причинам нецелесообразности (т.к. на минуты как то не критично, а на года пока нет смысла)


upd: по причине того что платформа с веб сервером перешла на freebsd примеров вы тут не увидите, но скрипт рабочий, долго пользовался ;)

Отредактировано Klef - 26.09.2009
0
2605
Александр @AlexIT
Отлично, спасибо!
Хотя я лично юзаю mrtg.

0
468
Klef @Klef
2 AlexIT
к сожалению, я не смог поднять под виндой mrtg, а cacti как то слишком завышено жрет ресурсы системы, а то что уже полностью обосновался на Sam'e останавливает в переходе на nix :(

0
16
Siroga @Siroga
Помогите дописать\переписать скрипт.
нужно чтобы он отображал статус радио и к-во слушателей. Все вроде бы работает, но кривовато, т.е. icecast сервер постоянно онлайн, но радио работает не всегда. А скрипт работает по принципу - есть конект, выдает инфу о слушателях итд. А если нет конекта - тогда выдает ошибку, типа радио не работает. Но, поскольку сервер всегда онлайн, скрипт показивает что радио работает, хотя трансляции нет. :(
Где тут и что можно исправить!?

  1. <?php
  2. $ip = "zloe.servemp3.com";
  3. $port = "7000";
  4. $ice2_station = "Rадио ";
  5. $fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
  6. if(!$fp) {
  7. $success=2; //set if no connection
  8. //edit html to fit your stations site, this display is for offline status
  9. echo'<table>
  10. <tr>
  11. <td width="100%" colspan="2">
  12. <img border="0" src="images/offline.gif" width="22" height="22">
  13. <b><font face="Georgia" size="5" color="#FF0000">'.$ice2_station.' сейчас не работает</font></b></td>
  14. </tr>
  15. </table>';
  16. }
  17. if($success!=2){ //if connection
  18. fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
  19. while(!feof($fp)) {
  20. $page .= fgets($fp, 1000);
  21. }
  22. fclose($fp); //close connection
  23. $page = ereg_replace(".*<pre>", "", $page); //extract data
  24. $page = ereg_replace("</pre>.*", ",", $page); //extract data
  25. $numbers = explode(",",$page); //bomb it and extract data
  26. $mount = $numbers[0];
  27. $connections = $numbers[1];
  28. $stream_n = $numbers[2];
  29. $listeners = $numbers[3];
  30. $desc = $numbers[4];
  31. $cur_song = $numbers[5];
  32. $str_url = $numbers[6];
  33. $client_info = $numbers[7];
  34. $test1 = $numbers[8]; //set vars that where empty and still dont know what
  35. $mount = $numbers[11];
  36. $connections = $numbers[12];
  37. $station =$numbers[13];
  38. $listeners = $numbers[14];
  39. $description = $numbers[15];
  40. $cur_song = $numbers[16];
  41. $www_url = $numbers[17];
  42. //edit html to fit your stations site, this display is for online status
  43. echo'
  44. <table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
  45. <tr>
  46. <td width="100%"><b><font face="Arial" size="2">
  47. <tr>
  48. <td width="100%"><b><font face="Georgia" color="green" size="5">
  49. <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
  50. '.$ice2_station.' работает! </font></b></td>
  51. </tr>
  52. <tr>
  53. <td width="100%"><b><font face="Georgia" color="green" size="5">
  54. <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
  55. '.$listeners.' </font></b></td>
  56. </tr>
  57. </table>';
  58. }

Как я понимаю скрипт берет инфу с файла ********** и прасит его, заметил что при трансляции в файле присутствует параметр mount, т.е. /radio. а при отсутствии трансляции, этого параметра нет. Можно ль какнить переписать скрипт так, чтобы при отсутствии параметра он выдавал что радио не работает.

Примеры

1. радио НЕ работает
  1. <pre>
  2. MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL Global,Client:158157 Source: ,,0,,
  3. </pre>

2. радио работает
  1. <pre>
  2. MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL Global,Client:158159 Source: ,,0,, /radio,,,19,, - ,
  3. </pre>

0
468
Klef @Klef
2 Siroga
Хотя бы так
  1. <?php
  2. $ip = "zloe.servemp3.com";
  3. $port = "7000";
  4. $ice2_station = "Rадио ";
  5. $fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
  6. if(!$fp) {
  7. $success=2; //set if no connection
  8. //edit html to fit your stations site, this display is for offline status
  9. echo'<table>
  10. <tr>
  11. <td width="100%" colspan="2">
  12. <img border="0" src="images/offline.gif" width="22" height="22">
  13. <b><font face="Georgia" size="5" color="#FF0000">'.$ice2_station.' сейчас не работает</font></b></td>
  14. </tr>
  15. </table>';
  16. }
  17. if($success!=2){ //if connection
  18. fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
  19. while(!feof($fp)) {
  20. $page .= fgets($fp, 1000);
  21. }
  22. fclose($fp); //close connection
  23. $page = ereg_replace(".*<pre>", "", $page); //extract data
  24. $page = ereg_replace("</pre>.*", ",", $page); //extract data
  25. $numbers = explode(",",$page); //bomb it and extract data
  26. $mount = $numbers[0];
  27. $connections = $numbers[1];
  28. $stream_n = $numbers[2];
  29. $listeners = $numbers[3];
  30. $desc = $numbers[4];
  31. $cur_song = $numbers[5];
  32. $str_url = $numbers[6];
  33. $client_info = $numbers[7];
  34. $test1 = $numbers[8]; //set vars that where empty and still dont know what
  35. $mount = $numbers[11];
  36. $connections = $numbers[12];
  37. $station =$numbers[13];
  38. $listeners = $numbers[14];
  39. $description = $numbers[15];
  40. $cur_song = $numbers[16];
  41. $www_url = $numbers[17];
  42. if (strlen($mount)<2) echo '<table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
  43. <tr>
  44. <td width="100%"><b><font face="Arial" size="2">
  45. <tr>
  46. <td width="100%"><b><font face="Georgia" color="green" size="5">
  47. <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
  48. '.$ice2_station.' Не работает! </font></b></td>
  49. </tr>
  50. </tr>
  51. </table>';
  52. //edit html to fit your stations site, this display is for online status
  53. else echo '<table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
  54. <tr>
  55. <td width="100%"><b><font face="Arial" size="2">
  56. <tr>
  57. <td width="100%"><b><font face="Georgia" color="green" size="5">
  58. <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
  59. '.$ice2_station.' работает! </font></b></td>
  60. </tr>
  61. <tr>
  62. <td width="100%"><b><font face="Georgia" color="green" size="5">
  63. <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
  64. '.$listeners.' </font></b></td>
  65. </tr>
  66. </table>';
  67. }
  68. ?>

0
16
Siroga @Siroga
Спасибо, заработало :))

0
1
Symbios @Symbios
ЙЮЙ ЛНФМН ЯОЮПЯХРЭ БНР Я РЮЙНЦН ТЮИКЮ?
**********
ДЕКН Б РНЛ ВРН ПЮДХНЯРЮМЖХИ ЛМНЦН, Ю ЩРНР ТЮИК ХЛЕММН РНИ ПЮДХНЯРЮМЖХХ Я ЙНРНПНИ УНВС БГЪРЭ ХМТС... ЯЙЮФХРЕ ОПНЯРН ЙЮЙ БШБЕЯРХ ЩРН Б html, ДЮКЭЬЕ Ъ ПЮГАЕПСЯЭ...

0
22
Parawozzz @Parawozzz
Klef пишет:

возникла задача по отображение общей численности слушателей (использую 4 потока в разных форматах). После раскуривания манов возник следующий код. Может он и не изящен, но поделюсь, мож кому пригодиться
  1. <?php
  2. $xml[1] = simplexml_load_file("http://линко:порт/radio.xspf");
  3. //$xml[2] = simplexml_load_file("http://линко:порт/potok2.xspf");
  4. //по необходимости увеличиваем
  5. $kp=1; //количество потоков
  6. $i=1;
  7. $vsego=0;
  8. while ($i <= $kp) {
  9. $ano = $xml[$i]->trackList->track->annotation;
  10. $mass=explode("\n", $ano);
  11. $kol=substr($mass[4],19);
  12. $i=$i+1;
  13. $vsego=$vsego+$kol;
  14. }
  15. echo "Слушают: " .$vsego;
  16. ?>


Klef пишет:

возникла задача по отображение общей численности слушателей (использую 4 потока в разных форматах). После раскуривания манов возник следующий код. Может он и не изящен, но поделюсь, мож кому пригодиться
  1. <?php
  2. $xml[1] = simplexml_load_file("http://линко:порт/radio.xspf");
  3. //$xml[2] = simplexml_load_file("http://линко:порт/potok2.xspf");
  4. //по необходимости увеличиваем
  5. $kp=1; //количество потоков
  6. $i=1;
  7. $vsego=0;
  8. while ($i <= $kp) {
  9. $ano = $xml[$i]->trackList->track->annotation;
  10. $mass=explode("\n", $ano);
  11. $kol=substr($mass[4],19);
  12. $i=$i+1;
  13. $vsego=$vsego+$kol;
  14. }
  15. echo "Слушают: " .$vsego;
  16. ?>


1. Прекрасный скрипт! Вопрос к автору - как сделать чтобы скрипт отображал пиковое количество слушателей? какие данные прописать в скрипт для этого? и откуда вы взяли эти данные?

2. Нельзя ли во втором варианте скрипта привести пример, как прописывать несколько потоков?

3. Ответ тем, у кого не заработал скрипт. Скрипт Работает только с icecast 2.3.2 и не ниже. Если я не прав, то поправьте.

Очень жду ответа!

0