::: PHP.com.ua - учимся вместе. ::: ::: PHP.com.ua - учимся вместе. :::



 
   - Разработка CRM для туристического бизнес...
  - тестування по прив"язці до часу...
  - СРОЧНО! Требуется талантливый PHP програ...
  - Оплачу FLASH-сайт под ключ.
  - выборка одним запросом нескольких похожи...
  - функции верификации строк.
  - Помогите вытянуть скрипт отправки почты ...


Главная
Новости
Статьи
Шпаргалки
Файлы
О проекте
Форум
Футболки


FREEhost.com.ua - купил хостинг 10 у.е. на Begun в подарок.

iName.com.ua - регистрация доменных имен и хороший хостинг.

Библиотека программиста - нужный вам исходник или документация по необходимому для вас языку программирования.

Designclub - Клуб дизайнеров Украины.

Регистрация доменов
Хостинг

 HowtoForge.ORG.UA - Это первый Украинский ресурс развития open source программного обеспечения


Путь: Шпаргалки

Шпаргалки

Автор: - XyZ
Дата публикации - 11.05.2005
Просмотров: - 5088

Чтение информации с радио-серверов


Я думаю, многие пользователи локальных сетей и сети Интернет хоть раз в жизни сталкивались с радио-серверами на базе SHOUTcast, к которым можно приконнектится винампом и спокойно слушать музыку. И у некоторых из этих пользователей возникала мысль о том, как прочитать информацию с этих серверов. И если перед вами эта статья, то по-видимому вас тоже такая мысль посещала.
Итак перейдем конкретно к изучению возможностей SHOUTcast-сервера. Если мы в винампе нажмем Ctrl+L и введем адрес радио сервера (например url=http://www.some-server.com:8000]http://www.some-server.com:8000/url]), то мы получим обычный звуковой поток, а если мы этот же адрес введем в каком-нибудь из браузеров, то нам откроется страничка с некоторой информацией с радио сервера, такой как: количество слушателей в данный момент, максимальное количество юзеров, битрейт, название текущей композиции, историю проигранных композиций и т.д.

Всё бы хорошо, но многим бы хотелось эту информацию видеть не в виде стандартной страницы, генерируемой радио-сервером, а в виде страницы с собственным дизайном и наполнением.

Далее я приведу конкретно скрипт, читающий информацию с радио сервера. Я попытался как можно более подробно расставить комментарии, поэтому надеюсь ни у кого вопросов возникнуть не должно.


[php]
<?php

    $to 
0.05;  // таймаут для открытия сокета

function radio($radio,$port)
 {
  global 
$to;  // объявляем переменную $to внутри функции

  
@$fs=fsockopen($radio,$port,$err1,$err2,$to);  // открываем сокет на радио сервер
  
  
if ($fs)  // если сокет открыт, то…
   
{
     
// этим заголовком мы даем серверу понять то, что мы браузер а не какой-то там винамп ;) , и читаем содержимое главной страницы
    
fputs($fs,"GET / HTTP/1.0\r\nUser-Agent: Mozilla/2.0\r\n\r\n");

    
$d=fgets($fs); $d=fgets($fs); $d=fgets($fs); $d=fgets($fs);  // читаем строку с содержимым главной страницы
    
if (strpos($d,"Server is currently down"))  // если находим строку "Server is currently down", то делаем вывод, что сервер выключен
     
{
      echo 
"<font face=\"Verdana\" style=\"font-size: 11px;\">
      Радио <a href=\"http://$radio:$port\" style=\"color: #ff0000\" target=\"_blank\"><b>$radio:$port</b></a>:
      <br>В данный момент сервер не запущен
      </font>"
;  // сообщаем пользователю о том что сервер выключен
     
}
    else  
// в противном случае делаем вывод о том, что сервер включен
     
{
      
$pos=strpos($d,"kbps with");
      
$pos1=strpos($d," ",$pos+10);
      
$d=substr($d,$pos+10,$pos1-$pos-10);  // ищем и запоминаем информацию б количестве активных пользователей
      
@$fp=fsockopen($radio,$port,$err1,$err2,$to);  // открываем новый сокет
      
if ($fp)
       {
        
fputs($fp,"GET /played.html HTTP/1.0\r\nUser-Agent: Mozilla/2.0\r\n\r\n");  // опять говорим серверу, что мы браузер и читаем содержимое страницы с историей композиций - played.html
        
$s=fgets($fp); $s=fgets($fp); $s=fgets($fp); $s=fgets($fp);  // переходим к строке с необходимой информацией
        
$pos=strpos($s,"<td>Played @</td>");
        
$pos=strpos($s,"<tr><td>",$pos);
        
$pos=strpos($s,"</td><td>",$pos);
        
$pos1=strpos($s,"<td>",$pos+9);
        
$s=substr($s,$pos+9,$pos1-$pos-9);  // ищем и читаем информацию об активной композиции

        
$gt explode(">"$s);
        if (
$gt[0] == "AD")
         {
          
$s "ничего не играет";
         }  
// если активной композиции нет, делаем вывод о том, что ничего не играет

        
print "<font face=\"Verdana\" style=\"font-size: 11px;\">
        Радио <a href=\"http://$radio:$port\" target=\"_blank\" style=\"color: #ff0000\" target=\"_blank\"><b>$radio:$port</b></a>:<p>
        Сейчас на радио: <b>$s</b><br>
        Слушателей: <b>$d</b><p>
        </b>Подключиться к радио: <a href=\"http://$radio:$port/listen.pls\" target=\"_blank\"><b>listen.pls</b></a>"
;
        
// выводим информацию
       
}
     }
   }
  else  
// если нам не удалось открыть сокет, делаем вывод о том, что сервер не запущен
   
{
    print 
"<font face=\"Verdana\" style=\"font-size: 11px;\">
    Радио <a href=\"http://$radio:$port\" style=\"color: #ff0000\" target=\"_blank\"><b>$radio:$port</b></a>:
    <br>В данный момент сервер не запущен
    </font>"
;
   }
  return;
 }

radio("172.25.137.71","8000");
print 
"<hr width=\"100%\" size=\"1\" color=\"#7E2B01\">";
radio("172.25.136.30","8000");

// так вызывается функция

?>
[

/php]

Вот и вся программа. Как вы заметили, моя программа читает только информацию об количестве слушателей и активной композиции, но я думаю вам теперь не составит труда по надобности добавить сюда еще что-нибудь. Успехов!

[nb]P.S. тестировалось с SHOUTcast-сервером версии 1.9.2[/nb]



Обсудить в ФОРУМе - комментариев ()


Путь: Шпаргалки

Если вы заметили орфографическую, стилистическую или другую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Контакты Design by webFaction Ukrainian PHP Group 2004-2005