ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
7   •   Посмотреть все темы

Парсер инфы с другого сервера

 

42
Николай @Morty
Так уж вышло что я арендую IceCast хостинг у одного хостера, а сайт располагается у другого у которого к тому же проблемы с вызовом файлов.
Я пытался по разному парсить инфу (а именно, кто ведущий и название текущей песни).
Но увы, ничего не получалось, скрипт напрочь отказывается работать на том сервере где находится сайт.
Я уже отчаялся и стал подумывать о том, чтоб перенести сайт на тот хостинг где icecast (а это не особо хорошо т.к. у меня там всего 100мб, которые мне нужны под non stop) либо же искать другой хосинг для сайта.
Но искать хостинг для одного сайта как-то глупо (у меня на одном хостинге расположены несколько сайтов).
Я нашёл решение проблемы и решил поделится. Мало ли, может кому-то пригодится.
Для отображения нужной мне информации я воспользовался двумя скриптами.
  1. ///////Отображение ведущего когда он в эфире/////////
  2. <?php
  3. $handle = fopen("http://100.00.000.00:8008/status2.xsl?mount=/radio", "rb"); //Укажите Ваши ip, порт и основной маунт
  4. $contents = '';
  5. while (!feof($handle)) { $contents .= fread($handle, 8192); }
  6. fclose($handle);
  7. $mas=explode(",",$contents);
  8. $dj=$mas[15]; $dj = str_replace ("~", " ICQ: ", $dj); if ($text =='' and $dj=='')
  9. {
  10. /////////////////////////////////////Отображение Non stop когда нету ведущего/////////
  11. $handle = fopen("http://100.00.000.00:8008/status2.xsl?mount=/nonstop", "rb"); //Укажите Ваши ip, порт и нон-стоп маунт
  12. $contents = '';
  13. while (!feof($handle)) { $contents .= fread($handle, 8192); }
  14. fclose($handle); $mas=explode(",",$contents); $dj='Non Stop'; }
  15. echo 'Ведущий: '.$dj;
  16. ########################################################################################
  17. //Далее вывод песни которая играет
  18. $ip = "100.00.000.00"; //Адрес сервера или IP
  19. $port = "8008"; //Порт
  20. $ice2_station = "My Radio Station"; //Название станции или маунта
  21. ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  22. //opening socket
  23. $fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
  24. if(!$fp) {
  25. $success=2; //set if no connection
  26. }
  27. if($success!=2){ //if connection
  28. fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
  29. while(!feof($fp)) {
  30. $page .= fgets($fp, 1000);
  31. }
  32. fclose($fp); //close connection
  33. $page = ereg_replace(".*<pre>", "", $page); //extract data
  34. $page = ereg_replace("</pre>.*", ",", $page); //extract data
  35. $numbers = explode(",",$page); //bomb it and extract data
  36. $cur_song = $numbers[5];
  37. $cur_song = $numbers[16];
  38. echo'<br/>Сейчас играет: '.$cur_song.'';
  39. }
  40. ?>

Скрипты есть, они работают но информацию которую они дают нужно отобразить на другом сервере.
Тут мне на помощь пришёл простой парсер на php на который я наткнулся блуждая по результатам поисковых запросов в гугле
  1. <?php
  2. $ch = curl_init (); // инициализация
  3. curl_setopt ($ch , CURLOPT_URL , "http://site.ru/inf.php"); // адрес страницы для скачивания
  4. curl_setopt ($ch , CURLOPT_USERAGENT , "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7"); // каким браузером будем прикидываться (Это наверное не обязательно но я оставил)
  5. curl_setopt ($ch , CURLOPT_RETURNTRANSFER , 1 ); // нам нужно вывести загруженную страницу в переменную
  6. $content = curl_exec($ch); // скачиваем страницу
  7. curl_close($ch); // закрываем соединение
  8. echo ''.$content.''; //то что будет отображаться на странице
  9. ?>

Так же есть ещё отличный скрипт автообновления блока (вроде бы с этого сайта)
Это, чтоб пользователям не нужно было самим обновлять страницу.
Рекомендую ставить интервал не менее 100000
1000 = 1 секунда
  1. <html>
  2. <head>
  3. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
  4. <script type="text/javascript">
  5. var auto_refresh = setInterval(
  6. function ()
  7. {
  8. $('#info').load('index.php?_=' +Math.random()).fadeIn("slow");
  9. //#info - div, куда будет выводиться информация (та страница на которой отображается информация)
  10. //info.php - скрипт, выводящий необходимую нам информацию
  11. }, 150000); //интервал обновления, в миллисекундах
  12. </script>
  13. </head>
  14. <body>
  15. <!--Далее пример использования-->
  16. <div id="info">
  17. <?php include("info.php"); ?>
  18. </div>
  19. </body>
  20. </html>

Теперь чуть подробнее.
Если у Вас возникла похожая проблема (или Вам прсто по каким-то причинам не удаётся парсить информацию напрямую) тогда сделайте следуещее:
На хостинге с icecast сервером создайте файл к примеру info.php
и поместите в него первый код.
Затем на том хостинге на котором нужно отображать информацию создайте файл к примеру info.php и поместите в него второй код.
После этого вставьте информацию в нужную Вам страницу используя третий код.
Если Вам не нужно автообновление то можете подключить сразу файл info.php
К примеру так
include 'info.php';
Если Вы используете движок DLE то в нужном месте шаблона вставьте
{include file='info.php'} при этом файл info.php должен находится в корневой папке домена.
Или же {include file='dir/info.php'} если в папке
Ну вот собственно и всё...
Есть правда один минус в скрипте, который выводит название песни. Он не дружит с русскими буквами, а может это уменя что-то не так на сервере :D
Надо проверить.

Оказывается всё дело в ID3 тегах. Перед заливокй надо переписывать...
Надеюсь это кому ни будь пригодится.
Спасибо за внимание :)

Отредактировано Morty - 17.02.2013
0
42
Николай @Morty
Ещё пара вариантов автообновления блока.
  1. <script>
  2. function show()
  3. {
  4. $.ajax({
  5. url: "parse.php", //Тут указываем файл со скриптами
  6. cache: false,
  7. success: function(html){
  8. $("#content").html(html);
  9. }
  10. });
  11. }
  12. $(document).ready(function(){
  13. show();
  14. setInterval('show()',60000); //Время в милесекундах
  15. });
  16. </script>
  17. <div id="content">Тут то,чтонадо обновлять</div>

И ещё один, на аяксе
  1. <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script>
  2. <script type="text/javascript">
  3. jQuery(document).ready(function(){
  4. setInterval("jQuery('#timeA').load('# dl#timeB');",60000);
  5. });
  6. </script>
  7. <dl id="timeA"><dl id="timeB">Тут то, что надо обновлять</dl></dl>

Отредактировано Morty - 04.04.2011
0
42
Николай @Morty
Небольшое дополнение для скрипта вывода текущей песни.
<a target="_blank" href="http://vkontakte.ru/gsearch.php?section=audio&q='.$cur_song.'">Найти Вконтакте</a>
Пи нажатии на ссылку производится поиск песни в контакте.

Отредактировано Morty - 05.04.2011
0
144
Руся @Ruskat
???????µ?»?????? ?? ???????????? ???°???°?±???????°???? ???»?? ?????µ??!!! ?????????????? ???????? ?? ?????µ?? ?????·?????? ?? ???????µ?? ???° ?»???±???????? ?????? ???µ?????? :)
?®?·?°?????µ ???° ?·?????????????µ. ???????? ???µ ?? ?»???? - ???????????µ?????????????µ???? ?? ???°???µ???? ???°??????!!!
  1. <?php
  2. $data = file_get_contents('http://???µ?????µ??:8000/status.xsl?mount=/ZED-FM');
  3. $data2 = file_get_contents('http://???µ?????µ??:8000/status.xsl?mount=/ruskat');
  4. //$data3 = file_get_contents('http://62.149.27.186:8000/status.xsl?mount=/live');
  5. $admdata = file_get_contents('http://?»????????:???°?????»??@???µ?????µ??:8000/admin/stats.xsl?mount=/ZED-FM');
  6. function antara($string, $start, $end){
  7. $string = " ".$string;
  8. $ini = strpos($string,$start);
  9. if ($ini == 0) return "";
  10. $ini += strlen($start);
  11. $len = strpos($string,$end,$ini) - $ini;
  12. return substr($string,$ini,$len);
  13. }
  14. //$data = iconv("utf-8", "cp1251", $data);
  15. $admdata = iconv("utf-8", "cp1251", $admdata);
  16. $samprate = antara($admdata, "ice-samplerate</td>\n<td class=\"streamdata\">","</td>");
  17. $title = antara($data, "Stream Title:</td>\n<td class=\"streamdata\">","</td>");
  18. $description = antara($data, "Stream Description:</td>\n<td class=\"streamdata\">","</td>");
  19. $content_type = antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>");
  20. $Mount_started = antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>");
  21. $Bitrate = antara($data, "Bitrate:</td>\n<td class=\"streamdata\">","</td>");
  22. $Current_listeners = antara($data, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
  23. $Peak_listeners = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
  24. $Stream_genre = antara($data, "Stream Genre:</td>\n<td class=\"streamdata\">","</td>");
  25. $Stream_url = antara($data, "Stream URL:</td>\n<td class=\"streamdata\">","</td>");
  26. $Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
  27. $server_name = antara($admdata, "server_name</td>\n<td class=\"streamdata\">","</td>");
  28. //========???????? ???°?????????? ???µ?????»?????°============//
  29. $Current_listeners2 = antara($data2, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
  30. $Peak_listeners2 = antara($data2, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
  31. //-----------------//
  32. $data3_curr_listeners = antara($data2, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
  33. $data3_peak_listeners = antara($data2, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
  34. //======?????????????? ?? ?·?°???°?»?????? ?????»???????????? ???»?????°?????? ???° ????????=======//
  35. $Curr_listens=$Current_listeners2+$Current_listeners+$data3_curr_listeners;
  36. $Peak_listens=$Peak_listeners2+$Peak_listeners+$data3_peak_listeners;
  37. $staylst=$Curr_listens+1;
  38. //echo ''.$title.' <br> '.$description.' <br> '.$content_type.' <br> '.$Mount_started.' <br> '.$Bitrate.' <br> '.$Curr_listens.' <br> '.$Peak_listens.' <br> '.$Stream_genre.' <br> '.$Stream_url.' <br> '.$Current_song.' <br><br>???»?????°???? ???? ???°???????°?? <br>
  39. //4m ZED-FM: ?·?°???°?· '.$Current_listeners.', ???????????? '.$Peak_listeners.'.<br>
  40. //4m ruskat: ?·?°???°?· '.$Current_listeners2.', ???????????? '.$Peak_listeners2.'.<br>
  41. //Hellp: ?·?°???°?· '.$data3_curr_listeners.', ???????????? '.$data3_peak_listeners.'.<br>
  42. //'; str_replace ('%20','_',$file_name)
  43. //$Current_song = iconv("cp1251", "utf-8", $Current_song);
  44. echo '<script language=\'JavaScript\' type=\'text/javascript\' src=\'http://ruskat.at.ua/js/tt.js\'></script>
  45. <style type="text/css">
  46. #tooltip{
  47. font-family:Courier New;
  48. font-size:13px;
  49. padding-left: 2px;
  50. font-weight:bold;margin:0;padding:0;
  51. background: url(http://ruskat.at.ua/img/s5_seg_f.png) repeat-x;
  52. border:0px solid #023875;
  53. color:#fff;
  54. margin:0px;
  55. padding:2px 5px;
  56. position:absolute;
  57. visibility:hidden
  58. }
  59. </style>
  60. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  61. <tr>
  62. <td width="70">
  63. <marquee behavior="scroll" width="320" scrollamount="4"><font color="orange"> <img src="http://cdn1.iconfinder.com/data/icons/Futurosoft%20Icons%200.5.2/22x22/apps/vlc.png" width="18" height="18" alt="?????°??" /> <b>'.$Current_song.'</b></font> </marquee>
  64. <marquee behavior="scroll" width="320" scrollamount="3" direction="left"><font color="lime"><img src="http://cdn1.iconfinder.com/data/icons/iconslandplayer/PNG/128x128/PlainBlue/MicrophonePressed.png" width="20" height="20" alt="???????? ???µ???µ" />'.$description.'. ???????°?? ?????°???????°???? '.$Mount_started.'. ???????µ?? '.$content_type.', ?±???????µ???? '.$Bitrate.' kb/p s, ???°?????????° '.$samprate.' ????. <b style= "color:#FA0000; background:#fff"><img src="http://www.iconsearch.ru/uploads/icons/futurosoft_icons/32x32/audacity.png" width="18" height="18" alt="???»?????°??????" /></b> <b style= "color:#fff; background:#3C52E3"> '.$Curr_listens.' </b>. ???°???±???»?????µ c?»?????°?»?? <b style= "color:#FA0000; background:#fff">  '.$Peak_listens.' </b>. ?????°???? <a href=\'\'onclick=\'javascript:window.open("http://ruskat.at.ua/radio/listen.html", "mywindow","toolbar=1,menubar=1,resizable=1,width=350,height=250");\'> <b style= "color:#FA0000; background:#fff"> '.$staylst.'-?? ???»?????°???µ?? </b></a>!</font></marquee>
  65. </td>
  66. <td align="right"><div align="center"><font color="white"> ???°?????? ??????????';
  67. //???µ?»?°?µ?? ?·?°???µ???? ???????????»????//
  68. $Current_song = str_replace(array('\'', '&', '&'), '', trim($Current_song));
  69. $Current_song=preg_replace('/\s+/', ' ', $Current_song);
  70. //$Current_song = ereg_replace('[\'&]+', '', $Current_song);
  71. //?????µ?»?°?»?? ?·?°???µ???? ???????????»????//
  72. //$Current_song = iconv("cp1251", "utf-8", $Current_song);
  73. echo'<a href=\'\' onclick=\'javascript:window.open("http://muzgruz.ru/search/?section=audio&q='.$Current_song.'", "mywindow","toolbar=1,menubar=1,resizable=1,Scrollbars=1,width=850,height=400");\'><img src="http://cdn1.iconfinder.com/data/icons/DarkGlass_Reworked/128x128/apps/audacity.png" width="16" height="16" alt="?????°???°???? ???µ?????? ';
  74. //$Current_song = iconv("utf-8", "cp1251", $Current_song);
  75. echo''.$Current_song.' ???° ?????·???????·" /></a>
  76. <a href=\'\' onclick=\'javascript:window.open("http://vkontakte.ru/gsearch.php?section=audio&q='.$Current_song.'&name=1", "mywindow","toolbar=1,menubar=1,resizable=1,Scrollbars=1,width=850,height=400");\'><img src="http://ruskat.at.ua/img/vkontakte-512x512.png" width="16" height="16" alt="???????°???? ???µ?????? '.$Current_song.' ???????????°?????µ" /></a> ?? ???????µ?? ';
  77. //$Current_song = iconv("cp1251", "utf-8", $Current_song);
  78. echo'<a href=\'\' onclick=\'javascript:window.open("http://www.youtube.com/results?search_query='.$Current_song.'&aq=f", "mywindow","toolbar=1,menubar=1,resizable=1,Scrollbars=1,width=850,height=400");\'><img src="http://s.ytimg.com/yt/favicon-vflZlzSbU.ico" width="" height="" alt="???????°???? ???»???? ';
  79. //$Current_song = iconv("utf-8", "cp1251", $Current_song);
  80. echo ''.$Current_song.' ???° YouTube" /></a>';
  81. //RUtube
  82. //$Current_song = iconv("utf-8", "koi8-r", $Current_song);
  83. $Current_song = mb_convert_encoding($Current_song, "utf-8", "koi8-r");
  84. echo'<a href=\'\' onclick=\'javascript:window.open("http://rutube.ru/search.html?page=index&search='.$Current_song.'&search_type=track", "mywindow","toolbar=1,menubar=1,resizable=1,Scrollbars=1,width=850,height=400");\'><img src="http://rutube.ru/favicon.ico" width="" height="" alt="???????°???? ???»???? ';
  85. $Current_song = mb_convert_encoding($Current_song, "koi8-r", "utf-8");
  86. //$Current_song = iconv("koi8-r", "utf-8", $Current_song);
  87. echo ''.$Current_song.' ???° RUtube" /></a>';
  88. echo'<a href=\'\' onclick=\'javascript:window.open("http://vkontakte.ru/gsearch.php?section=video&q='.$Current_song.'&name=1", "mywindow","toolbar=1,menubar=1,resizable=1,width=850,height=400");\'><img src="http://ruskat.at.ua/img/vkontakte-512x512.png" width="16" height="16" alt="???????°???? ???????µ?? '.$Current_song.' ???????????°?????µ" /></a><br> ?° ???°?? ?¶?µ
  89. <a href=\'\' onclick=\'javascript:window.open("http://www.google.com.ua/search?client=opera&rls=ru&q='.$Current_song.'&name=1", "mywindow","toolbar=1,menubar=1,resizable=1,Scrollbars=1,width=850,height=400");\'><img src="http://cdn1.iconfinder.com/data/icons/yooicons_set01_socialbookmarks/128/social_google_box.png" width="16" height="16" alt="???????°???? '.$Current_song.' ?? Google" /></a> ?? ';
  90. //$Current_song = iconv("cp1251", "utf-8", $Current_song);
  91. echo' <a href=\'\' onclick=\'javascript:window.open("http://spaces.ru/music/?sid=&p=&search=1&word='.$Current_song.'&name=1", "mywindow","toolbar=1,menubar=1,resizable=1,Scrollbars=1,width=850,height=400");\'><img src="http://cdn1.iconfinder.com/data/icons/yooicons_set01_socialbookmarks/128/social_google_box.png" width="16" height="16" alt="???????°????';
  92. //$Current_song = iconv("utf-8", "cp1251", $Current_song);
  93. echo' '.$Current_song.' ???° Spaces" /></a>
  94. </font>
  95. </div></td>
  96. </tr>
  97. </table>
  98. ';
  99. ?>

0
46
Алексей @Алекс-Романтик
А какая может быть причина, если я всё сделал по инструкции как вы написали, но сайт вообще тогда не открывается. Пишет соединение... и ничего не происходит. приходится удалять файл info.php с хостинга сайта.

0
419
gyurgin_ @gyurgin_
Да Вы прежде на дату поста смотрите...

0





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

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