Тема: Не парсится информация с IceCast2

Всем привет!

В общем такая вот делема
Имеется связка Icecast 2.4.99.1 + RadioBoss.
Все это стоит на VDS сервере с windows server 2012 R2

Все работает замечательно, НО!

Не парсится название трека с status.xsl

Система такая...
В корне сайта находится файл PHP с кодом:

<?php

    $fl = file_get_contents('http://ra-light.ru:8000/status.xsl?mount=/light_pop');

    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);
    }

    $song = antara($fl, "<td>Current Song:</td>\n<td class=\"streamdata\">", "</td>");
    echo  '<span class="track">'.$song.'</span>';
?>

Дальше на самом сайте стоит код парсинга AJAX с файла php через интервал времени:

    <script type="text/javascript">
        $.ajax({
        url: 'прямой адрес к PHP файлу', 
        success: function(data) {
        $('#trackholder').html(data); 
        }});
        function refresh() {
        $.ajax({
        url: 'прямой адрес к PHP файлу', 
        success: function(data) {
        $('#trackholder').html(data); 
        }});
        };
        setInterval(refresh, 5000);
    </script>

Думал AJAX глючит, открыв сам файл pop.php в браузере тоже пусто.


Так вот, что это за хрень? и как с ней бороться?

P.S. в PHP и т.д. я не особо силен

Re: Не парсится информация с IceCast2

прямой адрес к PHP файлу - это  http://ra-light.ru/php_radio/pop.php

3

Re: Не парсится информация с IceCast2

Если бы Вы хотя бы понимали что делаете, то в первую очередь посмотрели бы код страницы которую парсите, а там черным по белому:

<!-- WARNING:
     DO NOT ATTEMPT TO PARSE ICECAST HTML OUTPUT!
     The web interface may change completely between releases.
     If you have a need for automatic processing of server data,
     please read the appropriate documentation. Latest docs:
     http://icecast.org/docs/icecast-latest/icecast2_stats.html
    -->

как забрать и вывести данные с status-json.xsl я уже описывал, потрудитесь хотя бы по форуму поискать.

Re: Не парсится информация с IceCast2

Нашел на форуме пример кода парсинга  со status-json.xsl

<script>
function show_station_title() {
$.getJSON('http://ra-light.ru:8000/status-json.xsl?mount=/nonstop', function(data) {
$('.track_title').html(data.icestats.source.title);
})
}
$(document).ready(function() {
show_station_title();
setInterval('show_station_title()', 3000)
});
</script>

Методом тыка я понял как вытянуть описание с той же страницы

<script>
function show_station_server_description() {
$.getJSON('мой сайт/status-json.xsl?mount=/nonstop', function(data) {
$('.track').html(data.icestats.source.server_description);
})
}
$(document).ready(function() {
show_station_server_description();
setInterval('show_station_server_description()', 3000)
});
</script>


Только до меня только сейчас дошло что мне то нужно в этом коде сделть как-то переключение между маунтами для вывода инфы.
То есть у меня основной маунт live, а nonstop это fallback-mount.

Музыка то переключается, все отлично. Но когда live не активен, а играет nonstop, то на live попросту инфы нет. Точнее есть, но не та, что нужна:

{"icestats":{"admin":"icemaster@localhost","host":"localhost","location":"Earth","server_id":"Icecast 2.4.99.1","server_start":"Mon, 10 Aug 2015 09:10:35 -0700","server_start_iso8601":"2015-08-10T09:10:35-0700","authentication":[null,null,null]}}

Как быть???

Re: Не парсится информация с IceCast2

Ну помогите, пожалуйста!

6

Re: Не парсится информация с IceCast2

Спарсить live, при отсутствии инфы - парсить nonstop

// Парсим лайв

if( !data.icestats.source || !data.icestats.source.server_description )
{
    // Парсим nonstop
}

Re: Не парсится информация с IceCast2

пишет Leff27:

Спарсить live, при отсутствии инфы - парсить nonstop

// Парсим лайв

if( !data.icestats.source || !data.icestats.source.server_description )
{
    // Парсим nonstop
}

немного не понял... sad

8

Re: Не парсится информация с IceCast2

<script>
    function show_station_server_description()
    {
        $.getJSON('адрес/status-json.xsl?mount=/live', function(data) {
            if( !data.icestats || !data.icestats.source || !data.icestats.source.server_description )
            {
                $.getJSON('адрес/status-json.xsl?mount=/nonstop', function(data) {
                    if( !data.icestats || !data.icestats.source || !data.icestats.source.server_description )
                        $('.track').html( 'Поток выключен' );
                    else
                        $('.track').html(data.icestats.source.server_description);
                });
            }
            else
                $('.track').html(data.icestats.source.server_description);
        });
    }

$(document).ready(function() {
show_station_server_description();
setInterval('show_station_server_description()', 3000)
});
</script>

Re: Не парсится информация с IceCast2

Спасибо вам большое!