<?php
/*
* STREAMPLUS - Script zum Auslesen aktueller Shoutcast - Server - Informationen
*
* Das Script ist relativ einfach aufgebaut. Sollten Sie trotzdem Hilfe brauchen,
* lesen Sie sich den Artikel in der FAQ dazu durch.
*
http://www.streamplus.de/faq.php#S.06
*/
define("HOST", "streamplus18.leonex.de"); // Der Host Ihres Servers (finden Sie unter Server -> Server-Daten -> Streamen als Moderator)
define("PORT", "17812"); // Der Port Ihres Servers (finden Sie unter Server -> Server-Daten -> Streamen als Moderator)
define("ADMIN_PASSWORT", "
xxxxxxx"); // Das Admin-Passwort Ihres Servers (finden Sie unter Server -> Optionen)
function between($von,$bis,$string) {
$a = explode($von,$string);
$b = explode($bis,$a[1]);
return $b[0];
}
// Verbindung mit dem Shoutcast - Server und Download der XML Datei
$xml = '';
$fp = fsockopen(HOST, PORT, $errno, $errstr, 5);
$send = "GET /admin.cgi?pass=".ADMIN_PASSWORT."&mode=viewxml&page=0 HTTP/1.1\r\n"
. "Host: ".HOST.":".PORT."\r\n"
. "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)\r\n"
. "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
. "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n"
. "Accept-Encoding: gzip,deflate\r\n"
. "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"
. "Keep-Alive: 300\r\n"
. "Connection: keep-alive\r\n\r\n";
fwrite($fp, $send);
while(!feof($fp))
{
$xml .= fgets($fp, 1024);
}
fclose($fp);
/*
* In den folgenden Variablen stehen die wichtigsten Informationen wie:
* das aktuelle Lied, der Status des Servers, wie viele Zuhoerer gerade online sind und wie der Server ueberhaupt heisst
*/
$server_titel = between("<SERVERTITLE>", "</SERVERTITLE>", $xml);
$server_genre = between("<SERVERGENRE>", "</SERVERGENRE>", $xml);
$server_url = between("<SERVERURL>", "</SERVERURL>", $xml);
$stream_status = (int)between("<STREAMSTATUS>", "</STREAMSTATUS>", $xml);
$zuhoerer = (int)between("<CURRENTLISTENERS>", "</CURRENTLISTENERS>", $xml);
$max_zuhoerer = (int)between("<MAXLISTENERS>", "</MAXLISTENERS>", $xml);
$song_titel = between("<SONGTITLE>", "</SONGTITLE>", $xml);
/*
* Im Folgenden werden die Zuhoerer aus der XML ausgelesen und in das array $listeners geschrieben
*
* das array ist folgendermassen aufgebaut:
*
* $listeners[index][ip] <- IP des Zuhoerers
* $listeners[index][client] <- Name des Programms, was der Zuhoerer benutzt
* $listeners[index][verbindungsdauer] <- Zeit seitdem der Zuhoerer online ist (angabe in Sekunden)
*/
$listeners = array();
$l = explode("<LISTENER>", between("<LISTENERS>", "</LISTENERS>", $xml));
foreach($l as $listener) {
if(between("<HOSTNAME>", "</HOSTNAME>", $listener) != "") {
array_push($listeners, array(
"ip" => between("<HOSTNAME>", "</HOSTNAME>", $listener),
"client" => between("<USERAGENT>", "</USERAGENT>", $listener),
"verbindungsdauer" => between("<CONNECTTIME>", "</CONNECTTIME>", $listener))
);
}
}
/*
* Im Folgenden werden die Songs aus der XML ausgelesen und in das array $songs geschrieben
*
* das array ist folgendermassen aufgebaut:
*
* $songs[index][abspielzeit] <- Unix - Timestamp von dem Datum und der Zeit, wann das Lied abgespielt wurde
* $songs[index][titel] <- Titel des Liedes plus Albumname und Interpret, falls angegeben
*/
//
$songs = array();
$s = explode("<SONG>", between("<SONGHISTORY>", "</SONGHISTORY>", $xml));
foreach($s as $song) {
if(between("<TITLE>", "</TITLE>", $song) != "") {
array_push($songs, array(
"abspielzeit" => between("<PLAYEDAT>", "</PLAYEDAT>", $song),
"titel" => between("<TITLE>", "</TITLE>", $song))
);
}
}
?>
<html>
<head>
<title>StreamPlus - Shotcast Server Information</title>
<style type="text/css">
body {
font-family: Arial, Verdana;
}
</style>
<p style="color: red">
<?php echo $song_titel; ?>
</p>
</head>
<body>
<h1>Informationen von <i><?php echo $server_titel; ?></i></h1>
<table>
<tr>
<td>Server Genre:</td>
<td><b><?php echo $server_genre; ?></b></td>
</tr>
<tr>
<td>Server URL:</td>
<td><a href="<?php echo $server_url; ?>"><b><?php echo $server_url; ?></b></a></td>
</tr>
<tr>
<td>Stream Status:</td>
<td><b><?php echo $stream_status; ?></b></td>
<td>(1 bedeutet, dass der Server läuft)</td>
</tr>
<tr>
<td>Zuhörer:</td>
<td><b><?php echo $zuhoerer; ?></b></td>
<td>(von maximal <?php echo $max_zuhoerer ?> Zuhörern)</td>
</tr>
<tr>
<td>Aktueller Titel:</td>
<td><b><?php echo $song_titel; ?></b></td>
<td>(Titel des aktuellen Liedes)</td>
</tr>
</table>
<p> </p>
<table>
<tr>
<th align="left">IP</th>
<th align="left" style="padding-left:10px;">Programm</th>
<th align="right">Verbunden seit</th>
</tr>
<?php foreach($listeners as $listener) { ?>
<tr>
<td><?php echo $listener["ip"]; ?></td>
<td style="padding-left:10px;"><?php echo $listener["client"]; ?></td>
<td align="right"><?php echo $listener["verbindungsdauer"]; ?> sek</td>
</tr>
<?php } ?>
</table>
<p> </p>
<table>
<tr>
<th align="left">Abspielzeit</th>
<th align="left" style="padding-left:10px;">Song Titel</th>
</tr>
<?php foreach($songs as $song) { ?>
<tr>
<td><?php echo date("d.m.Y, H:i:s", $song["abspielzeit"]); ?></td>
<td style="padding-left:10px;"><?php echo $song["titel"]; ?></td>
</tr>
<?php } ?>
</table>
</body>
</html>