Jump to content

Internet radio array problem


phpsycho

Recommended Posts

Well this is my first time using icecast and I am a little lost. I have these two (three in a way) files that are all linked in a way.

 

index.php > cast_info.php > status.xsl

 

so here are the files:

index.php

<?php 

require_once("cast_info.php"); 

?> 

<table> 

<tr> 

   <th colspan="2">Stats For Icecast Server: <?php echo $radio_info['title']; ?></th> 

</tr> 

<?php 

foreach($radio_info as $title => $data) { 

   switch($title) { 

      case 'now_playing' : 

         ?><tr> 

              <td><b><?php echo $title; ?></b></td> 

               <td><?php echo $data['artist']; ?><br /> 

               <?php echo $data['track']; ?> 

               </td> 

           </tr><?php 

      break; 

      case 'title' : 

         //skip 

      break; 

      default : 

         ?><tr> 

              <td><?php echo $title; ?></td> 

               <td><?php echo $data; ?></td> 

           </tr><?php 

      break; 

   } 

} 

?> 

</table> 

cast_info.php

<?php 

/* 
* Script Configurations 
*/ 
$SERVER = 'http://grimradio.com:8000'; 
//$SERVER = 'http://localhost:8000'; //enter the URL to your Icecast server 
$STATS_FILE = '/status.xsl'; //enter the path to your status.xsl file (leave blank unless u know its different) 


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

//get statistics file contents 
$fp = fopen($SERVER.$STATS_FILE,'r'); 

if(!$fp) { 
   //error connecting to server! 
   die("Unable to connect to Icecast server."); 
} 

$stats_file_contents = ''; 

while(!feof($fp)) { 
   $stats_file_contents .= fread($fp,1024); 
} 

fclose($fp); 

//create array to store results for later usage 
$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'] = ''; 

$temp = array(); 

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

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

//build final array from temp array 
$radio_info['title'] = $temp[0]; 
$radio_info['description'] = $temp[1]; 
$radio_info['content_type'] = $temp[2]; 
$radio_info['mount_start'] = $temp[3]; 
$radio_info['bit_rate'] = $temp[4]; 
$radio_info['listeners'] = $temp[5]; 
$radio_info['most_listeners'] = $temp[6]; 
$radio_info['genre'] = $temp[7]; 
$radio_info['url'] = $temp[8]; 

//format now playing 
$now_playing = explode(" - ",$temp[9]); 
$radio_info['now_playing']['artist'] = $now_playing[0]; 
$radio_info['now_playing']['track'] = $now_playing[1]; 

?> 

 

status.xsl

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
<xsl:template match = "/icestats" >
<html>
<head>
<title>Icecast Streaming Media Server</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
<h2>Icecast2 Status</h2>
<br />
<!--index header menu -->
<div class="roundcont">
<div class="roundtop">
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
</div>
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="4">
<tr>
	<td bgcolor="#656565">
	<a class="nav" href="admin/">Administration</a>
	<a class="nav" href="status.xsl">Server Status</a>
	<a class="nav" href="server_version.xsl">Version</a></td>
</tr>
</table>
<div class="roundbottom">
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
</div>
</div>
<br />
<br />
<!--end index header menu -->
<!--mount point stats-->
<xsl:for-each select="source">
<xsl:choose>
<xsl:when test="listeners">
<div class="roundcont">
<div class="roundtop">
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
</div>
<div class="newscontent">
    <div class="streamheader">
        <table cellspacing="0" cellpadding="0">
            <colgroup align="left" />
            <colgroup align="right" width="300" />
            <tr>
                <td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
                <xsl:choose>
                    <xsl:when test="authenticator">
                        <td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
                    </xsl:when>
                    <xsl:otherwise>
                        <td align="right"> <a href="{@mount}.m3u">M3U</a> <a href="{@mount}.xspf">XSPF</a></td>
                    </xsl:otherwise>
                </xsl:choose>
        </tr></table>
    </div>

<table border="0" cellpadding="4">
<xsl:if test="server_name">
<tr><td>Stream Title:</td><td class="streamdata"> <xsl:value-of select="server_name" /></td></tr>
</xsl:if>
<xsl:if test="server_description">
<tr><td>Stream Description:</td><td class="streamdata"> <xsl:value-of select="server_description" /></td></tr>
</xsl:if>
<xsl:if test="server_type">
<tr><td>Content Type:</td><td class="streamdata"><xsl:value-of select="server_type" /></td></tr>
</xsl:if>
<xsl:if test="stream_start">
<tr><td>Mount started:</td><td class="streamdata"><xsl:value-of select="stream_start" /></td></tr>
</xsl:if>
<xsl:if test="bitrate">
<tr><td>Bitrate:</td><td class="streamdata"> <xsl:value-of select="bitrate" /></td></tr>
</xsl:if>
<xsl:if test="quality">
<tr><td>Quality:</td><td class="streamdata"> <xsl:value-of select="quality" /></td></tr>
</xsl:if>
<xsl:if test="video_quality">
<tr><td>Video Quality:</td><td class="streamdata"> <xsl:value-of select="video_quality" /></td></tr>
</xsl:if>
<xsl:if test="frame_size">
<tr><td>Framesize:</td><td class="streamdata"> <xsl:value-of select="frame_size" /></td></tr>
</xsl:if>
<xsl:if test="frame_rate">
<tr><td>Framerate:</td><td class="streamdata"> <xsl:value-of select="frame_rate" /></td></tr>
</xsl:if>
<xsl:if test="listeners">
<tr><td>Current Listeners:</td><td class="streamdata"> <xsl:value-of select="listeners" /></td></tr>
</xsl:if>
<xsl:if test="listener_peak">
<tr><td>Peak Listeners:</td><td class="streamdata"> <xsl:value-of select="listener_peak" /></td></tr>
</xsl:if>
<xsl:if test="genre">
<tr><td>Stream Genre:</td><td class="streamdata"> <xsl:value-of select="genre" /></td></tr>
</xsl:if>
<xsl:if test="server_url">
<tr><td>Stream URL:</td><td class="streamdata"> <a target="_blank" href="{server_url}"><xsl:value-of select="server_url" /></a></td></tr>
</xsl:if>
<tr><td>Current Song:</td><td class="streamdata"> 
<xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" /></td></tr>
</table>
</div>
<div class="roundbottom">
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
</div>
</div>
<br />
<br />
</xsl:when>
<xsl:otherwise>
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
</xsl:otherwise>
</xsl:choose>

</xsl:for-each>
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;


<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a></div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

 

 

now what the problem is, is that it won't display the "now playing" info. not sure exactly where the error might be, but I am sure it has to do with that array.

 

you can view what does display here http://grimradio.com/

Link to comment
https://forums.phpfreaks.com/topic/235656-internet-radio-array-problem/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.