2017-02-15 4 views
1

Ich arbeite an einem PHP/HTML-Skript.Song von Shoutcast lesen

Ich möchte den aktuellen Song eines Shoutcast-Stream mit Autorefresh erhalten, wenn sich der Song ändert.

Shoutcast- nicht HTTP-Anforderung ermöglichen, so dass ich mit diesem Skript, um die Seite in einer anderen Datei zu erhalten:

<?php 
$lurl=get_fcontent("http://5.135.39.189:8000/"); 
echo"cid:".$lurl[0]."<BR>"; 


function get_fcontent($url, $javascript_loop = 0, $timeout = 5) { 
    $url = str_replace("&amp;", "&", urldecode(trim($url))); 

    $cookie = tempnam ("/tmp", "CURLCOOKIE"); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_ENCODING, ""); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); # required for https urls 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
    $content = curl_exec($ch); 
    $response = curl_getinfo($ch); 
    curl_close ($ch); 

    if ($response['http_code'] == 301 || $response['http_code'] == 302) { 
     ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); 

     if ($headers = get_headers($response['url'])) { 
      foreach($headers as $value) { 
       if (substr(strtolower($value), 0, 9) == "location:") 
        return get_url(trim(substr($value, 9, strlen($value)))); 
      } 
     } 
    } 

    if ( (preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value)) && $javascript_loop < 5) { 
     return get_url($value[1], $javascript_loop+1); 
    } else { 
     return array($content, $response); 
    } 
} 

?> 

Dann benutze ich eine andere Datei dieses mit einem HTML-DOM-Parser zu lesen, aber Ich kann nicht die richtige Zeichenfolge zum Lesen finden. Was ist der bessere Weg, dies zu tun?

Antwort

0

Es ist viel einfacher, den aktuellen Titel Titel aus einer speziellen Shoutcast- Seite 7.html genannt zu beantragen:

http://5.135.39.189:8000/7.html

aufgeteilt, dass die Daten durch Komma und Sie erhalten die Anzahl von Zuhörern, Bitrate und der aktuelle Titel erhalten titel

+0

Vielen Dank! Niemals diese Seite sehen, schön das zu wissen! – rayjhp