2010-08-15 14 views
7

PHP ile istatistikleri (görüntüleyenler, mevcut şarkı çalma vb.) Görüntülerken sıkıntı yaşıyorum ve bunu nasıl yapacağımız konusunda hiçbir bilgi bulamıyorum.Icecast2 istatistiklerini göstermek için PHP'yi kullanın

Icecast2 ile birlikte gelen birkaç XLS dosyası var ve bu dosyaları sitemle PHP'ye ekleyebilirim ancak DIV'yi her 5 saniyede bir güncellemeye hazırlamamıştım ve XLS ile çalışmaz Dosyalar.

Teşekkürler! Ben o çalışma var, bu kodu kullanarak

cevap

14

Merhaba ve teşekkür kodu. Ondan bir sınıf yaptım ve bazı çekler ekledim, bu yüzden sunucu çevrimdışı olduğunda şikayet etmiyor. Buradan aldı beri sınıf geri paylaşırız: komut dosyasını kullanmak için çok kötü bir fikirdir neden

<?php 

class IceCast { 
    var $server = "http://localhost:8000"; 
    var $stats_file = "/status.xsl"; 
    var $radio_info=array(); 

    function __construct() { 
     //build array to store our radio stats for later use   
     $this->radio_info['server'] = $this->server; 
     $this->radio_info['title'] = 'Offline'; 
     $this->radio_info['description'] = 'Radio offline'; 
     $this->radio_info['content_type'] = ''; 
     $this->radio_info['mount_start'] = ''; 
     $this->radio_info['bit_rate'] = ''; 
     $this->radio_info['listeners'] = ''; 
     $this->radio_info['most_listeners'] = ''; 
     $this->radio_info['genre'] = ''; 
     $this->radio_info['url'] = ''; 
     $this->radio_info['now_playing'] = array(); 
     $this->radio_info['now_playing']['artist'] = 'Unknown'; 
     $this->radio_info['now_playing']['track'] = 'Unknown'; 
    } 

    function setUrl($url) { 
     $this->server=$url; 
     $this->radio_info['server'] = $this->server; 
    } 

    private function fetch() { 
     //create a new curl resource 
     $ch = curl_init(); 

     //set url 
     curl_setopt($ch,CURLOPT_URL,$this->server.$this->stats_file); 

     //return as a string 
     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 

     //$output = our stauts.xsl file 
     $output = curl_exec($ch); 

     //close curl resource to free up system resources 
     curl_close($ch); 

     return $output; 
    } 

    function getStatus() { 
     $output=$this->fetch(); 

     //loop through $ouput and sort into our different arrays 
     $temp_array = array(); 

     $search_for = "<td\s[^>]*class=\"streamdata\">(.*)<\/td>"; 
     $search_td = array('<td class="streamdata">','</td>'); 


     if(preg_match_all("/$search_for/siU",$output,$matches)) { 
      foreach($matches[0] as $match) { 
       $to_push = str_replace($search_td,'',$match); 
       $to_push = trim($to_push); 
       array_push($temp_array,$to_push); 
      } 
     } 

     if(count($temp_array)) { 
      //sort our temp array into our ral array 
      $this->radio_info['title'] = $temp_array[0]; 
      $this->radio_info['description'] = $temp_array[1]; 
      $this->radio_info['content_type'] = $temp_array[2]; 
      $this->radio_info['mount_start'] = $temp_array[3]; 
      $this->radio_info['bit_rate'] = $temp_array[4]; 
      $this->radio_info['listeners'] = $temp_array[5]; 
      $this->radio_info['most_listeners'] = $temp_array[6]; 
      $this->radio_info['genre'] = $temp_array[7]; 
      $this->radio_info['url'] = $temp_array[8]; 

      if(isset($temp_array[9])) { 
       $x = explode(" - ",$temp_array[9]); 
       $this->radio_info['now_playing']['artist'] = $x[0]; 
       $this->radio_info['now_playing']['track'] = $x[1]; 
      } 
     } 
     return $this->radio_info; 
     } 

} 
?> 
+0

çok kullanışlıdır! teşekkürler –

+1

Bu çok kötü bir fikir ve bu yeniden yapılmış bir web arayüzü olduğundan Icecast Sürüm 1.4 ile kırılacak. – ePirat

6

:

<?php 

/* 
* SCRIPT CONFIGURATIONS 
*/ 
$SERVER = 'http://myserver.com:8000'; //URL TO YOUR ICECAST SERVER 
$STATS_FILE = '/status.xsl'; //PATH TO STATUS.XSL PAGE YOU CAN SEE IN YOUR BROWSER (LEAVE BLANK UNLESS DIFFERENT) 

///////////////////// END OF CONFIGURATION --- DO NOT EDIT BELOW THIS LINE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 

//create a new curl resource 
$ch = curl_init(); 

//set url 
curl_setopt($ch,CURLOPT_URL,$SERVER.$STATS_FILE); 

//return as a string 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 

//$output = our stauts.xsl file 
$output = curl_exec($ch); 

//close curl resource to free up system resources 
curl_close($ch); 

//build array to store our radio stats for later use 
$radio_info = array(); 
$radio_info['server'] = $SERVER; 
$radio_info['title'] = ''; 
$radio_info['description'] = ''; 
$radio_info['content_type'] = ''; 
$radio_info['mount_start'] = ''; 
$radio_info['bit_rate'] = ''; 
$radio_info['listeners'] = ''; 
$radio_info['most_listeners'] = ''; 
$radio_info['genre'] = ''; 
$radio_info['url'] = ''; 
$radio_info['now_playing'] = array(); 
    $radio_info['now_playing']['artist'] = ''; 
    $radio_info['now_playing']['track'] = ''; 

//loop through $ouput and sort into our different arrays 
$temp_array = array(); 

$search_for = "<td\s[^>]*class=\"streamdata\">(.*)<\/td>"; 
$search_td = array('<td class="streamdata">','</td>'); 

if(preg_match_all("/$search_for/siU",$output,$matches)) { 
    foreach($matches[0] as $match) { 
     $to_push = str_replace($search_td,'',$match); 
     $to_push = trim($to_push); 
     array_push($temp_array,$to_push); 
    } 
} 

//sort our temp array into our ral array 
$radio_info['title'] = $temp_array[0]; 
$radio_info['description'] = $temp_array[1]; 
$radio_info['content_type'] = $temp_array[2]; 
$radio_info['mount_start'] = $temp_array[3]; 
$radio_info['bit_rate'] = $temp_array[4]; 
$radio_info['listeners'] = $temp_array[5]; 
$radio_info['most_listeners'] = $temp_array[6]; 
$radio_info['genre'] = $temp_array[7]; 
$radio_info['url'] = $temp_array[8]; 

$x = explode(" - ",$temp_array[9]); 
$radio_info['now_playing']['artist'] = $x[0]; 
$radio_info['now_playing']['track'] = $x[1]; 

?> 
2

Cevabıma over here bir göz atın.
tl; dr: Icecast HTML durum sayfasını ayrıştırmamalısınız.

İlgili konular