Камрады, хочу городской сайт сделать и запихнуть туда наши радиостанции. Радиостанции в основном на Icecast2, есть парсер ice2 status v1.1, код которого: Код (Text): <?php /////////////////////////////////////////////////// //icecast2 status refined v1.1 xsl refined // Author: that dude over there at casterclub.com // Bugs: post in the forums at casterclub ////////////////////////////////////////////////// //start the madness already ////////////////////////////////////////////////// //start the configurations $ip = "cast.europaplus.ua"; //your server address in the form of mydomain.com or 192.161.1.1 $port = "8000"; //the port of your server $ice2_station = "europaplus"; // your station or stream name ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ //opening socket $fp = fsockopen($ip, $port, &$errno, &$errstr, 30); //open connection if(!$fp) { $success=2; //set if no connection //edit html to fit your stations site, this display is for offline status echo'<table> <tr> <td width="100%" colspan="2"> <img border="0" src="images/offline.gif" width="22" height="22"> <b><font face="Arial" size="2" color="#FF0000">'.$ice2_station.' is currently offline</font></b></td> </tr> </table>'; } if($success!=2){ //if connection fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl while(!feof($fp)) { $page .= fgets($fp, 1000); } fclose($fp); //close connection $page = ereg_replace(".*<pre>", "", $page); //extract data $page = ereg_replace("</pre>.*", ",", $page); //extract data $numbers = explode(",",$page); //bomb it and extract data $mount = $numbers[0]; $connections = $numbers[1]; $stream_n = $numbers[2]; $listeners = $numbers[3]; $desc = $numbers[4]; $cur_song = $numbers[5]; $str_url = $numbers[6]; $client_info = $numbers[7]; $test1 = $numbers[8]; //set vars that where empty and still dont know what the heck those values are ;-) $test2 = $numbers[9]; //set vars that where empty and still dont know what the heck those values are ;-) $test3 = $numbers[10]; //set vars that where empty and still dont know what the heck those values are ;-) $mount = $numbers[11]; $connections = $numbers[12]; $station =$numbers[13]; $listeners = $numbers[14]; $description = $numbers[15]; $cur_song = $numbers[16]; $www_url = $numbers[17]; //edit html to fit your stations site, this display is for online status echo' <table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0"> <tr> <td width="100%"><b><font face="Arial" size="2"> <img border="0" src="images/ice2_status/icecast.gif" width="22" height="22"> Powered By Icecast2</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="1"><a href="'.$www_url.'"> '.$station.'</a> - '.$description.'</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="1"> <img border="0" src="images/ice2_status/listeners.gif" width="22" height="18"> Listeners: '.$listeners.'</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="1"> <img border="0" src="images/ice2_status/tunes.gif" width="21" height="21"> Now Playing: '.$cur_song.'</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="2"> <img border="0" src="images/ice2_status/play.gif" width="15" height="15"> <a target="_blank" href="http://'.$ip.':'.$port.''.$mount.'.m3u">Listen Now</a></font></b></td> </tr> </table>'; } ?> Код якобы работает и открывает Первую станцию, и 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 Вопрос заключается в том как это поправить? что б ошибок этих небыло и код выводил ту станцию, которую мне нужно? С меня пивасик!) Ну или печенька)
Прошу прощения но Переменная выдала толи масив, толи хз... Вот код: Код (Text): 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 радиостанции в списке на нужную?
Это я понял, к тому времени надеюсь что-то изменится уже. Меня интересует как вывести по конкретной станции инфо, а не первую из списка?
А можно я не буду читать твой код а просто поспрашиваю? в какой переменной хранится инфо по станциям?
ereg_ функции устарели и использовать их нельзя. об этом в ошибке и сказано. замени их на preg_ аналоги. еще регулярки оберни в /
Всё, я походу опять напартачил=( Вот код Код (Text): <?php /////////////////////////////////////////////////// //icecast2 status refined v1.1 xsl refined // Author: that dude over there at casterclub.com // Bugs: post in the forums at casterclub ////////////////////////////////////////////////// //start the madness already ////////////////////////////////////////////////// //start the configurations $ip = "cast.europaplus.ua"; //your server address in the form of mydomain.com or 192.161.1.1 $port = "8000"; //the port of your server $ice2_station = "RetroFM"; // your station or stream name ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ //opening socket $fp = fsockopen($ip, $port, &$errno, &$errstr, 30); //open connection if(!$fp) { $success=2; //set if no connection //edit html to fit your stations site, this display is for offline status echo'<table> <tr> <td width="100%" colspan="2"> <img border="0" src="images/offline.gif" width="22" height="22"> <b><font face="Arial" size="2" color="#FF0000">'.$ice2_station.' is currently offline</font></b></td> </tr> </table>'; } if($success!=2){ //if connection fputs($fp,"GET /status.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl while(!feof($fp)) { $page .= fgets($fp, 1000); } fclose($fp); //close connection $page = preg_replace("/.*<pre>/", "", $page); //extract data $page = preg_replace("/<\/pre>.*/", "</table>", $page); //extract data $numbers = explode("</table>",$page); //bomb it and extract data $mount = $numbers[0]; $connections = $numbers[1]; $stream_n = $numbers[2]; $listeners = $numbers[3]; $desc = $numbers[4]; $cur_song = $numbers[5]; $str_url = $numbers[6]; $client_info = $numbers[7]; $test1 = $numbers[8]; //set vars that where empty and still dont know what the heck those values are ;-) $test2 = $numbers[9]; //set vars that where empty and still dont know what the heck those values are ;-) $test3 = $numbers[10]; //set vars that where empty and still dont know what the heck those values are ;-) $mount = $numbers[11]; $connections = $numbers[12]; $station =$numbers[13]; $listeners = $numbers[14]; $description = $numbers[15]; $cur_song = $numbers[16]; $www_url = $numbers[17]; //edit html to fit your stations site, this display is for online status echo' <table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0"> <tr> <td width="100%"><b><font face="Arial" size="2"> <img border="0" src="images/ice2_status/icecast.gif" width="22" height="22"> Powered By Icecast2</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="1"><a href="'.$www_url.'"> '.$station.'</a> - '.$description.'</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="1"> <img border="0" src="images/ice2_status/listeners.gif" width="22" height="18"> Listeners: '.$listeners.'</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="1"> <img border="0" src="images/ice2_status/tunes.gif" width="21" height="21"> Now Playing: '.$cur_song.'</font></b></td> </tr> <tr> <td width="100%"><b><font face="Arial" size="2"> <img border="0" src="images/ice2_status/play.gif" width="15" height="15"> <a target="_blank" href="http://'.$ip.':'.$port.''.$mount.'.m3u">Listen Now</a></font></b></td> </tr> </table>'; } echo '<hr><hr><hr><hr><hr>'.$numbers[5].$numbers[4]; // выводит то что нужно НО!!!... ?> Вобщем код вроде уже больше инфы нужной выводит, но опять таки... echo $numbers[5].$numbers[4]; Выводит вообще по красоте то что нужно. К примеру оно мне вывело вот это: Код (Text): Mount Point /avtoradio M3UXSPF Stream Title: Avtoradio Stream Description: Avtoradio Content Type: audio/mpeg Mount started: Tue, 05 Aug 2014 10:47:15 +0300 Bitrate: 128 Current Listeners: 145 Peak Listeners: 524 Stream Genre: Hits Stream URL: http://www.avtoradio.ua Current Song: Реклама - A_Avtokarta_3_020614 # А как теперь эту информацию использовать. Тоесть на сайт я ж не выведу это инфо так-же... нужно заменить английские слова русскими и кое-какие пункты выводить, а некоторые упустить. Как это сделать? И как сделать что-б в текущей композиции показывало русские буквы???
А кодировка тут какой-то звездец, у них исходно на сайте Windows-1252 (не 1251!), а после вашего парсинга это уже что-то невообразимое. Вообще - сначала explode("\n"), потом explode("\t"), получите отдельно названия полей и отдельно значения.
Комрады помогайте, нуп застопорился, ждёт помощи с небес, ибо будет он похоронен, и никто уж не узнает о нём=) Итак, ближе к делу, переделал скрипт и вот что у меня получилось. Сам скрипт: Код (Text): <?php header('Content-Type: text/html;charset=win-1251'); /////////////////////////////////////////////////// //icecast2 status refined v1.1 xsl refined // Author: that dude over there at casterclub.com // Bugs: post in the forums at casterclub ////////////////////////////////////////////////// //start the madness already ////////////////////////////////////////////////// //start the configurations $ip = "cast.europaplus.ua"; //your server address in the form of mydomain.com or 192.161.1.1 $port = "8000"; //the port of your server $ice2_station = "RetroFM"; // your station or stream name ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ //opening socket $fp = fsockopen($ip, $port, &$errno, &$errstr, 15); //open connection if(!$fp) { $success=2; //set if no connection //edit html to fit your stations site, this display is for offline status echo'<table> <tr> <td width="100%" colspan="2"> <img border="0" src="images/offline.gif" width="22" height="22"> <b><font face="Arial" size="2" color="#FF0000">'.$ice2_station.' is currently offline</font></b></td> </tr> </table>'; } if($success!=2){ //if connection fputs($fp,"GET /status.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl while(!feof($fp)) { $page .= fgets($fp, 1000); } fclose($fp); //close connection $page = preg_replace("/.*<pre>/", "", $page); //extract data $page = preg_replace("/<\/pre>.*/", "</table>", $page); //extract data $numbers = explode("</table>",$page); //bomb it and extract data } $information = explode("</td>", $numbers[20]); $nameS = $information[1]; $descriptS = $information[3]; $formatS = $information[5]; $bitrateS = $information[9]; $listenS = $information[11]; $peaklistS = $information[13]; $songS = $information[19]; echo 'Имя:'.$nameS.'<br>Формат:'.$formatS.'<br>Битрейт:'.$bitrateS.'<br>Слушателей:'.$listenS.'<br>Песня:'.$songS; ?> Что показывает на странице: Код (Text): Имя: JamFM Формат: audio/aacp Битрейт: 128 Слушателей: 5 Песня: Неприкасаемые - Моя Бабушка Курит Трубку Что отображает, если открыть код страницы: Код (Text): Имя:$testNameS<br>Формат: <td class="streamdata">audio/aacp<br>Битрейт: <td class="streamdata">128<br>Слушателей: <td class="streamdata">5<br>Песня: <td class="streamdata">Неприкасаемые - Моя Бабушка Курит ТрубкуArray Как убрать это - <td class="streamdata"> с кода страницы??? И как сделать что б названия песен на русском так и отображало???
Засем ругаеся насяйника... Не порезало... к примеру имеем в коде переменную $nameS. До ф-ции strip_tags Выводит на экран одной!!! строкой название станции, но если посмотреть код страницы, то: Код (Text): Имя: <td class="streamdata">JamFM<br>Формат: Тоесть на странице всё норм навпротив слова "Имя" название станции, а в коде что попало, после использования ф-ции ничего не изменилось=(
А Вы б немогли мне помочь с кодировкой русских символах в названии песен и с регулярками??? Очень нужно, сам точно не справлюсь
Потёрто, тестирую, учусь, росту, развиваюсь... Благодаря Вам, уважаемые камрады! Потестил ту ф-цию. неполучилось у меня=\ Было Код (Text): echo 'Песня: '.$songS.'<br>'; и выводило: Код (Text): Песня: СОБКО ГђВњГђВђГђВЁГђВђ - ГђВЇ Тебя Люблю<br> Стало: Код (Text): echo 'Песня : ', iconv("UTF-8", "windows-1251//TRANSLIT", $songS), PHP_EOL; Выводит: Код (Text): Песня : D!D
Вопрос такой: У меня сайт на кодировке вин-1251, скрипт на ютф-8, может преобразовать скрипт в вин1251 и подбирать уже до вин-1251? тогда ещё вопрос что написать в Код (Text): echo 'Песня : ', iconv("ххх", "windows-1251", $songS), PHP_EOL; Вместо ххх кодировка, а в вин-1251 больше ничего не нужно? Ну транслиты игноры и т.д.???
Факт Страницы на 1251 и сам файл в той же кодировке... Преобразовал скрипт в ютф-8, написал что кодировка пхп в ютф-8 Написал так: Код (Text): echo 'Песня: '.$songS.'<br>'; echo 'Песня : ', iconv("UTF-8", "ISO-8859-1", $songS), PHP_EOL; На странице показало: Код (Text): Песня: ÐÐÐТРÐÐ ÐСТР- Ðва ÐоÑÐ°Ð±Ð»Ñ Песня : АГАТА КРИСТИ - Два Корабля И как это понимать? файл в ютф-8, скрипт в ютф-8, а перекодил в ISO-8859-1 и показывает... Как теперь с всего этого зделать 1251?) Просто преобразовать файл и вписать в хеадере пхп вместо ютф виндовс не получается=(
Код (Text): $songS = $information[19]; $songS = preg_replace($masivS, "", $songS); $songS = iconv("UTF-8", "ISO-8859-1", $songS); $songS = mb_convert_encoding ($songS ,"Windows-1251" , "UTF-8" ); Как Вам такой код? не слишком нупский?) Уже отлично выводит название песни в win-1251=)