16 Kwiecień 2024, 17:13:11

Autor Wątek: [Klasa] Statystyki ShoutCast w PHP  (Przeczytany 10053 razy)

Karol

  • Administrator
  • Mistrz radiofonii
  • *****
  • Wiadomości: 1785
[Klasa] Statystyki ShoutCast w PHP
« dnia: 16 Październik 2010, 09:10:57 »
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$errstr5); 

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($fp1024); 
}
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.
« Ostatnia zmiana: 14 Sierpień 2013, 09:44:50 wysłana przez Karol »

matt94

  • Grafik
  • Radiowiec
  • *****
  • Wiadomości: 50
    • Status GG
    • www.WebGrafa.pl
Odp: [Klasa] Statystyki ShoutCast w PHP
« Odpowiedź #1 dnia: 02 Sierpień 2013, 18:32:59 »
Mam problem z tym skryptem :(
wywala:

Parse error: parse error, expecting `T_VARIABLE' or `'$'' in c:\usr\krasnal\www\przyklad-2\shoutcast.php on line 53
A po za tym coś źle koloruje składnię od połowy kodu. Czy na pewno to jest poprawny kod ?
Potrzebuje statystyk które zapisywały by rekord radia do pliku np. rekord.txt

Karol

  • Administrator
  • Mistrz radiofonii
  • *****
  • Wiadomości: 1785
Odp: [Klasa] Statystyki ShoutCast w PHP
« Odpowiedź #2 dnia: 14 Sierpień 2013, 09:43:38 »
Tak, jest uszkodzony, bo SMF czasami jakoś dziwnie interpretuje znaczniki code, ale jak właczysz cytowanie postu, to zawsze będziesz mógł skopiować normalnie ;)

Tymczasem poprawiłem ten kod wyżej, nie powinien sprawiać problemów już.
« Ostatnia zmiana: 14 Sierpień 2013, 09:45:49 wysłana przez Karol »

daniellos525

  • Początkujący
  • *
  • Wiadomości: 1
Odp: [Klasa] Statystyki ShoutCast w PHP
« Odpowiedź #3 dnia: 04 Marzec 2016, 01:41:47 »
jak ten skrypt PHP wkleić żeby działało na stronie?  :-\
mam wklejony ten plik PHP w hosting i nie wiem co dalej zrobić żeby się wyświetliło w pliku html (na stronie)

Karol

  • Administrator
  • Mistrz radiofonii
  • *****
  • Wiadomości: 1785
Odp: [Klasa] Statystyki ShoutCast w PHP
« Odpowiedź #4 dnia: 04 Marzec 2016, 11:07:00 »
Na dole klasy w komentarzu jest przykład użycia.