Парсер данных с shoutcast сервера

Тема в разделе "PHP", создана пользователем dotsenko, 1 сен 2008.

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

    dotsenko

    Регистр.:
    27 дек 2006
    Сообщения:
    233
    Симпатии:
    106
    Парсит данные с интернет радио сервера


    PHP:
    <?

    // Функция извлечения данных
    function xyStrRead($strp$xp$yp
    {
          
    $jumpx1 stripos($strp$xp) + strlen($xp); 
          
    $jumpx substr($strp$jumpx1);
          if(
    $yp === "null") return $jumpx;
          
    $XPos 0;
          
    $YPos stripos($jumpx$yp) - $XPos;
          
    $ZPos substr($jumpx$XPos$YPos);
          return 
    $ZPos;
    }

    // функция получение
    function valute() 
    {
          
    $ch curl_init();
          
    curl_setopt($chCURLOPT_URL,"http://здесь ип:8000/index.html");
          
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
          
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
          
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
          
    $result curl_exec ($ch);
          
    curl_close ($ch);

          
    $dollar xyStrRead($result'Server Status:''null');
          
    $dollar xyStrRead($dollar'<b>''</b>');
          
    $euro xyStrRead($result'Stream Status:''null');
          
    $euro xyStrRead($euro'<b>''</b>');
          
    $listxyStrRead($result'Listener Peak:''null');
          
    $list xyStrRead($list'<b>''</b>');
          
    $songxyStrRead($result'Current Song:''null');
          
    $song xyStrRead($song'<b>''</b>');
          
    $radioxyStrRead($result'Stream Title:''null');
          
    $radio xyStrRead($radio'<b>''</b>');
          
    $icqxyStrRead($result'Stream ICQ:''null');
          
    $icq xyStrRead($icq'>''</a');
          
    $sitexyStrRead($result'Stream URL:''null');
          
    $site xyStrRead($site'">''</');
          
    $timexyStrRead($result'Average Listen Time:''null');
          
    $time xyStrRead($time'<b>''</b');
          
    $vl $dollar "::" $euro "::" $list "::" $song "::" $radio "::" $icq "::" $site "::" $time;
          return 
    $vl;
    }

    $vl explode("::"valute());
    echo 
    "Название Радио: " $vl[4]. "<br>";
    echo 
    "Сайт радио: " $vl[6]. "<br>";
    echo 
    "Тип сервера: " $vl[0]. "<br>";
    echo 
    "Статистика: " $vl[1]. "<br>";
    echo 
    "Сейчас играет: " $vl[3]. "<br>";
    echo 
    "Всего слушали: " $vl[2]. "<br>";
    echo 
    "Всего играет: " $vl[7]. "<br>";
    echo 
    '<P>Сылка на радио: <A href="http://здесь ип:8000/listen.pls">http://здесь ип:8000/listen.pls</A></P>';
    ?>


    <table>
    <?php

       $to 
    0.05;  

    function 
    radio($radio,$port)
    {
     global 
    $to;  

     @
    $fs=fsockopen($radio,$port,$err1,$err2,$to);  
     
     if (
    $fs)  
      {
        
    fputs($fs,"GET / HTTP/1.0\r\nUser-Agent: Mozilla/2.0\r\n\r\n");

       
    $d=fgets($fs); $d=fgets($fs); $d=fgets($fs); $d=fgets($fs);  
       if (
    strpos($d,"Server is currently down"))  
        {
         echo 
    ""
        }
       else  
        {
         
    $pos=strpos($d,"kbps with");
         
    $pos1=strpos($d," ",$pos+10);
         
    $d=substr($d,$pos+10,$pos1-$pos-10);  
         @
    $fp=fsockopen($radio,$port,$err1,$err2,$to);  
         if (
    $fp)
          {
           
    fputs($fp,"GET /played.html HTTP/1.0\r\nUser-Agent: Mozilla/2.0\r\n\r\n");  
           
    $s=fgets($fp); $s=fgets($fp); $s=fgets($fp); $s=fgets($fp);  
           
    $pos=strpos($s,$pos);
           
    $pos=strpos($s,$pos);
           
    $pos1=strpos($s,$pos+100);
           
    $s=substr($s,$pos+2473,$pos1-$pos-600); 

           
    $gt explode(">"$s);
           if (
    $gt[0] == "AD")
            {
             
    $s "loading...";
            }  
           print 
    "<b><font color='black'>20 Последних песен прозвучавшие в нашем эфире:</font></b>$s";
                }
        }}}

    radio("здесь ип сервера","8000");
    ?>
    </tr>
    </table>
    Пример http://91.122.14.226/bot/test.php
    Показывают всю информацию,плюс 20 последних песен.
     
  2. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    1. Аналогов полно.
    2. Кажись, не тот раздел.
     
  3. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    Приведи пример! Интересны аналоги.
     
  4. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
  5. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    Спасибо, но там большинство скриптов работают только с пассом, а из за того что я его не знаю (радио не мое), то нашел один скрипт который работает без пароля, но там нужно сделать вывод еще одной строчки, только как - я чего то въехать не могу, скрипт ниже:
    PHP:
    <div style="Visibility: Hidden; Position: Absolute;"> 
    <? 
    $open = fsockopen("IP","PORT"); 
    if ($open) { 
    fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n"); 
    $read = fread($open,1000); 
    $text = explode("content-type:text/html",$read); 
    $text = explode(",",$text[1]); 
    } else { $er="Connection Refused!"; } 
    ?> 
    </div> 
    <? 
    if ($text[1]==1) { $state = "Up"; } else { $state = "Down"; } 
    if ($er) { echo $er; exit; } 
    echo "<font face=verdana size=1> 
    Listeners: $text[0] of $text[3] ($text[4] Unique)<br> 
    Listener Peak: $text[2]<br> 
    Server State: <b>$state</b><br> 
    Bitrate: $text[5] Kbps<br> 
    Current Song: $text[6] 
    </font>";?> 

    в общем нужно сюда добавить, чтобы выводил строчку "Stream Title:" парсить отсюдова http://war.str3am.com:7550/
    Как добавить такую строчку?
     
  6. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    Я так понял нужно вытащить нужную строку из мета-данных, но какую? И как?
     
  7. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Сделай var_dump($text) и глянь.
     
  8. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    Глянул..
    PHP:
    array(7) { [0]=>  string(70" 57" [1]=>  string(1"1" [2]=>  string(3"104" [3]=>  string(3"300" [4]=>  string(2"56" [5]=>  string(2"32" [6]=>  string(41"Sasha Dith - Я буду с тобой" }
    И что мне с этим делать? оО
     
  9. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Сухари сушить. Можно слегка дописать код, а можно дернуть кусок кода из примера dotsenko.
     
  10. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    Если бы.. у меня нету 50 сообщений, а 100 тем более..
    Как я понял из этого кода (что я писал выше) то там нету того что надо, а именно значение "Stream Title:"..что то нужно дописать, а что?
     
Статус темы:
Закрыта.