MyXoops Forum

Forum - myXOOPS German Support

2 - 1 = ?  
Geben Sie die Zeichenfolge aus dem Bild ein
Sie haben max. 10 Versuche.
 

Aw:: Shoutcastmodul

Betreff: Aw:: Shoutcastmodul
von SetepenRa am 31.07.2009 16:41:28

Zitat:

frankblack schrieb:
Zitat:
selbstaufdieschulterklopp


Ich klopf mit. Kannst du den Code bitte einmal posten? Würde mir evtl. auch die Arbeit bei meinem Modul erleichtern. Du wirst auch in den Credits genannt.


Sicher kann ich das....hab ja auch nur vorhandenes umgemodelt und angepasst :) läuft als eigener Block einwandfrei...müsstest halt nur mal die Textausgabe auf nem ordentlichen Server testen weil ich da wie gesagt nen "Connection Timeout habe wegen Serverstandort und -konfig in den Staaten.

class Radio {    var $fields = array();    var $fieldsDefaults = array("Server Status""Stream Status""Listener Peak""Average Listen Time""Stream Title""Content Type""Stream Genre""Stream URL""Current Song""Stream AIM");    var $very_first_str;    var $domain$port$path;    var $errno$errstr;    var $trackLists = array();    var $isShoutcast;    var $nonShoutcastData = array(                "Server Status"      => "n/a",                "Stream Status"      => "n/a",                "Listener Peak"      => "n/a",                "Average Listen Time"   => "n/a",                "Stream Title"      => "n/a",                "Content Type"      => "n/a",                "Stream Genre"      => "n/a",                "Stream URL"      => "n/a",                "Stream AIM"      => "n/a",                "Stream IRC"      => "n/a",                "Current Song"      => "n/a"                );    var $altServer False;     function Radio($url)    {       $parsed_url parse_url($url);       $this->domain   = isset($parsed_url['host']) ? $parsed_url['host'] : "";       $this->port   = !isset($parsed_url['port']) || empty($parsed_url['port']) ? "80" $parsed_url['port'];       $this->path   = empty($parsed_url['path']) ? "/" $parsed_url['path'];        if (empty($this->domain))       {          $this->domain $this->path;          $this->path "";       }        $this->setOffset("Current Stream Information");       $this->setFields();      // setting default fields        $this->setTableStart("<table border=0 cellpadding=2 cellspacing=2>");       $this->setTableEnd("</table>");    }     function setFields($array=False)    {       if (!$array)          $this->fields = $this->fieldsDefaults;       else          $this->fields = $array;    }    function setOffset($string)    {       $this->very_first_str = $string;    }    function setTableStart($string)    {       $this->tableStart = $string;    }    function setTableEnd($string)    {       $this->tableEnd = $string;    }     function getHTML($page=False)    {       if (!$page)          $page = $this->path;       $contents = "";       $domain = (substr($this->domain, 0, 7) == "http://") ? substr($this->domain, 7) : $this->domain;         if (@$fp = fsockopen($domain, $this->port, $this->errno, $this->errstr, 2))       {          fputs($fp, "GET ".$page." HTTP/1.1rn".             "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)rn".             "Accept: */*rn".             "Host: ".$domain."rnrn");           $c = 0;          while (!feof($fp) && $c <= 20)          {             $contents .= fgets($fp, 4096);             $c++;          }           fclose ($fp);           preg_match("/(Content-Type:)(.*)/i", $contents, $matches);          if (count($matches) > 0)          {             $contentType = trim($matches[2]);             if ($contentType == "text/html")             {                $this->isShoutcast = True;                return $contents;             }             else             {                $this->isShoutcast = False;                 $htmlContent = substr($contents, 0, strpos($contents, "rnrn"));                 $dataStr = str_replace("r", "n", str_replace("rn", "n", $contents));                $lines = explode("n", $dataStr);                foreach ($lines AS $line)                {                   if ($dp = strpos($line, ":"))                   {                      $key = substr($line, 0, $dp);                      $value = trim(substr($line, ($dp+1)));                      if (preg_match("/genre/i", $key))                         $this->nonShoutcastData['Stream Genre'] = $value;                      if (preg_match("/name/i", $key))                         $this->nonShoutcastData['Stream Title'] = $value;                      if (preg_match("/url/i", $key))                         $this->nonShoutcastData['Stream URL'] = $value;                      if (preg_match("/content-type/i", $key))                         $this->nonShoutcastData['Content Type'] = $value;                      if (preg_match("/icy-br/i", $key))                         $this->nonShoutcastData['Stream Status'] = "Stream is up at ".$value."kbps";                      if (preg_match("/icy-notice2/i", $key))                      {                         $this->nonShoutcastData['Server Status'] = "This is <span style="color: red;">not</span> a Shoutcast server!";                         if (preg_match("/ultravox/i", $value))                            $this->nonShoutcastData['Server Status'] .= " But an <a href="http://ultravox.aol.com/" target="_blank">Ultravox</a> Server";                         $this->altServer = $value;                      }                   }                }                return nl2br($htmlContent);             }          }          else             return $contents;       }       else       {          return False;       }    }     function getServerInfo($display_array=null, $very_first_str=null)    {       if (!isset($display_array))          $display_array = $this->fields;       if (!isset($very_first_str))          $very_first_str = $this->very_first_str;        if ($html = $this->getHTML())       {           // parsing the contents          $data = array();          foreach ($display_array AS $key => $item)          {             if ($this->isShoutcast)             {                $very_first_pos   = stripos($html, $very_first_str);                $first_pos   = stripos($html, $item, $very_first_pos);                $line_start   = strpos($html, "<td>", $first_pos);                $line_end   = strpos($html, "</td>", $line_start) + 4;                $difference   = $line_end - $line_start;                $line      = substr($html, $line_start, $difference);                $data[$key]   = strip_tags($line);             }             else             {                $data[$key]   = $this->nonShoutcastData[$item];             }          }          return $data;       }       else       {          return $this->errstr." (".$this->errno.")";       }    }     function createHistoryArray($page)    {       if (!in_array($page, $this->trackLists))       {          $this->trackLists[] = $page;          if ($html = $this->getHTML($page))          {             $fromPos   = stripos($html, $this->tableStart);             $toPos      = stripos($html, $this->tableEnd, $fromPos);             $tableData   = substr($html, $fromPos, ($toPos-$fromPos));             $lines      = explode("</tr><tr>", $tableData);             $tracks = array();             $c = 0;             foreach ($lines AS $line)             {                $info = explode ("</td><td>", $line);                $time = trim(strip_tags($info[0]));                if (substr($time, 0, 9) != "Copyright" && !preg_match("/Tag Loomis, Tom Pepper and Justin Frankel/i", $info[1]))                {                   $this->tracks[$c]['time'] = $time;                   $this->tracks[$c++]['track'] = trim(strip_tags($info[1]));                }             }             if (count($this->tracks) > 0)             {                unset($this->tracks[0]);                if (isset($this->tracks[1]))                   $this->tracks[1]['track'] = str_replace("Current Song", "", $this->tracks[1]['track']);             }          }          else          {             $this->tracks[0] = array("time"=>$this->errno, "track"=>$this->errstr);          }       }    } }   $ip  = "xxx.xxx.xxx.xxx"; //Stream-IP oder URL $port = "xxxx"; //Stream-Port   $display_array = array("Stream Title", "Stream Genre", "Current Song"); //Ausgabestring erweiterbar mit obigen Variablen  $radio = new Radio($ip.":".$port);  $data_array = $radio->getServerInfo($display_array);  echo "<br>"; echo "<table>n";  if (is_array($data_array)) {     foreach ($display_array AS $i => $text)     {          if ($text == "Stream Genre")     {             $datastring = "<span style="color: lightgrey; background-color: black;">".$data_array[$i]."</span>";         }    else         {      $datastring = $data_array[$i];         }  echo "<tr>n <td><font color='#FF9900'><b>".$text.":</b></span></td>n";         echo " <td>".$datastring."</td>n</tr>n";     } } else {     echo "<tr>n <td colspan="2" style="color: red;">".$data_array."</td>n</tr>n"; } echo "</table>n"; echo "<br>"; //Ausgabe Playerlogo und Link echo'        <a href="{X_SITEURL}xxx.pls" target="_new">           <img border="0" src="{X_SITEURL}images/winamp.png" width="20px" height="20px" alt="Winamp"></a>         <a href="{X_SITEURL}xxx.asx" target="_new">           <img border="0" src="{X_SITEURL}images/wmp.png" width="20px" height="20px" alt="MediaPlayer"></a>         <a href="{X_SITEURL}xxx.ram" target="_new">           <img border="0" src="{X_SITEURL}images/realplayer.png" width="20px" height="20px" alt="Realplayer"></a>               
<br>  
      
//Alternative Player

<a href="psradio://|ChannelId|9399" target="_new">            <img border="0" src="{X_SITEURL}images/phonostar-logo.gif"  width="100px" height="20px alt="Phonostarplayer"></a>             <br>                <p><a href="{X_SITEURL}webplayer/index.html" target="_new">           <img border="0" src="{X_SITEURL}images/webplayer.jpg"  width="100px" height="20px alt="Flash-Webplayer"></a></p>';
*/


ok..der Formatiert das nen bisl komisch also häng ich es nochmal als Zip an

bei der Playerausgabe sind die letzten beiden (phonostar und webplayer) alternative Player..also nicht für jeden brauchbar :)

Gruß
Set

Aktuell aus dem Forum

Forum Thema Antworten Views Letzter Beitrag
OffOffTopic [Wichtig] Übernahme myXOOPS 0 494 11.12.2023 18:57
alfred Gehe zum letzten Beitrag
Die Installation und Administration von XOOPS 2.5.X [Offen] Upgrade 2.5.11 3 2207 07.05.2023 07:03
Goffy Gehe zum letzten Beitrag