ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
7   •   Посмотреть все темы

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

 

8
Тёма @Tyoma_Glazunov
Всем привет!

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

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

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

Система такая...
В корне сайта находится файл PHP с кодом:
  1.  
  2. <?php
  3. $fl = file_get_contents('http://ra-light.ru:8000/status.xsl?mount=/light_pop');
  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. $song = antara($fl, "<td>Current Song:</td>\n<td class=\"streamdata\">", "</td>");
  13. echo '<span class="track">'.$song.'</span>';
  14. ?>


Дальше на самом сайте стоит код парсинга AJAX с файла php через интервал времени:
  1.  
  2. <script type="text/javascript">
  3. $.ajax({
  4. url: 'прямой адрес к PHP файлу',
  5. success: function(data) {
  6. $('#trackholder').html(data);
  7. }});
  8. function refresh() {
  9. $.ajax({
  10. url: 'прямой адрес к PHP файлу',
  11. success: function(data) {
  12. $('#trackholder').html(data);
  13. }});
  14. };
  15. setInterval(refresh, 5000);
  16. </script>


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


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


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

0
8
Тёма @Tyoma_Glazunov
прямой адрес к PHP файлу - это **********

0
382
Grigorij @gyurgin_1
Если бы Вы хотя бы понимали что делаете, то в первую очередь посмотрели бы код страницы которую парсите, а там черным по белому:
  1. <!-- WARNING:
  2. DO NOT ATTEMPT TO PARSE ICECAST HTML OUTPUT!
  3. The web interface may change completely between releases.
  4. If you have a need for automatic processing of server data,
  5. please read the appropriate documentation. Latest docs:
  6. **********
  7. -->

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

0
8
Тёма @Tyoma_Glazunov
Нашел на форуме пример кода парсинга со status-json.xsl
  1. <script>
  2. function show_station_title() {
  3. $.getJSON('http://ra-light.ru:8000/status-json.xsl?mount=/nonstop', function(data) {
  4. $('.track_title').html(data.icestats.source.title);
  5. })
  6. }
  7. $(document).ready(function() {
  8. show_station_title();
  9. setInterval('show_station_title()', 3000)
  10. });
  11. </script>


Методом тыка я понял как вытянуть описание с той же страницы
  1. <script>
  2. function show_station_server_description() {
  3. $.getJSON('мой сайт/status-json.xsl?mount=/nonstop', function(data) {
  4. $('.track').html(data.icestats.source.server_description);
  5. })
  6. }
  7. $(document).ready(function() {
  8. show_station_server_description();
  9. setInterval('show_station_server_description()', 3000)
  10. });
  11. </script>




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

Музыка то переключается, все отлично. Но когда live не активен, а играет nonstop, то на live попросту инфы нет. Точнее есть, но не та, что нужна:
  1. {"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]}}


Как быть???

0
8
Тёма @Tyoma_Glazunov
Ну помогите, пожалуйста!

0
727
Leff27 @Leff27
Спарсить live, при отсутствии инфы - парсить nonstop
  1.  
  2. // Парсим лайв
  3. if( !data.icestats.source || !data.icestats.source.server_description )
  4. {
  5. // Парсим nonstop
  6. }

0
8
Тёма @Tyoma_Glazunov
Leff27 пишет:

Спарсить live, при отсутствии инфы - парсить nonstop
  1.  
  2. // Парсим лайв
  3. if( !data.icestats.source || !data.icestats.source.server_description )
  4. {
  5. // Парсим nonstop
  6. }


немного не понял... :(

0
727
Leff27 @Leff27
  1.  
  2. <script>
  3. function show_station_server_description()
  4. {
  5. $.getJSON('адрес/status-json.xsl?mount=/live', function(data) {
  6. if( !data.icestats || !data.icestats.source || !data.icestats.source.server_description )
  7. {
  8. $.getJSON('адрес/status-json.xsl?mount=/nonstop', function(data) {
  9. if( !data.icestats || !data.icestats.source || !data.icestats.source.server_description )
  10. $('.track').html( 'Поток выключен' );
  11. else
  12. $('.track').html(data.icestats.source.server_description);
  13. });
  14. }
  15. else
  16. $('.track').html(data.icestats.source.server_description);
  17. });
  18. }
  19. $(document).ready(function() {
  20. show_station_server_description();
  21. setInterval('show_station_server_description()', 3000)
  22. });
  23. </script>

0
8
Тёма @Tyoma_Glazunov
Спасибо вам большое!

0





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

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