Проект называется «MusicBroadcast» (рус. «Музыкальное вещание»).
«MusicBroadcast» — это небольшой проект, предоставляющий список ретранслируемых радио и музыкальных станций в локальную сеть. В качестве сервера ретранслятора использовался open source (открытое программное обеспечение) Icecast2 сервер под операционную систему Windows XP.
После выбора сервера был разобран конфиг и добавлено несколько радиостанций, которые вещались в интернете. О настройках Icecast2 сервера вы можете по читать в интернете.
После удачного тестирования, потребовалось создать веб-проект, который бы помогал пользователям сети прослушивать радиостанции, скачивать плыйлисты со станциями в различных форматах, для различных аудио и медияплеров, показывал играющую композицию и количество человек на радиостанциях.
Для создания проект потребовалось создать и добавить файл с разобронной информацией, у Icecast2 сервера есть уже готовый веб-интерфейс, но у него мрачный внешний вид, можно было его изменить, но знаний в xsl нет. Пришлось выкручиваться, был создан файл в папке /icecast2/web/, в котором в более удобном, для распарсивания, образом были размещены данные.
Структура файла, выглядит следующим образом:
Дело оставалось в организации сайта и скрипта собирающего нужную нам информацию. Созданная функция является примером, данные, которые выводятся на веб-сайте будут заноситься в базу данных.
«MusicBroadcast» — это небольшой проект, предоставляющий список ретранслируемых радио и музыкальных станций в локальную сеть. В качестве сервера ретранслятора использовался open source (открытое программное обеспечение) Icecast2 сервер под операционную систему Windows XP.
Использовался Icecast2 для сервера ретранслятора потому что, это бесплатный проект подходящий для ретрансляции множества радиостанций.
После выбора сервера был разобран конфиг и добавлено несколько радиостанций, которые вещались в интернете. О настройках Icecast2 сервера вы можете по читать в интернете.
После удачного тестирования, потребовалось создать веб-проект, который бы помогал пользователям сети прослушивать радиостанции, скачивать плыйлисты со станциями в различных форматах, для различных аудио и медияплеров, показывал играющую композицию и количество человек на радиостанциях.
Для создания проект потребовалось создать и добавить файл с разобронной информацией, у Icecast2 сервера есть уже готовый веб-интерфейс, но у него мрачный внешний вид, можно было его изменить, но знаний в xsl нет. Пришлось выкручиваться, был создан файл в папке /icecast2/web/, в котором в более удобном, для распарсивания, образом были размещены данные.
Структура файла, выглядит следующим образом:
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" ><xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" /><xsl:template match = "/icestats" ><xsl:for-each select="source">^<xsl:value-of select="@mount" />|<xsl:value-of select="server_name" />|<xsl:value-of select="server_description" />|<xsl:value-of select="server_type" />|<xsl:value-of select="bitrate" />|<xsl:value-of select="quality" />|<xsl:value-of select="video_quality" />|<xsl:value-of select="frame_size" />|<xsl:value-of select="frame_rate" />|<xsl:value-of select="listeners" />|<xsl:value-of select="listener_peak" />|<xsl:value-of select="genre" />|<xsl:value-of select="server_url" />|<xsl:value-of select="artist" />|<xsl:value-of select="title" />|^</xsl:for-each></xsl:template></xsl:stylesheet>
*намерено были удалены все переходы строк, за не надобностью.
Дело оставалось в организации сайта и скрипта собирающего нужную нам информацию. Созданная функция является примером, данные, которые выводятся на веб-сайте будут заноситься в базу данных.
function radio_mon($addr, $port, $path){ $rn = chr(13).chr(10); // это \r\n $f = fsockopen($addr, $port, $errno, $errstr, 1) or die("$errstr ($errno)\n"); fwrite($f, 'GET '.$path.' HTTP/1.1'.$rn.'Host: '.$addr.''.$rn.'Connection: close'.$rn.$rn); while (!feof($f)) $str .= fgets($f, 84096); $radio = explode('^', $str); $str = ''; for ($i=0; $i<=count($radio); $i++){ $p = explode('|',$radio[$i]); if (strlen($p[1]) > 1) { $str .= '<a href="http:// '.$addr.':'.$port.str_replace('"','',$p[0]).'" target="_blank">'. ''.$p[1].'</a>('.$p[14].')'.$p[9].''; } } return $str; }