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

Скрипты для Icecast

 

6245
Тарас @tarasian666
  1.  
  2. <?php
  3. $data = file_get_contents('http://localhost:88/status.xsl?mount=/live');
  4. function antara($string, $start, $end){
  5. $string = " ".$string;
  6. $ini = strpos($string,$start);
  7. if ($ini == 0) return "";
  8. $ini += strlen($start);
  9. $len = strpos($string,$end,$ini) - $ini;
  10. return substr($string,$ini,$len);
  11. }
  12. if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>") ==''){$data = file_get_contents('http://localhost:88/status.xsl?mount=/nonstop');}
  13. $data = iconv("utf-8", "cp1251", $data);
  14. $title = antara($data, "Stream Title:</td>\n<td class=\"streamdata\">","</td>");
  15. $description = antara($data, "Stream Description:</td>\n<td class=\"streamdata\">","</td>");
  16. $content_type = antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>");
  17. $Mount_started = antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>");
  18. $Bitrate = antara($data, "Bitrate:</td>\n<td class=\"streamdata\">","</td>");
  19. $Current_listeners = antara($data, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
  20. $Peak_listeners = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
  21. $Stream_genre = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
  22. $Stream_url = antara($data, "Stream URL:</td>\n<td class=\"streamdata\">","</td>");
  23. $Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
  24. $hellp_curr_listeners = antara($hellp, "Сейчас слушают:</td>\n<td class=\"streamdata\">","</td>");
  25. $hellp_peak_listeners = antara($hellp, "Максимум было</td>\n<td class=\"streamdata\">","</td>");
  26. $Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
  27. $Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;
  28. $staylst=$Curr_listens+1;
  29. echo '<span style="font-size: 0.72em; font-family:Trebuchet MS, Tahoma, Arial, sans-serif; color:#3090c3"><b>Название радио:</b> '.$title.' <br>
  30. <b>За пультом:</b> '.$description.' <br>
  31. <b>Битрейт:</b> '.$Bitrate.' <br>
  32. <b>Сейчас слушают:</b> '.$Curr_listens.' <br>
  33. <b>Максимум слушало:</b> '.$Peak_listens.' <br>
  34. <b>Сейчас в эфире:</b> '.$Current_song.' <br>
  35. <br>
  36. <center><input type="button" value="Слушать радио" onclick="location.href=\'http://xoiniki.com:88/live.m3u\'" /></center>';
  37. ?>

0
6245
Тарас @tarasian666
tarasian666 пишет:

насчет подсчета слушателей - а вдруг на сервере не все маунты ваши или не все считать надо
  1. <?php
  2. //данные для парсинга слушателей всех маунтов
  3. //можно написать их здесь сколько угодно
  4. $mount[0] = '[url]http://188.40.124.23:8206/status2.xsl?mount=/radio[/url]';
  5. $mount[1] = '[url]http://188.40.124.23:8206/status2.xsl?mount=/playlist[/url]';
  6. $mount[2] = '[url]http://188.40.124.23:8206/status2.xsl?mount=/nonstop[/url]';
  7. //считаем сколько у нас маунтов с которых считаем слушателей
  8. $mounts = count($mount);
  9. //данные для парсинга плейлистов для получения текущего исполнителя и песни и описания потока
  10. //записываем их в таком порядке: сперва прямой эфир, потом фоллбэки
  11. //можно написать их здесь сколько угодно
  12. $xml[0] = "[url]http://188.40.124.23:8206/radio.xspf[/url]";
  13. $xml[1] = "[url]http://188.40.124.23:8206/playlist.xspf[/url]";
  14. $xml[2] = "[url]http://188.40.124.23:8206/nonstop.xspf[/url]";
  15. //считаем сколько у нас маунтов с которых берем теги
  16. $xmls = count($xml);
  17. //считаем всех слушателей
  18. $i = 0;
  19. while($i<$mounts)
  20. {
  21. $text= file_get_contents($mount[$i]);
  22. $mass=explode(",", $text);
  23. $listens += $mass [14];
  24. $i ++;
  25. }
  26. //парсим по очереди все маунты пока не добьемся положительного результата
  27. $i = 0;
  28. while($stream['descr'] =='')
  29. {
  30. $xml1 = simplexml_load_file($xml[$i]);
  31. //обращение к xspf файлу текущего потока
  32. $stream['creator'] = $xml1->trackList->track->creator;
  33. //выбираем значение из <trackList><track><creator>
  34. $stream['title'] = $xml1->trackList->track->title;
  35. $ano = $xml1->trackList->track->annotation;
  36. //выбираем значение из <trackList><track><annotation>
  37. $mss=explode("\n", $ano);
  38. //разбиваем знаечение на масив (т.к. там много чего а нам надо тока строку "Stream Description")
  39. $stream['descr']=substr($mss[1],20);
  40. //строка "Stream Description" вторая, (не забываем, что счет с нуля, т.е. это будет 1)
  41. //берем значение начиная с 20 символа чтобы не захватывать "Stream Description:"
  42. $i ++;
  43. //если все перепарсили а данных нет останавливаеся с ошибкой
  44. if($i>$xmls){
  45. $stream['descr'] = "offline";
  46. }
  47. }
  48. include "max.php"; //для отображения пикового значения слушателей
  49. if ($listens>$max)
  50. {
  51. $txtout="<?php\r\n".'$max='.$listens. ";\r\n?>";
  52. $fp = fopen ("max.php", "w");
  53. fwrite($fp,$txtout);
  54. fclose($fp);
  55. $max=$listens;
  56. }
  57. echo $stream['creator'] . " - "; // вывод имени исполнителя
  58. echo $stream['title'] . "<br>"; //вывод названия песни
  59. echo "Слушателей: ".$listens . "<br>"; //вывод кол-ва слушателей
  60. //echo "Max listens: ".$max . "<br>"; //вывод пикового к-ва слушателей, раскомментировать, если нужен
  61. echo $stream['descr'] . "<br>"; //вывод описания текущего потока
  62. ?>

0
49
aleksanders @aleksanders
Подскажите пожалуйста скрипт, который показывал бы ТОЛЬКО название трека.
Имеется 2 потока. live и nonstop. Когда live отключается, чтобы автоматом показывала трек из потока nonstop.

Отредактировано aleksanders - 02.02.2012
0
6245
Тарас @tarasian666
  1. <?php
  2. $file_name='http://www.domain.com:8000/status2.xsl?mount=/listen';
  3. $r=fopen($file_name,'r');
  4. $text=fread($r,1000);
  5. fclose($r);
  6. $mass=explode(",", $text);
  7. $current=$mass [16];
  8. echo $current;
  9. ?>


все что ненужно отображать просто удаляем

Отредактировано tarasian666 - 02.02.2012
0
49
aleksanders @aleksanders
Не переходит с одного маунта на второй, если первый отключён. Как можно подправить?

И впереди названия трека есть знак "-". Как убрать?

Отредактировано aleksanders - 02.02.2012
0
6245
Тарас @tarasian666
Как можно подправить?

Не подправить, а дописать скрипт. Но смысл? Если уже выложены такие скрипты, все что ненужно выводить просто стираем
Как убрать?

**********

0
49
aleksanders @aleksanders
Ну вот, вроде сам нахимичил, только почему-то не переходит с потока /radio на поток /nonstop! В чём я сделал ошибку?

  1. <?php
  2. $data = file_get_contents('http://xoiniki.com:88/status.xsl?mount=/radio');
  3. function antara($string, $start, $end){
  4. $string = " ".$string;
  5. $ini = strpos($string,$start);
  6. if ($ini == 0) return "";
  7. $ini += strlen($start);
  8. $len = strpos($string,$end,$ini) - $ini;
  9. return substr($string,$ini,$len);
  10. }
  11. if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>") ==''){$data = file_get_contents('http://localhost:88/status.xsl?mount=/nonstop');}
  12. $Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
  13. $Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
  14. $Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;
  15. $staylst=$Curr_listens+1;
  16. echo ''.$Current_song.'';
  17. ?>

0
6245
Тарас @tarasian666
xoiniki.com:88
localhost:88

0
49
aleksanders @aleksanders
А ну это одно и тоже. Этот сервер и есть xoiniki.com

Пробовал ставить и там и там localhost. И пробовал xoiniki.com и там и там ставить. Радио играет в проигрывателе, но информация показывает нонстопа

Отредактировано aleksanders - 02.02.2012
0
6245
Тарас @tarasian666
ну может там не настроен loop

0
49
aleksanders @aleksanders
А что за loop? Как его настроить?

0
6245
Тарас @tarasian666
в файле hosts
127.0.0.1 localhost

0
49
aleksanders @aleksanders
ну я прописал там
127.0.0.1 localhost
127.0.0.1 xoiniki.com

И что интересно, что если ставлю другую радиостанцию вместо потока /radio ( с другова сайта), а нонстоп свой, то всё нормально работает. Может у меня какие ошибки есть в конфиге icecast? Или от этого не зависит?

0
6245
Тарас @tarasian666
конфиг тут ни причем

xoiniki.com например у меня вообще не открывается

0
49
aleksanders @aleksanders
Он у вас не откроется, т.к. в Беларуси сервера закрыты от внешнего порта. По сайтам и серверам лазить могут только пользователи Беларуси.

Хоть убейте, в информере показывает постоянно нонстоп только и всё.

Отредактировано aleksanders - 02.02.2012
0
6245
Тарас @tarasian666

должно же быть **********

может быть у вас еще много таких ошибок, гадать почему не работает не вижу смысла, тут никто не экстрасенс

0
49
aleksanders @aleksanders
Так вот допустим этот ставлю, что вы дали и работает. А ставлю свой не работает.

Убираю строку
  1. if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>") ==''){$data = file_get_contents('http://localhost:88/status.xsl?mount=/nonstop');}


показывает нормально. Как только строку эту добавляю, начинает показывать только этот нонстоп.

0
95
Артур @NoExist
Возможно ту тему никто не видит, так что я решил задать вопрос и тут, простите, если причинил неудобства.

Проблема с фаллбеком

<mount>
<mount-name>/Frost.fm</mount-name>
<password>7539514682</password>
<fallback-mount>/NoExist</fallback-mount>
<fallback-override>1</fallback-override>
</mount>

<mount>
<mount-name>/NoExist</mount-name>
<password>7539514682</password>
<charset>cp1251</charset>
</mount>

Не работает.
Стандартно ицес вещает на /Frost.fm
Запускаю Сем, начинаю вещать /NoExist
А на /Frost.fm играет все та жа музыка... Айкаст я перезапускал.

0
112
Юрий @FortNoxBY
должно и так работать
но попробуй еще добавить <fallback-when-full>1</fallback-when-full>

0
888
Falcon @Falcon
NoExist пишет:

Возможно ту тему никто не видит, так что я решил задать вопрос и тут, простите, если причинил неудобства.

Проблема с фаллбеком

<mount>
<mount-name>/Frost.fm</mount-name>
<password>7539514682</password>
<fallback-mount>/NoExist</fallback-mount>
<fallback-override>1</fallback-override>
</mount>

<mount>
<mount-name>/NoExist</mount-name>
<password>7539514682</password>
<charset>cp1251</charset>
</mount>

Не работает.
Стандартно ицес вещает на /Frost.fm
Запускаю Сем, начинаю вещать /NoExist
А на /Frost.fm играет все та жа музыка... Айкаст я перезапускал.


Ices должен вещать на /NoExist, а ведущий коннектится к /Frost.fm
Слушатели также всегда должны слушать /Frost.fm

0





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

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