2017-02-15 5 views
1

私はPHP/HTMLスクリプトを作成しています。Shoutcastから曲を読む

曲が変更されたときに自動再生でShoutcastストリームの現在の曲を取得したいとします。

Shoutcastは、HTTPリクエストを許可しないので、私は別のファイルにページを取得するには、このスクリプトを使用しています:

<?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); 
    } 
} 

?> 

その後、私はHTML DOMパーサでこれを読むために別のファイルを使用しますが、私は正しい文字列を見つけることができません。これを行う良い方法は何ですか?

答えて

0

7.htmlと呼ばれる特殊なShoutcastはページから現在のトラックのタイトルを要求する方がはるかに簡単です:

http://5.135.39.189:8000/7.html

はコンマによるデータとあなたがリスナーの数、ビットレートと現在のトラックを取得することで分割タイトル

+0

ありがとうございます!そのページを見ず、それを知ってよかった! – rayjhp