601

Re: Скрипты для Icecast

<?php

    $data = file_get_contents('http://localhost:88/status.xsl?mount=/live');

    function antara($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
    }

if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>")  ==''){$data = file_get_contents('http://localhost:88/status.xsl?mount=/nonstop');}
    $data = iconv("utf-8", "cp1251", $data);
    $title = antara($data, "Stream Title:</td>\n<td class=\"streamdata\">","</td>");
    $description = antara($data, "Stream Description:</td>\n<td class=\"streamdata\">","</td>");
    $content_type = antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>");
    $Mount_started = antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>");
    $Bitrate = antara($data, "Bitrate:</td>\n<td class=\"streamdata\">","</td>");
    $Current_listeners = antara($data, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
    $Peak_listeners = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
    $Stream_genre = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
    $Stream_url = antara($data, "Stream URL:</td>\n<td class=\"streamdata\">","</td>");
    $Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
    $hellp_curr_listeners = antara($hellp, "Сейчас слушают:</td>\n<td class=\"streamdata\">","</td>");
    $hellp_peak_listeners = antara($hellp, "Максимум было</td>\n<td class=\"streamdata\">","</td>");
    $Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
    $Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;

    $staylst=$Curr_listens+1;
    echo '<span style="font-size: 0.72em; font-family:Trebuchet MS, Tahoma, Arial, sans-serif; color:#3090c3"><b>Название радио:</b> '.$title.' <br>
    <b>За пультом:</b> '.$description.' <br>
    <b>Битрейт:</b> '.$Bitrate.'  <br>
    <b>Сейчас слушают:</b> '.$Curr_listens.' <br>
    <b>Максимум слушало:</b> '.$Peak_listens.' <br>
    <b>Сейчас в эфире:</b> '.$Current_song.' <br>
    <br>
    <center><input type="button" value="Слушать радио" onclick="location.href=\'http://xoiniki.com:88/live.m3u\'" /></center>';
    ?>

602

Re: Скрипты для Icecast

пишет tarasian666:

насчет подсчета слушателей - а вдруг на сервере не все маунты ваши  или не все считать надо

<?php
//данные для парсинга слушателей всех маунтов
//можно написать их здесь сколько угодно
$mount[0] = '[url]http://188.40.124.23:8206/status2.xsl?mount=/radio[/url]';
$mount[1] = '[url]http://188.40.124.23:8206/status2.xsl?mount=/playlist[/url]';
$mount[2] = '[url]http://188.40.124.23:8206/status2.xsl?mount=/nonstop[/url]';

//считаем сколько у нас маунтов с которых считаем слушателей
$mounts = count($mount);

//данные для парсинга плейлистов для получения текущего исполнителя и песни и описания потока
//записываем их в таком порядке: сперва прямой эфир, потом фоллбэки
//можно написать их здесь сколько угодно
$xml[0] = "[url]http://188.40.124.23:8206/radio.xspf[/url]";
$xml[1] = "[url]http://188.40.124.23:8206/playlist.xspf[/url]";
$xml[2] = "[url]http://188.40.124.23:8206/nonstop.xspf[/url]";

//считаем сколько у нас маунтов с которых берем теги
$xmls = count($xml);

//считаем всех слушателей
$i = 0;
while($i<$mounts)
{
$text= file_get_contents($mount[$i]);
$mass=explode(",", $text);
$listens += $mass [14];
$i ++;
}

//парсим по очереди все маунты пока не добьемся положительного результата
$i = 0;
while($stream['descr'] =='')
{
    $xml1 = simplexml_load_file($xml[$i]);
        //обращение к xspf файлу текущего потока
        $stream['creator'] = $xml1->trackList->track->creator;
        //выбираем значение из <trackList><track><creator>
        $stream['title'] = $xml1->trackList->track->title;
        $ano = $xml1->trackList->track->annotation;
        //выбираем значение из <trackList><track><annotation>
        $mss=explode("\n", $ano);
        //разбиваем знаечение на масив (т.к. там много чего а нам надо тока строку "Stream Description")
        $stream['descr']=substr($mss[1],20);
        //строка "Stream Description" вторая, (не забываем, что счет с нуля, т.е. это будет 1)
        //берем значение начиная с 20 символа чтобы не захватывать "Stream Description:"
$i ++;
//если все перепарсили а данных нет останавливаеся с ошибкой
if($i>$xmls){
$stream['descr'] = "offline";
}
}

include "max.php"; //для отображения пикового значения слушателей
if ($listens>$max)
        {
            $txtout="<?php\r\n".'$max='.$listens. ";\r\n?>";
            $fp = fopen ("max.php", "w"); 
            fwrite($fp,$txtout); 
            fclose($fp);
            $max=$listens;
        }
    
    echo $stream['creator'] . " - "; // вывод имени исполнителя   
    echo $stream['title'] . "<br>"; //вывод названия песни
    echo "Слушателей: ".$listens . "<br>"; //вывод кол-ва слушателей
    //echo "Max listens: ".$max . "<br>"; //вывод пикового к-ва слушателей, раскомментировать, если нужен
    echo $stream['descr'] . "<br>"; //вывод описания текущего потока
?>

603

Re: Скрипты для Icecast

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

Отредактировано aleksanders (02-02-2012 17:54:09)

604

Re: Скрипты для Icecast

<?php
$file_name='http://www.domain.com:8000/status2.xsl?mount=/listen';
$r=fopen($file_name,'r');
$text=fread($r,1000);
fclose($r);
$mass=explode(",", $text);
$current=$mass [16];
echo $current;
?>

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

Отредактировано tarasian666 (02-02-2012 17:57:30)

605

Re: Скрипты для Icecast

Не переходит с одного маунта на второй, если первый отключён. Как можно подправить?

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

Отредактировано aleksanders (02-02-2012 18:28:47)

606

Re: Скрипты для Icecast

Как можно подправить?

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

Как убрать?

http://php.net/manual/en/function.substr.php

607

Re: Скрипты для Icecast

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

<?php

    $data = file_get_contents('http://xoiniki.com:88/status.xsl?mount=/radio');
   
    function antara($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
    }

if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>")  ==''){$data = file_get_contents('http://localhost:88/status.xsl?mount=/nonstop');}
    
    $Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
    $Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
    $Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;
    $staylst=$Curr_listens+1;
    echo ''.$Current_song.'';
?>

608

Re: Скрипты для Icecast

xoiniki.com:88
localhost:88

609

Re: Скрипты для Icecast

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

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

Отредактировано aleksanders (02-02-2012 19:53:54)

610

Re: Скрипты для Icecast

ну может там не настроен loop

611

Re: Скрипты для Icecast

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

612

Re: Скрипты для Icecast

в файле hosts
127.0.0.1       localhost

613

Re: Скрипты для Icecast

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

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

614

Re: Скрипты для Icecast

конфиг тут ни причем

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

615

Re: Скрипты для Icecast

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

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

Отредактировано aleksanders (02-02-2012 22:56:10)

616

Re: Скрипты для Icecast

должно же быть http://s1.radio-hoster.ru:8000/status.x … 99_nonstop

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

617

Re: Скрипты для Icecast

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

Убираю строку

if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>")  ==''){$data = file_get_contents('http://localhost:88/status.xsl?mount=/nonstop');}

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

618

Re: Скрипты для Icecast

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

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

<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 играет все та жа музыка... Айкаст я перезапускал.

619

Re: Скрипты для Icecast

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

Пишу в спешке. Могут быть очепятки
Сайт за 50$. За 2 дня...

620

Re: Скрипты для Icecast

пишет 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

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

621

Re: Скрипты для Icecast

Falcon, FortNoxBY Не работает sad

622

Re: Скрипты для Icecast

пишет aleksanders:

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

Убираю строку

if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>")  ==''){$data = file_get_contents('http://localhost:88/status.xsl?mount=/nonstop');}

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

значит не совпадает строка Mount started:</td>\n<td class=\"streamdata\"> с вашим исходным кодом status.xsl
в kh нет перехода на новую строку, возможно убрав \n заработает
я проверял на trunk где исходный код status.xsl намного красивей и акуратней ))

623

Re: Скрипты для Icecast

Пробовал отсюда "Mount started:</td>\n<td class=\"streamdata\">" убрать \n и ничего не вышло.
Я так понимаю, что проблема будет с этим кодом  $data = file_get_contents('http://127.0.0.1:88/status.xsl?mount=/radio');
т.к. когда отключаешь поток nonstop, то первый поток, который вещает DJ с компа не работает. Белый лист показывает и всё.
А если включить nonstop, то соответственно и  показывает нонстоп только. Получается не может считать информацию с первого потока.

624

Re: Скрипты для Icecast

А...то же самое и у меня(((.
Сразу не тестировал, а тут сам решил проверить и тоже не хочет брать исполнителя с маунта live.
Убрал \n но всеровно не работает.
kh 31 но файл status.xsl с оригинальной сборки айса

<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/windows-1251" />
<xsl:template match = "/icestats" >
<html>
<head>
<title>Nазвание радио</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
<h2>&#xA0;&#xA0;&#xA0;название радио через пробелы отнес а то текст на картинке получается</h2>
<br />
<!--mount point stats-->
<xsl:for-each select="source">
<xsl:choose>
<xsl:when test="listeners">
<div class="roundcont">
<div class="roundtop">
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
</div>
<div class="newscontent">
    <div class="streamheader">
        <table cellspacing="0" cellpadding="0">
            <colgroup align="left" />
            <colgroup align="right" width="300" />
            <tr>
                <td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
                <xsl:choose>
                    <xsl:when test="authenticator">
                        <td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
                    </xsl:when>
                    <xsl:otherwise>
                        <td align="right"> <a href="{@mount}.m3u">Play</a></td>
                    </xsl:otherwise>
                </xsl:choose>
        </tr></table>
    </div>
<table border="0" cellpadding="4">
<xsl:if test="server_name">
<tr><td>Stream Title:</td><td class="streamdata"> <xsl:value-of select="server_name" /></td></tr>
</xsl:if>
<xsl:if test="server_description">
<tr><td>Stream Description:</td><td class="streamdata"> <xsl:value-of select="server_description" /></td></tr>
</xsl:if>
<xsl:if test="bitrate">
<tr><td>Bitrate:</td><td class="streamdata"> <xsl:value-of select="bitrate" /></td></tr>
</xsl:if>
<xsl:if test="quality">
<tr><td>Quality:</td><td class="streamdata"> <xsl:value-of select="quality" /></td></tr>
</xsl:if>
<xsl:if test="video_quality">
<tr><td>Video Quality:</td><td class="streamdata"> <xsl:value-of select="video_quality" /></td></tr>
</xsl:if>
<xsl:if test="frame_size">
<tr><td>Framesize:</td><td class="streamdata"> <xsl:value-of select="frame_size" /></td></tr>
</xsl:if>
<xsl:if test="frame_rate">
<tr><td>Framerate:</td><td class="streamdata"> <xsl:value-of select="frame_rate" /></td></tr>
</xsl:if>
<xsl:if test="genre">
<tr><td>Stream Genre:</td><td class="streamdata"> <xsl:value-of select="genre" /></td></tr>
</xsl:if>
<xsl:if test="listeners">
<tr><td>Current Listeners:</td><td class="streamdata"> <xsl:value-of select="listeners" /></td></tr>
</xsl:if>
<xsl:if test="server_url">
<tr><td>Stream URL:</td><td class="streamdata"> <a target="_blank" href="{server_url}"><xsl:value-of select="server_url" /></a></td></tr>
</xsl:if>
<tr><td>Current Song:</td><td class="streamdata"> 
<xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" /></td></tr>
</table>
</div>
<div class="roundbottom">
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
</div>
</div>
<br />
<br />
</xsl:when>
<xsl:otherwise>
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
</xsl:otherwise>
</xsl:choose>

</xsl:for-each>
<xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;


<div class="poster">тут я немного изменил текст <a class="nav" target="_blank" href="вставил свой сайт">имясайта</a></div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Пишу в спешке. Могут быть очепятки
Сайт за 50$. За 2 дня...

625

Re: Скрипты для Icecast

проблема не тут  $data = file_get_contents('http://127.0.0.1:88/status.xsl?mount=/radio');
а тут antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>")  ==''

FortNoxBY как видишь в твоем status.xsl даже нет Mount started: делайте выводы и правьте скрипт под себя