Witam.
Bardzo fajna, prosta w obsłudze klasa PHP do pobierania danych z serwera ShoutCast. W łapki mi wpadła to się podzielę z Wami
<?php/** Autor: Rafał Robakowski* Kontakt: rafal.robakowski (na) gmail.com*/class SHOUTcast {/** Łączenie z serwerem shoutcast* i pobieranie zawartosci pliku xml*/ function connect($host, $port, $pass) { global $xml; $fp = @fsockopen ($host, $port, $errno, $errstr, 5); if (!$fp) { return false; } else { fputs($fp, "GET /admin.cgi?pass={$pass}&mode=viewxml HTTP/1.1rn"); fputs($fp, "User-Agent: XML Getter (Mozilla Compatible)rnrn"); while (!feof($fp)) { $xml .= fgets($fp, 1024); } fclose($fp); return $xml; } }/** Zwracanie danej pozycji, oto ich lista:* CURRENTLISTENERS - ilość aktualnych słuchaczy* PEAKLISTENERS - dotychczasowy rekord liczby słuchaczy* MAXLISTENERS - maksymalna ilość słuchaczy* SERVERGENRE - rodzaj serwera* SERVERURL - adres URL strony* SERVERTITLE - nazwa serwera* SONGTITLE - nazwa utworu aktualnie odtwarzanego* IRC - identyfikator IRC* AIM - identyfikator AIM* ICQ - identyfikator ICQ* STREAMSTATUS - status strumienia* BITRATE - jakość nadawania*/ function show($item) { global $xml; $show = $xml; list(,$show) = explode('<' . strtoupper($item) . '>', $show); list($show,) = explode('</' . strtoupper($item) . '>', $show); return $show; } /** Zwracanie rekordu radia*/ function show_record($filename) { $file = $filename; include_once($file); $current = $this -> show('CURRENTLISTENERS'); if ( $current <= $peak_file ) { return $peak_file; } else { if (is_writable($file)) { $fp = fopen($file, 'a'); $new = '<?php $peak_file = '.$current.'; ?>
';
@fwrite($fp, $new);
fclose($fp);
return $current;
} else {
return 'Wystąpił bład, sprawdź chmody pliku rekord.txt';
}
}
}
function free_result() {
global $xml;
$xml = '';
}
}
/*
* Przykład wykorzystania w osobnym pliku
// Includujemy plik z klasa napisana powyzej
include_once('shoutcast.php');
$statystyki = new SHOUTcast();
// Jeśli skrypt nie uzyska polaczenia z serwerem wyswietl informacje
// Podajemy kolejno: IP serwera SHOUTcast, port serwera SHOUTcast, haslo do serwera SHOUTcast
if( !$statystyki -> connect('127.0.0.1', 'port', 'haslo'))
echo 'Serwer jest wyłączony';
// Jesli skrypt uzyska polaczenie z serwerem
else {
// Jeśli aktualnie nikt nie nadaje wyswietl informacje
if( $statystyki -> show('STREAMSTATUS') == 0 )
echo 'Aktualnie nikt nie nadaje';
// Jeśli ktos nadaje na serverze wyswietl statystyki
else {
echo '<table border="0" cellspacing="0" cellpadding="0">';
echo '<tr><td>Audycja: </td><td>' . $statystyki -> show('SERVERTITLE') . '</td></tr>';
echo '<tr><td>Prowadzi: </td><td>' . $statystyki -> show('SERVERGENRE') . '</td></tr>';
echo '<tr><td>Godziny: </td><td>' . $statystyki -> show('AIM') . '</td></tr>';
echo '<tr><td>Słucha: </td><td>' . $statystyki -> show('CURRENTLISTENERS') . '</td></tr>';
// Funkcja show_record(); wyswietla rekord zapisany z pliku, w nawiasach nalezy podac sciezke do pliku gdzie bedzie przetrzymywany rekord ( plik musi posiadac uprawnienia do zapisu ( chmody ), dzieki temu po zrestartowaniu serwera shoutcast rekord zostanie bez zmiana taki jaki byl przed restartem !
echo '<tr><td>Rekord: </td><td>' . $statystyki -> show_record('rekord/rekord.php') . '</td></tr>';
echo '</table>';
}
}
$statystyki -> free_result();
*/
?>
Oczywiście przy wywołaniu modułu show_record trzeba podać scieżkę do pliku .php, gdzie bedzie zapisywany rekord, natomiast plik należy utworzyć i nadać mu odpowiednie chmody ( prawa zapisu ). Plik php do ktorego wskażemy ścieżkę musi miec nastepujaca zawartosc:
<?php $peak_file = 0; ?>
Cała operacja jest oczywiscie zbędna, gdy niechcemy wyswietlać rekordu radia na stronie.