Dann holen wir den Thread mal aus der Versenkung :o)
Ich bastel nun auch schon eine ganze Weile an einem Script herum, welches das Bild des sendenden DJs ausgibt. Da meine PHP Kentnisse in einer Skala von 0-100 bei ca. 1 liegen dürfte, muss ich auch immer Schnipsel im Netz suchen und diese mühsam zusammen setzen.
Das Script, welches ich momentan einsetze funktioniert sehr gut, mit einem Nachteil, dass das Bild des zuletzt sendenden DJs auch nach seiner Sendung weiterhin angezeigt wird.
Die Abfrage geht über den Eintrag AIM.
Meine Bitte an alle PHP Profis... fügt doch mal bitte einen Schnipsel hinzu, der sicherstellt, dass nach der letzten Sendung (also wenn der Shoutcast Server aus ist) ein Bild xy.jpg angezeigt wird.
Hier der Code den ich einsetze:
Alles anzeigen
Ich bastel nun auch schon eine ganze Weile an einem Script herum, welches das Bild des sendenden DJs ausgibt. Da meine PHP Kentnisse in einer Skala von 0-100 bei ca. 1 liegen dürfte, muss ich auch immer Schnipsel im Netz suchen und diese mühsam zusammen setzen.
Das Script, welches ich momentan einsetze funktioniert sehr gut, mit einem Nachteil, dass das Bild des zuletzt sendenden DJs auch nach seiner Sendung weiterhin angezeigt wird.
Die Abfrage geht über den Eintrag AIM.
Meine Bitte an alle PHP Profis... fügt doch mal bitte einen Schnipsel hinzu, der sicherstellt, dass nach der letzten Sendung (also wenn der Shoutcast Server aus ist) ein Bild xy.jpg angezeigt wird.
Hier der Code den ich einsetze:
Quellcode
- <body bgcolor="#12447a">
- <?php
- $host = "IP"; //Host
- $port = "Port"; //Port
- $password = "Passwort"; //Server Password
- //Configuration Finished
- //Runs each time an XML element starts
- function StartHandler(&$Parser, &$Elem, &$Attr) {
- global $Data, $CData;
- /* Start with empty CData array. */
- $CData = array();
- /* Put each attribute into the Data array. */
- while ( list($Key, $Val) = each($Attr) ) {
- $Data["$Elem:$Key"] = trim($Val);
- // debug // echo "$Elem:$Key = " . $Data["$Elem:$Key"] . "\n";
- }
- }
- //Runs each time XML character data is encountered
- function CharacterHandler(&$Parser, &$Line) {
- global $CData;
- /*
- * Place lines into an array because elements
- * can contain more than one line of data.
- */
- $CData[] = $Line;
- }
- //Runs each time an XML element ends
- function EndHandler(&$Parser, &$Elem) {
- global $Data, $CData, $listeners, $server, $song, $dj, $wee;
- //Mush all of the CData lines into a string and put it into the $Data array.
- $Data[$Elem] = trim( implode('', $CData) );
- //echo "$Elem = " . $Data[$Elem] . "<br>\n";
- switch ($Elem){
- //for each case, we are putting some data into a variable.
- case 'AIM':
- $dj['AIM'] = $Data['AIM'];
- break;
- }
- }
- //open connection
- $fp = fsockopen("$host", $port, &$errno, &$errstr, 30);
- if (!$fp) {
- echo "Die Verbindung zum Server konnte nicht hergestellt werden! <BR>";
- }
- else {
- //request xml
- fputs($fp,"GET /admin.cgi?pass=".$password."&mode=viewxml&page=0 HTTP/1.0\nUser-Agent: Mozilla Compatible\n\n");
- while(!feof($fp)) {
- //put xml into $Data
- $Contents .= fgets($fp, 1000);
- }
- }
- //close connection
- fclose($fp);
- $Contents = str_replace('HTTP/1.0 200 OK','', $Contents);
- $Contents = str_replace('Content-Type:text/xml','', $Contents);
- $Contents = str_replace("\n",'', $Contents);
- $Contents = str_replace("\r",'', $Contents);
- $Contents = preg_replace('/(&|&)/i', '&', $Contents);
- $Contents = preg_replace('/[^\x20-\x7E\x09\x0A\x0D]/', "\n", $Contents);
- $Data = array();
- // Initialize the parser.
- $Parser = xml_parser_create('ISO-8859-1');
- xml_set_element_handler($Parser, 'StartHandler', 'EndHandler');
- xml_set_character_data_handler($Parser, 'CharacterHandler');
- //Pass the content string to the parser.
- if (!xml_parse($Parser, $Contents)) {
- $Probs[] = "$URI$Sym\n Had problem parsing file:\n "
- . xml_error_string(xml_get_error_code($Parser));
- }
- if (isset($Probs)) {
- echo implode("\n", $Probs);
- }
- //Output
- $listeners['AVERAGETIME'] = $listeners[AVERAGETIME]/60;
- $wee = $wee -1;
- $search = array('dj1','dj2','dj3');
- $replace = array('<IMG SRC="/images/dj1.jpg" BORDER="0">','<IMG SRC="/images/dj2.jpg" BORDER="0">','<IMG SRC="/images/dj3.jpg" BORDER="0">');
- echo str_replace($search, $replace, "
- <tr><td></td><td>{$dj[AIM]}</td></tr>\n
- ");
- ?>