SHOUTcast Status Anzeige für Homepage

nfsmw15

Mitglied
Hi ich bitte um hilfe ich bekomm das nicht hin. Ich hab bis jetzt den Server Status, Stream Status, Listener Peak und die Song anzeige hin bekommen nur die anzeige für den Moderator der ON AIR ist bekomm ich nicht hin.
Ich bedanke mich schon mal im vorraus für die hilfe ;)
Code:
<?
$host = "localhost";
$port = "8000";
$fp = @fsockopen($host, $port, $errno, $errstr, 01);
if(!$fp) {
$status = "Offline";
}else{
fputs($fp,"GET /7.html HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
fclose($fp);
$page = ereg_replace(".*<body>", "", $page); 
$page = ereg_replace("</body>.*", ",", $page); 
$numbers = explode(",",$page); 
$currentlisteners=$numbers[0]; 
$connected=$numbers[1];
$peaklisteners=$numbers[2];
$maxlisteners=$numbers[3]; 
$reportedlisteners=$numbers[4];
$bit=$numbers[5];
$song=$numbers[6];
$titel=$numbers[7];
if($connected==0) {
$status = "Nicht_Verbunden";
}else{ 
$status = "Online";
} }
?>
<html>
<title>nfsmw15</title>
<body bgcolor="#EEEEEE" text="#000000">
<center>
<? if($status == "Online"){
?>
<table width="514" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Server Status:</font></td>
<td width="377"><font color="#339900" size=2 face="Arial, Helvetica, sans-serif">Server ist Online.</font></td>
</tr>
<tr>
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Stream Status:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2>Stream ist Online <? echo $bit; ?> kb/s mit <? echo $currentlisteners; ?> von <? echo $maxlisteners; ?> listeners (<? echo $reportedlisteners; ?> unique)</font></td>
</tr>
<tr>
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Listener Peak:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2><? echo $peaklisteners; ?></font></td>
</tr>
<tr>
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>DJ:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2><? echo $titel; ?></font></td>
</tr>
<tr>
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Song:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2><? echo $song; ?></font></td>
</tr>
</table>
<? }else{
if($status == "Offline"){
?>
<table width="514" border="0" cellspacing="0" cellpadding="0">
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Server Status:</font></td>
<td width="377"><font color="#FF0000" size=2 face="Arial, Helvetica, sans-serif">Server ist offline.</font></td>
</tr>
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Stream Status:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2>Stream ist Offline</font></td>
</tr>
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Listener Peak:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2>0</font></td>
</tr>
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Song:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2>None</font></td>
</tr>
</table>
<? }else{
if($status == "Nicht_Verbunden"){
?>
<table width="514" border="0" cellspacing="0" cellpadding="0">
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Server Status:</font></td>
<td width="377"><font color="#FF0000" size=2 face="Arial, Helvetica, sans-serif">Server ist Offline.</font></td>
</tr>
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Stream Status:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2>Stream ist Offline <? echo $bit; ?> kb/s mit <? echo $currentlisteners; ?> von <? echo $maxlisteners; ?> listeners (<? echo $reportedlisteners; ?> unique)</font></td>
</tr>
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Listener Peak:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2><? echo $peaklisteners; ?></font></td>
</tr>
<tr> 
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>Song:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2><? echo $song; ?></font></td>
</tr>
</table>
<? }}} ?>
</center>
</body>
</html>
 
Ja aber das ist nicht das problem das problem liegt warscheinlich hier
Code:
<tr>
<td width="104"><font face="Arial, Helvetica, sans-serif" size=2>DJ:</font></td>
<td width="377"><font face="Arial, Helvetica, sans-serif" size=2><? echo $titel; ?></font></td>
</tr>
aber ich weiß es nicht
 
also ich hab vor einiger Zeit mal nach Scripten zum Auslesen von Shoutcast-Servern gesucht und auch das eine oder andere gefunden, und wenn ich das schaffe packst DU das auch ;)

gugg mal bei phpclasses.org, und such nach Shoutcast
 
Sorry, wir haben das schon im stillen Kämmerlein gelöst.

Das Problem war, dass der Name des DJs nicht aus der 7.html hervorgeht, da er Bestandteil des Stream Title ist, welcher dort nicht mitgeliefert wird.

Stattdessen haben wir die index.html ausgelesen(nicht den Traffic ausser 8 lassen...die ist bedeutend grösser als die 7.html ;) )


PHP:
<?
$attr=array(
  array('Server Status',1) ,
  array('Stream Status',1), 
  array('Listener Peak',1) ,
  array('Average Listen Time',1) ,
  array('Stream Title',1) ,
  array('Content Type',1) ,
  array('Stream_Genre',1) ,
  array('Stream_URL',1), 
  array('ICQ',1) ,
  array('AIM',1), 
  array('IRC',1) ,
  array('Song',1) ,
);

$host = "abc.de";
$port = "8000";
$fp = @fsockopen($host, $port, $errno, $errstr, 01);






if(!$fp) 
  {
    $status = "Offline";
  }
else
  {
  $page='';
  $status = "Online";
  fputs($fp,"GET /index.html HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");
  while(!feof($fp)) 
    {
      $page .= fgets($fp, 1000);
    }
  fclose($fp);
  
  preg_match_all('|<table[^>]*align=center><tr>(.*)</tr></table>|s',$page,$page);
  preg_match_all('|<tr><td[^>]*>(.*)</td><td[^>]*>(.*)</td></tr>|Us',$page[0][0],$page);
  
  }
?>  
  
  <table border="0" cellpadding="3">
    <?php
      if($status=='Online')
      {
        foreach($attr as $k => $v)
          {
            if($v[1])
              {
              switch($k)
                {
                  default:
                    if(!$v[1])continue;
                    echo '<tr><td align="right">'.$attr[$k][0].':</td><td>'.$page[2][$k].'</td></tr>';
                }
              }
            }
        }
        else
        {
          ?>
          <tr><td>Server ist Offline</td></tr>
          <?
        }
    ?>
  </table>

</body>
</html>
 
Is immer ne frage des persönlichen Gescmacks, ob man diese index.html parst, oder ob man sich die Daten direkt vom Server holt :)
Ich bevorzuge letzteres ;)
 
Das bringt halt nichts, wenn die benötigten Daten nicht "direkt vom Server" abfragbar sind .

Übrigens ist die 7.html nicht "direkter vom Server" als die index.html :)
 
Hallo Leute,
ich klinke mich mal hier ein, weil Ihr das Problem scheinbar gelöst habt.
Ich verstehe es nur leider nicht :-(

Mein Problem ist, ich habe diese Script

PHP:
<div>
<center><br />
<?php 
/**
* Shoutcast Molok - A Joomla 1.0.8 shoutcast module
* @version 1.0
* @package mod_shoutcastextended.zip
* @copyright (C) 2005 by Molok - All rights reserved!
*/

# Don't allow direct acces to the file
 defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
  
$radioname = $params->get( 'radioname');
$host = $params->get( 'host', 'radio-meanvariation.de' );
$port = $params->get( 'port', '8000' );
$from = $params->get( 'from', 'from' );
$serverstatus = $params->get( 'serverstatus', 'Server Status' );
$currentsong = $params->get( 'currentsong', 'Current Song' );

//$fp=@fsockopen($host,$port,&$errno,&$errstr,10); 


$fp=@fsockopen($host,$port,$errno,$errstr,10);
if (!$fp) { 
echo "Connection Putus"; 
} else { 

fputs($fp,"GET /7 HTTP/1.1\nUser-Agent:Mozilla\n\n"); 

for($i=0; $i<1; $i++) { 
if(feof($fp)) break; 
$fp_data=fread($fp,31337); 
usleep(500000); 
} 

$fp_data=ereg_replace("^.*<body>","",$fp_data); 
$fp_data=ereg_replace("</body>.*","",$fp_data); 

list($current,$status,$peak,$max,$reported,$bit,$song) = explode(",", $fp_data, 7); 

if ($status == "1") { 

echo '<a href="http://'.$host.':'.$port.'/listen.pls"><img src="modules/mod_shoutcastextended/winamp.gif" border="0" alt="listen with Winamp" /></a>&nbsp;<a href="modules/mod_shoutcastextended/listen.asx"><img src="modules/mod_shoutcastextended/wmplayer.gif" border="0" alt="listen with Window Media Player" /></a>&nbsp;';
echo '<a href="modules/mod_shoutcastextended/listen.ram"><img src="modules/mod_shoutcastextended/realplayer.gif" border="0" alt="listen with RealPlayer" /></a>&nbsp<a href="modules/mod_shoutcastextended/listen.m3u"><img src="modules/mod_shoutcastextended/itunes.gif" border="0" alt="listen with iTunes"/></a><br />';
echo '<font face="verdana" size="2" color="#800000"><b> '.$radioname.' </b></font><br /><br /> ';
echo '<font face="verdana" size="2" color="#800000"><b> 'SC_SERVER_TITLE' </b></font><br /><br /> ';
echo '<font face="verdana" size="1"> <b>'.$serverstatus.'</b>: <font face="verdana" size="2" color="#009900"><b> Online</b></font><br /> <b>Bitrate</b>: '.$bit.' Kbps<br /> <b>'.$currentsong.'</b>:<br /> '.$song.' </font><br />'; 

} else { 
echo '<font face="verdana" size="2" color="#000000"><b> zur Zeit sind wir </b></font><br /><font face="verdana" size="2" color="#FF0000"><b> Offline </b></font>'; 
} } 
?>  </center> <br />
</div>

Das klappt auch ganz hervorragend, bis auf die Kleinigkeit mit dem DJ.

Ich habe der zur Verdeutlichung einfach mal an die Stelle wo der DJ ausgegeben werden soll den "Platzhalter" SC_SERVER_TITLE eingefügt.

Kann mir jemand mit einfachen Worten erklären wie ich das Ding jetzt dazu bekomme, eben diesen DJ an der Stelle auszugeben?
Die Daten werden ja vom SAM übermittelt und dort als Server Title deklariert.

DANKE schonmal Micha
 
Hallo,

habe diesen Beitrag beim googeln gefunden.

Hab deswegen auch eine Frage zur DJ-Namen-Anzeige im Shoutcaststatus.

Ich teste im moment das wbb3 und da habe ich auch eine Art Statusbfrage.

Nun möchte ich gerne wissen ob man da evtl. diese DJ-Anzeige (AIM) abfragenlassen kann.

Habe dafür 2 phps

Die erste:current.php
PHP:
<div style="Visibility: Hidden; Position: Absolute;"> 
<? 
$open = fsockopen("ip-adresse","port"); 
if ($open) { 
fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n"); 
$read = fread($open,1000); 
$text = explode(",",$read); 
$text = $text[6]; 
} else { $text="Connection Refused!"; } 
?> 
</div> 
<?echo $text;?>

Die zweite: advanced.php
PHP:
<div style="Visibility: Hidden; Position: Absolute;"> 
<? 
$open = fsockopen("radio-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> 
<center>
<? 
if ($text[1]==1) { $state = "OnAir"; } else { $state = "Offline"; } 
if ($er) { echo $er; exit; } 
echo "<font face=verdana size=2> 
Radio: <b>$state</b> | Stream läuft mit: $text[5] Kbps | Zuhörer: $text[0] of $text[3] ($text[4] Unique) | Peak Zuhörer: $text[2]<br><br>
<b>Aktueller Titel:</B> $text[6]

##Hier möchte ich den DJ-Namen haben###

</font>";?>
</center>

Wäre nett wenn da jemand helfen kann.

LG
Jacky
 

Neue Beiträge

Zurück