Wysłany: 19.06.2005 17:55 [PHP] statystyki radia shoutcast + mini tpl
Wielu posiadaczy własnego radia, i strony www tego radia, pragnie znaleźć skrypt który pokazywałby na stronie różne informacje na temat stanu radia z danej chwili, np. informacje o ilości słuchaczy, o aktualnie granej piosence, czy też bitrate w jakim nadawana jest audycja, oraz o tym czy serwer jest w ogólle włączony. Niestety takowy skrypt jest bardzo trudno znaleźć, tak więc postanowiłem zaprezentować własne rozwiązanie.
Aby skrypt działał poprawnie, php nie może być w ustawieniu safe-mode: funkcja fsockopen musi być dostępna, a z doświadczenia wiem że większość darmowych serwerów blokuje tą funkcje.
<?php //konfiguracja $host = "localhost"; //adres serwera shoutcast $port = "8000"; //port serwera shoutcast //koniec konfiguracji //nawiązujemy połączenie z serwerem $fp = fsockopen("$host", "$port", $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)\n"; exit; } else { //jeśli połączenie się powiedzie, pobieramy zawartość pliku 7.html generowanego dynamicznie przez serwer shoutcast, wartość pliku przypisujemy zmiennej $page fputs($fp,"GET /7.html HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n"); while(!feof($fp)) { $page .= fgets($fp, 1000); }} fclose($fp); //zamykamy połączenie z serwerem //usuwamy zbędne znaki, tak by pozostał sam ciąg z tablicą statystyk, poszczególne wartości oddzielone przecinkami przetwarzamy do tablicy za pomocą explode $page = ereg_replace(".*<body>", "", $page); $page = ereg_replace("</body>.*", ",", $page); $numbers = explode(",",$page); $connected=$numbers[1]; if($connected==1){ //sprawdzamy czy obecnie ktoś nadaje na tym serwerze, jeśli tak to przypisujemy zmiennej wartosc 'On' (c.d.n.) $connected="On"; $current = $numbers[0]; $max = $numbers[3]; $bitrate = $numbers[5]; $title = $numbers[6]; //przypisujemy wartości zmiennych tablicy do zmiennych o odpowiednich tytułach (nie jest to krok wymagany ale ułatwia orientacje która komórka tablicy za jaką treść jest odpowiedzialna) } else{ // c.d. Jesli nikt nie nadaje na serwerze to dajemy wartosc off $connected="Off"; } //otwieramy plik szablonu, i wczytujemy cala jego zawartosc do zmiennej $fll $File = fopen("tpl.txt", "r"); while(!feof($File)) { $new_line = fgets($File, 9999999); $fll = "$fll $new_line"; } fclose($File); //zamykamy plik $tpl = array('{connection}', '{currentlisteners}', '{maxlisteners}', '{bitrate}', '{songtitle}'); $tag = array("$connected", "$current", "$max", "$bitrate", "$title"); $fll = str_replace($tpl, $tag, $fll); //dokonujemy zamiany tpl tagow na tekst wlasciwy, i drukujemy wynik do przegladarki print "$fll"; ?>
W pliku tpl.txt należy przygotować szablon np. tabelkę:
Dorobiłem do Twojego skryptu jeszcze pozostałe argumenty, chociaż nie wiem jak zrobić "Title stream", a jest mi to potrzebne jak cholera Pod spodem przedstawiam skrypt z dodanymi (chyba) trzema argumentami:
Status serwera: </b>{connection}</b><br><br> Słuchaczy: <b>{currentlisteners} osób</b><bR><br> Unikalnych: <b>{unikalnych}</b><br><br> Max słuchaczy: <b>{maxlisteners} osób</b><br><br> Rekord: <b>{rekord}</b><br><br> Jakość: <b>{bitrate}kbps</b><br><br> Tytuł piosenki: <b>{songtitle}</b><br><br>
Witam ja jestem kompletnym ciemniakiem niedawno założyłem sobie jportala i robie powoli www .... mam 2 problemy ...
Pytania:
1.Gdzie wkleić ten skrypt statystyk, i czy to sie wkleja gdzieś tam w panelu admina jak sie edytuje strone czy trzeba to wkleić do edytora php i wrzucić na strone ?? ;/
2. Jak sie robi dane działy np ja nie chce miec tak jak jest od początku Strona główna , logowanie,forum itp itd ... tylko ja np chciałbym mieć inne działy i inną zawartośc w nich np ekipa i tam np swój tekst i zdjęcia itp. ??
Zobacz następny temat Zobacz poprzedni temat Nie możesz pisać nowych tematów Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach