Как создать парсер на AJAX

Тема в разделе "PHP", создана пользователем ANDREW, 11 авг 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ANDREW

    ANDREW Создатель

    Регистр.:
    22 июн 2011
    Сообщения:
    32
    Симпатии:
    2
    Как создать парсер сервера Icecast c помощью AJAX/
     
    TroXx нравится это.
  2. amik88

    amik88

    Регистр.:
    14 дек 2007
    Сообщения:
    234
    Симпатии:
    105
    Возможно помогут эти скрипты.

    PHP:
    ///////Отображение ведущего когда он в эфире/////////
    <?
    $handle = fopen("http://100.00.000.00:8008/status2.xsl?mount=/radio", "rb"); //Укажите Ваши ip, порт и основной маунт
    $contents = '';
    while (!feof($handle)) { $contents .= fread($handle, 8192); }
    fclose($handle);
    $mas=explode(",",$contents);
    $dj=$mas[15]; $dj = str_replace ("~", " ICQ: ", $dj); if ($text =='' and $dj=='')
    {
    /////////////////////////////////////Отображение Non stop когда нету ведущего/////////
    $handle = fopen("http://100.00.000.00:8008/status2.xsl?mount=/nonstop", "rb"); //Укажите Ваши ip, порт и нон-стоп маунт
    $contents = '';
    while (!feof($handle)) { $contents .= fread($handle, 8192); }
    fclose($handle); $mas=explode(",",$contents); $dj='Non Stop'; }
    echo 'Ведущий: '.$dj;
    ########################################################################################
    //Далее вывод песни которая играет
    $ip = "100.00.000.00";              //Адрес сервера или IP
    $port = "8008";            //Порт
    $ice2_station = "My Radio Station";    //НЕазвание странции или маунта
    ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    //opening socket
    $fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
    if(!$fp) {
        $success=2;  //set if no connection
    }
    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
    $cur_song = $numbers[5];
    $cur_song = $numbers[16];
     
    echo'<br/>Сейчас играет: '.$cur_song.'';
    }
    ?>
    PHP:
    <?
    $ch curl_init (); // инициализация
    curl_setopt ($ch CURLOPT_URL "http://dm-fm.ce.ms/inf.php"); // адрес страницы для скачивания
    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"); // каким браузером будем прикидываться (Это наверное не обязательно но я оставил)
    curl_setopt ($ch CURLOPT_RETURNTRANSFER ); // нам нужно вывести загруженную страницу в переменную
    $content curl_exec($ch); // скачиваем страницу
    curl_close($ch); // закрываем соединение
    echo ''.$content.''//то что будет отображаться на странице
    ?>

    Скрипт автообновления блока
    Это чтоб пользователям не нужно было самим обновлять страницу.
    Рекомендую ставить интервал не менее 100000
    1000 = 1 секунда
    HTML:
    <html>
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
    <script type="text/javascript">
    var auto_refresh = setInterval(
    function ()
    {
    $('#info').load('index.php?_=' +Math.random()).fadeIn("slow");
    //#info - div, куда будет выводиться информация (та страница на которой отображается информация)
    //info.php - скрипт, выводящий необходимую нам информацию
    }, 150000); //интервал обновления, в миллисекундах
    </script>
    </head>
    <body>
    <!--Далее пример использования-->
    <div id="info">
    <?php include("info.php"); ?>
    </div>
    </body>
    </html>
    Если у Вас возникла похожая проблема (или Вам прсто по каким то причинам не удаётся парсить информацию напрямую) тогда сделайте следуещее:
    На хостинге с icecast сервером создайте файл к примеру info.php
    и поместите в него первый код.
    Затем на том хостинге на котором нужно отображать информацию создайте файл к примеру info.php и поместите внего второй код.
    После этого вставьте информацию в нужную Вам страницу используя третий код.
    Если Вам не нужно автообновление то можете подключить сразу файл info.php
    К примеру так
    include 'info.php';
    Если Вы используете движок DLE то в нужном месте шаблона вставьте
    {include file='info.php'} при этом файл info.php должен находится в корневой папке домена.
    Или же {include file='dir/info.php'} если в папке
    Ну вот собственно и всё...
    Один минус в скрипте который выводит название песни. Он не дружит с русскими буквам
    Оказывается всё дело в ID3 тегах. Перед заливокй надо переписывать...

    Источник: http://radiotalk.ru/viewtopic.php?id=3012
     
    MadLy, AkkAdemik, TroXx и 2 другим нравится это.
  3. startus

    startus Создатель

    Регистр.:
    7 окт 2011
    Сообщения:
    39
    Симпатии:
    5
    Ну парсер изначально работает на РНР, а аякс лишь выводит если не ошибаюсь
     
    TroXx нравится это.
  4. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    AJAX - подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером.
    В данном случае AJAX = JavaScript + PHP
     
    TroXx нравится это.
  5. starclyde

    starclyde Постоялец

    Регистр.:
    26 июл 2011
    Сообщения:
    55
    Симпатии:
    4
    У вас получилось создать парсер ? Если да, можно ссылочку посмотреть :) И какие материалы использовали ?
     
  6. arsen

    arsen НЕрядовой

    Регистр.:
    16 июн 2011
    Сообщения:
    861
    Симпатии:
    306
    я так понял парсить должно музыку? получилось ли ? почему именно Icecast?
     
    evolvent нравится это.
Статус темы:
Закрыта.