<?php /////////////////////////////////////////////////// //icecast2 status refined v1.1 xsl refined // Author: that dude over there at casterclub.com // Bugs: post in the forums at casterclub ////////////////////////////////////////////////// //start the madness already ////////////////////////////////////////////////// //start the configurations $ip = "localhost"; //your server address in the form of mydomain.com or 192.161.1.1 $port = "9000"; //the port of your server $ice2_station = "Эфир "; // your station or stream name ////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ //opening socket $fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection if(!$fp) { $success=2; //set if no connection //edit html to fit your stations site, this display is for offline status echo' <tr> <td width="100%" colspan="2"> <b><font face="Arial" size="2" color="#ffffff">'.$ice2_station.' временно отключен!</font></b></td> </tr>'; } if($success!=2){ //if connection fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl while(!feof($fp)) { $page .= fgets($fp, 1000); } fclose($fp); //close connection $page = ereg_replace(".*<pre>", "", $page); //extract data $page = ereg_replace("</pre>.*", ",", $page); //extract data $numbers = explode(",",$page); //bomb it and extract data $mount = $numbers[6]; $connections = $numbers[2]; $stream_n = $numbers[2]; $listeners = $numbers[4]; $desc = $numbers[4]; $cur_song = $numbers[5]; $str_url = $numbers[6]; $client_info = $numbers[7]; $test1 = $numbers[8]; //set vars that where empty and still dont know what the heck those values are ;-) $test2 = $numbers[9]; //set vars that where empty and still dont know what the heck those values are ;-) $test3 = $numbers[20]; //set vars that where empty and still dont know what the heck those values are ;-) $mount = $numbers[11]; $connections = $numbers[12]; $station =$numbers[13]; $listeners = $numbers[15]; $description = $numbers[15]; $cur_song = iconv("UTF-8","cp1251",$numbers [16]); $www_url = $numbers[17]; if (strlen($mount)<2) echo ' <tr> <td align="center" width="100%"><b> <font face="Arial" size="3" style="font-size: 9pt; "> <span style="color: rgb(255, 255, 255);"> Статус эфира: Нет потока </b></td> </tr> </tr> '; //edit html to fit your stations site, this display is for online status else echo' <tr> <td width="100%"><font face="Arial" size="3" style="font-size: 9pt; "> <span style="color: rgb(255, 255, 255);"> В эфире: <b>'.$cur_song.'</b></font></td> </tr></span> '; } ?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" > <xsl:output omit-xml-declaration="no" method="xml" 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" > <pre> MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL Global,Client:<xsl:value-of select="connections" /> Source: <xsl:value-of select="source_connections" />,,<xsl:value-of select="listeners" />,, <xsl:for-each select="source"> <xsl:value-of select="@mount" />,,<xsl:value-of select="name" />,<xsl:value-of select="listeners" />,<xsl:value-of select="description" />,<xsl:value-of select="artist" /><xsl:value-of select="title" />,<xsl:value-of select="url" /> </xsl:for-each> </pre> </xsl:template> </xsl:stylesheet>
<xsl:value-of select="artist" /> - <xsl:value-of select="title" />