За последние 24 часа нас посетили 17849 программистов и 1637 роботов. Сейчас ищут 2018 программистов ...

Help me... И с меня пивас

Тема в разделе "Сделайте за меня", создана пользователем bombaleilo, 12 авг 2014.

  1. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Камрады, хочу городской сайт сделать и запихнуть туда наши радиостанции.
    Радиостанции в основном на Icecast2, есть парсер ice2 status v1.1, код которого:
    Код (Text):
    1. <?php
    2. ///////////////////////////////////////////////////
    3. //icecast2 status refined v1.1 xsl refined
    4. // Author: that dude over there at casterclub.com
    5. // Bugs: post in the forums at casterclub
    6. //////////////////////////////////////////////////
    7. //start the madness already
    8. //////////////////////////////////////////////////
    9. //start the configurations
    10. $ip = "cast.europaplus.ua";               //your server address in the form of mydomain.com or 192.161.1.1
    11. $port = "8000";             //the port of your server
    12. $ice2_station = "europaplus";     // your station or stream name
    13.  
    14.  
    15.  
    16.  
    17.  
    18.  
    19. ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    20. //opening socket
    21. $fp = fsockopen($ip, $port, &$errno, &$errstr, 30); //open connection
    22. if(!$fp) {
    23.     $success=2;  //set if no connection
    24.  
    25.  
    26.  
    27. //edit html to fit your stations site, this display is for offline status
    28. echo'<table>
    29.      <tr>
    30.         <td width="100%" colspan="2">
    31.         <img border="0" src="images/offline.gif" width="22" height="22">
    32.         <b><font face="Arial" size="2" color="#FF0000">'.$ice2_station.' is currently offline</font></b></td>
    33.       </tr>
    34. </table>';
    35. }
    36.  
    37.  
    38.  
    39.  
    40. if($success!=2){ //if connection
    41.  fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
    42.  while(!feof($fp)) {
    43.   $page .= fgets($fp, 1000);
    44.  }
    45.  fclose($fp); //close connection
    46.  $page = ereg_replace(".*<pre>", "", $page); //extract data
    47.  $page = ereg_replace("</pre>.*", ",", $page); //extract data
    48.  
    49.  $numbers = explode(",",$page); //bomb it and extract data
    50.  $mount = $numbers[0];
    51.  $connections = $numbers[1];
    52.  $stream_n = $numbers[2];
    53.  $listeners = $numbers[3];
    54.  $desc = $numbers[4];
    55.  $cur_song = $numbers[5];
    56.  $str_url = $numbers[6];
    57.  $client_info = $numbers[7];
    58.  $test1 = $numbers[8];   //set vars that where empty and still dont know what the heck those values are ;-)
    59.  $test2 = $numbers[9];  //set vars that where empty and still dont know what the heck those values are ;-)
    60.  $test3 = $numbers[10];   //set vars that where empty and still dont know what the heck those values are ;-)
    61.  $mount = $numbers[11];
    62.  $connections = $numbers[12];
    63.  $station =$numbers[13];
    64.  $listeners = $numbers[14];
    65.  $description = $numbers[15];
    66.  $cur_song = $numbers[16];
    67.  $www_url  = $numbers[17];
    68.  
    69.  
    70. //edit html to fit your stations site, this display is for online status
    71. echo'
    72. <table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
    73. <tr>
    74.  <td width="100%"><b><font face="Arial" size="2">
    75. <img border="0" src="images/ice2_status/icecast.gif" width="22" height="22">
    76.         Powered By Icecast2</font></b></td>
    77.       </tr>
    78.       <tr>
    79.         <td width="100%"><b><font face="Arial" size="1"><a href="'.$www_url.'">
    80.         '.$station.'</a> - '.$description.'</font></b></td>
    81.       </tr>
    82.       <tr>
    83.         <td width="100%"><b><font face="Arial" size="1">
    84.         <img border="0" src="images/ice2_status/listeners.gif" width="22" height="18">
    85.         Listeners: '.$listeners.'</font></b></td>
    86.       </tr>
    87.       <tr>
    88.         <td width="100%"><b><font face="Arial" size="1">
    89.         <img border="0" src="images/ice2_status/tunes.gif" width="21" height="21">
    90.         Now Playing: '.$cur_song.'</font></b></td>
    91.       </tr>
    92.       <tr>
    93.         <td width="100%"><b><font face="Arial" size="2">
    94.         <img border="0" src="images/ice2_status/play.gif" width="15" height="15">
    95.         <a target="_blank" href="http://'.$ip.':'.$port.''.$mount.'.m3u">Listen Now</a></font></b></td>
    96.       </tr>
    97.            </table>';
    98. }
    99. ?>
    Код якобы работает и открывает Первую станцию, и 2 ошибки

    Deprecated: Function ereg_replace() is deprecated in Z:\home\qwas.sa\www\qw\ice2_status.php on line 46

    Deprecated: Function ereg_replace() is deprecated in Z:\home\qwas.sa\www\qw\ice2_status.php on line 47

    Вопрос заключается в том как это поправить? что б ошибок этих небыло и код выводил ту станцию, которую мне нужно? С меня пивасик!) Ну или печенька)
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.797
    Симпатии:
    1.331
    Адрес:
    Лень
    что выдает $page перед ерег реплай?
     
  3. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Прошу прощения но Переменная выдала толи масив, толи хз... Вот код:
    Код (Text):
    1. MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL Global,Client:20026852 Source: ,,5435,, /106fm,,,42,, - ,/106fm.aac,,,1,, - ,/avtoradio,,,385,, - Программа - Disco 80's Back 1.25,/avtoradio.aac,,,7,, - Программа - Disco 80's Back 1.25,/europaplus,,,2368,, - NICKELBACK - IF EVERYONE CARED,/europaplus.aac,,,21,, - NICKELBACK - IF EVERYONE CARED,/europaplus128.aac,,,0,, - NICKELBACK - IF EVERYONE CARED,/europaplus32.aac,,,0,, - NICKELBACK - IF EVERYONE CARED,/jamfm,,,190,, - Точка росы - Маша,/jamfm.aac,,,2,, - Точка росы - Маша,/nashe,,,511,, - Нюша - Выше,/nashe.aac,,,5,, - Нюша - Выше,/retro,,,389,, - GLORIA GAYNOR - REACH OUT (I'LL BE THERE),/retro.aac,,,11,, - GLORIA GAYNOR - REACH OUT (I'LL BE THERE),/super,,,1509,, - ,,
    Добавлено спустя 3 минуты 10 секунд:
    Вот страница откуда беру европа плюс http://cast.europaplus.ua/
    Другую станцию наверно придётся брать с другого источника

    Добавлено спустя 8 минут 43 секунды:
    Всем спасибо, с 46 и 47 строками разобрался, ошибка выводится потому, что ф-ция устарела, это не критично главное что работает, вопрос теперь в том как попасть с 1 радиостанции в списке на нужную?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну, это значит, что в последующих обновлениях эту функцию исключат и работать перестанет.
     
  5. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Это я понял, к тому времени надеюсь что-то изменится уже. Меня интересует как вывести по конкретной станции инфо, а не первую из списка?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А можно я не буду читать твой код а просто поспрашиваю? в какой переменной хранится инфо по станциям?
     
  7. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    $page я это понял, но оно ж первую станцию вытягивает, а не конкретную по счёту
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ereg_ функции устарели и использовать их нельзя. об этом в ошибке и сказано.
    замени их на preg_ аналоги. еще регулярки оберни в /
     
  9. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Всё, я походу опять напартачил=( Вот код
    Код (Text):
    1. <?php
    2. ///////////////////////////////////////////////////
    3. //icecast2 status refined v1.1 xsl refined
    4. // Author: that dude over there at casterclub.com
    5. // Bugs: post in the forums at casterclub
    6. //////////////////////////////////////////////////
    7. //start the madness already
    8. //////////////////////////////////////////////////
    9. //start the configurations
    10. $ip = "cast.europaplus.ua";               //your server address in the form of mydomain.com or 192.161.1.1
    11. $port = "8000";             //the port of your server
    12. $ice2_station = "RetroFM";     // your station or stream name
    13.  
    14.  
    15.  
    16.  
    17.  
    18.  
    19. ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    20. //opening socket
    21. $fp = fsockopen($ip, $port, &$errno, &$errstr, 30); //open connection
    22. if(!$fp) {
    23.     $success=2;  //set if no connection
    24.  
    25.  
    26.  
    27. //edit html to fit your stations site, this display is for offline status
    28. echo'<table>
    29.      <tr>
    30.         <td width="100%" colspan="2">
    31.         <img border="0" src="images/offline.gif" width="22" height="22">
    32.         <b><font face="Arial" size="2" color="#FF0000">'.$ice2_station.' is currently offline</font></b></td>
    33.       </tr>
    34. </table>';
    35. }
    36.  
    37.  
    38.  
    39.  
    40. if($success!=2){ //if connection
    41.  fputs($fp,"GET /status.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
    42.  while(!feof($fp)) {
    43.   $page .= fgets($fp, 1000);
    44.  }
    45.  fclose($fp); //close connection
    46.  $page = preg_replace("/.*<pre>/", "", $page); //extract data
    47.  $page = preg_replace("/<\/pre>.*/", "</table>", $page); //extract data
    48.  
    49.  $numbers = explode("</table>",$page); //bomb it and extract data
    50.  $mount = $numbers[0];
    51.  $connections = $numbers[1];
    52.  $stream_n = $numbers[2];
    53.  $listeners = $numbers[3];
    54.  $desc = $numbers[4];
    55.  $cur_song = $numbers[5];
    56.  $str_url = $numbers[6];
    57.  $client_info = $numbers[7];
    58.  $test1 = $numbers[8];   //set vars that where empty and still dont know what the heck those values are ;-)
    59.  $test2 = $numbers[9];  //set vars that where empty and still dont know what the heck those values are ;-)
    60.  $test3 = $numbers[10];   //set vars that where empty and still dont know what the heck those values are ;-)
    61.  $mount = $numbers[11];
    62.  $connections = $numbers[12];
    63.  $station =$numbers[13];
    64.  $listeners = $numbers[14];
    65.  $description = $numbers[15];
    66.  $cur_song = $numbers[16];
    67.  $www_url  = $numbers[17];
    68.  
    69.  
    70. //edit html to fit your stations site, this display is for online status
    71. echo'
    72. <table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
    73. <tr>
    74.  <td width="100%"><b><font face="Arial" size="2">
    75. <img border="0" src="images/ice2_status/icecast.gif" width="22" height="22">
    76.         Powered By Icecast2</font></b></td>
    77.       </tr>
    78.       <tr>
    79.         <td width="100%"><b><font face="Arial" size="1"><a href="'.$www_url.'">
    80.         '.$station.'</a> - '.$description.'</font></b></td>
    81.       </tr>
    82.       <tr>
    83.         <td width="100%"><b><font face="Arial" size="1">
    84.         <img border="0" src="images/ice2_status/listeners.gif" width="22" height="18">
    85.         Listeners: '.$listeners.'</font></b></td>
    86.       </tr>
    87.       <tr>
    88.         <td width="100%"><b><font face="Arial" size="1">
    89.         <img border="0" src="images/ice2_status/tunes.gif" width="21" height="21">
    90.         Now Playing: '.$cur_song.'</font></b></td>
    91.       </tr>
    92.       <tr>
    93.         <td width="100%"><b><font face="Arial" size="2">
    94.         <img border="0" src="images/ice2_status/play.gif" width="15" height="15">
    95.         <a target="_blank" href="http://'.$ip.':'.$port.''.$mount.'.m3u">Listen Now</a></font></b></td>
    96.       </tr>
    97.            </table>';          
    98.            }
    99. echo '<hr><hr><hr><hr><hr>'.$numbers[5].$numbers[4]; // выводит то что нужно НО!!!...
    100.            
    101. ?>
    Вобщем код вроде уже больше инфы нужной выводит, но опять таки...
    echo $numbers[5].$numbers[4];
    Выводит вообще по красоте то что нужно. К примеру оно мне вывело вот это:
    Код (Text):
    1. Mount Point /avtoradio
    2.  
    3. M3UXSPF
    4. Stream Title:   Avtoradio
    5. Stream Description: Avtoradio
    6. Content Type:   audio/mpeg
    7. Mount started:  Tue, 05 Aug 2014 10:47:15 +0300
    8. Bitrate:    128
    9. Current Listeners:  145
    10. Peak Listeners: 524
    11. Stream Genre:   Hits
    12. Stream URL: http://www.avtoradio.ua
    13. Current Song:   Реклама - A_Avtokarta_3_020614 #
    А как теперь эту информацию использовать. Тоесть на сайт я ж не выведу это инфо так-же... нужно заменить английские слова русскими и кое-какие пункты выводить, а некоторые упустить. Как это сделать? И как сделать что-б в текущей композиции показывало русские буквы???
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Они по строкам? substr() вырежет что нужно.
     
  11. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    А кодировка тут какой-то звездец, у них исходно на сайте Windows-1252 (не 1251!), а после вашего парсинга это уже что-то невообразимое.
    Вообще - сначала explode("\n"), потом explode("\t"), получите отдельно названия полей и отдельно значения.
     
  12. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Комрады помогайте, нуп застопорился, ждёт помощи с небес, ибо будет он похоронен, и никто уж не узнает о нём=)
    Итак, ближе к делу, переделал скрипт и вот что у меня получилось.
    Сам скрипт:
    Код (Text):
    1. <?php
    2. header('Content-Type: text/html;charset=win-1251');
    3. ///////////////////////////////////////////////////
    4. //icecast2 status refined v1.1 xsl refined
    5. // Author: that dude over there at casterclub.com
    6. // Bugs: post in the forums at casterclub
    7. //////////////////////////////////////////////////
    8. //start the madness already
    9. //////////////////////////////////////////////////
    10. //start the configurations
    11. $ip = "cast.europaplus.ua";               //your server address in the form of mydomain.com or 192.161.1.1
    12. $port = "8000";             //the port of your server
    13. $ice2_station = "RetroFM";     // your station or stream name
    14.  
    15.  
    16.  
    17.  
    18.  
    19.  
    20. ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    21. //opening socket
    22. $fp = fsockopen($ip, $port, &$errno, &$errstr, 15); //open connection
    23. if(!$fp) {
    24.     $success=2;  //set if no connection
    25.  
    26.  
    27.  
    28. //edit html to fit your stations site, this display is for offline status
    29. echo'<table>
    30.      <tr>
    31.         <td width="100%" colspan="2">
    32.         <img border="0" src="images/offline.gif" width="22" height="22">
    33.         <b><font face="Arial" size="2" color="#FF0000">'.$ice2_station.' is currently offline</font></b></td>
    34.       </tr>
    35. </table>';
    36. }
    37.  
    38.  
    39.  
    40.  
    41. if($success!=2){ //if connection
    42.  fputs($fp,"GET /status.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
    43.  while(!feof($fp)) {
    44.   $page .= fgets($fp, 1000);
    45.  }
    46.  fclose($fp); //close connection
    47.  $page = preg_replace("/.*<pre>/", "", $page); //extract data
    48.  $page = preg_replace("/<\/pre>.*/", "</table>", $page); //extract data
    49.  $numbers = explode("</table>",$page); //bomb it and extract data
    50.            }
    51. $information = explode("</td>", $numbers[20]);
    52. $nameS = $information[1];
    53. $descriptS = $information[3];
    54. $formatS = $information[5];
    55. $bitrateS = $information[9];
    56. $listenS = $information[11];
    57. $peaklistS = $information[13];
    58. $songS = $information[19];
    59. echo 'Имя:'.$nameS.'<br>Формат:'.$formatS.'<br>Битрейт:'.$bitrateS.'<br>Слушателей:'.$listenS.'<br>Песня:'.$songS;
    60. ?>
    Что показывает на странице:
    Код (Text):
    1. Имя: JamFM
    2. Формат: audio/aacp
    3. Битрейт: 128
    4. Слушателей: 5
    5. Песня: Неприкасаемые - Моя Бабушка Курит Трубку
    Что отображает, если открыть код страницы:
    Код (Text):
    1.  
    2. Имя:$testNameS<br>Формат:
    3. <td class="streamdata">audio/aacp<br>Битрейт:
    4. <td class="streamdata">128<br>Слушателей:
    5. <td class="streamdata">5<br>Песня:
    6. <td class="streamdata">Неприкасаемые - Моя Бабушка Курит ТрубкуArray
    Как убрать это - <td class="streamdata"> с кода страницы???
    И как сделать что б названия песен на русском так и отображало???
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  14. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Засем ругаеся насяйника... Не порезало... к примеру имеем в коде переменную $nameS. До ф-ции strip_tags Выводит на экран одной!!! строкой название станции, но если посмотреть код страницы, то:
    Код (Text):
    1. Имя:
    2. <td class="streamdata">JamFM<br>Формат:
    Тоесть на странице всё норм навпротив слова "Имя" название станции, а в коде что попало, после использования ф-ции ничего не изменилось=(
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    странно. тогда регулярочки.
     
  16. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Прошу прощения, а можно подробнее?
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    viewforum.php?f=18 =) но там за тебя не будут. но подскажут.
     
  18. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    А Вы б немогли мне помочь с кодировкой русских символах в названии песен и с регулярками??? Очень нужно, сам точно не справлюсь
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  20. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Потёрто, тестирую, учусь, росту, развиваюсь... Благодаря Вам, уважаемые камрады!
    Потестил ту ф-цию. неполучилось у меня=\
    Было
    Код (Text):
    1. echo 'Песня: '.$songS.'<br>';
    и выводило:
    Код (Text):
    1. Песня: СОБКО ГђВњГђВђГђВЁГђВђ - ГђВЇ Тебя Люблю<br>
    Стало:
    Код (Text):
    1. echo 'Песня    : ', iconv("UTF-8", "windows-1251//TRANSLIT", $songS), PHP_EOL;
    Выводит:
    Код (Text):
    1. Песня    : D!D
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    значит не та кодировка. теперь сиди и подбирай =)
     
  22. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Вопрос такой: У меня сайт на кодировке вин-1251, скрипт на ютф-8, может преобразовать скрипт в вин1251 и подбирать уже до вин-1251? тогда ещё вопрос что написать в
    Код (Text):
    1. echo 'Песня    : ', iconv("ххх", "windows-1251", $songS), PHP_EOL;
    Вместо ххх кодировка, а в вин-1251 больше ничего не нужно? Ну транслиты игноры и т.д.???
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не факт, что у тебя сайт в той кодировке, в которой ты думаешь :D
     
  24. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Факт;) Страницы на 1251 и сам файл в той же кодировке...
    Преобразовал скрипт в ютф-8, написал что кодировка пхп в ютф-8
    Написал так:
    Код (Text):
    1. echo 'Песня: '.$songS.'<br>';
    2. echo 'Песня    : ', iconv("UTF-8", "ISO-8859-1", $songS), PHP_EOL;
    На странице показало:
    Код (Text):
    1. Песня: АГАТА КРИСТИ - Два Корабля
    2. Песня : АГАТА КРИСТИ - Два Корабля
    И как это понимать? файл в ютф-8, скрипт в ютф-8, а перекодил в ISO-8859-1 и показывает... Как теперь с всего этого зделать 1251?) Просто преобразовать файл и вписать в хеадере пхп вместо ютф виндовс не получается=(
     
  25. bombaleilo

    bombaleilo Новичок

    С нами с:
    12 авг 2014
    Сообщения:
    38
    Симпатии:
    0
    Код (Text):
    1. $songS = $information[19];
    2. $songS = preg_replace($masivS, "", $songS);
    3. $songS = iconv("UTF-8", "ISO-8859-1", $songS);
    4. $songS = mb_convert_encoding ($songS ,"Windows-1251" , "UTF-8" );
    Как Вам такой код? не слишком нупский?)
    Уже отлично выводит название песни в win-1251=)