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ę:
Witam , mam problem żeby umieścić status radia, jestem w tym cienki, czy ktoś może mi pomuc? dokłądnie chodzi mi o to
- ilu słuchaszy
-ilu osob online
-Jaki Dj gra
-i rekord słuchaczy;) kto może mi jakoś pomuc? byłbym wdzięczny
pzdr
GOŚĆ :|
Gość
Wysłany: 27.06.2007 19:41 Jak zrobić stadystyki własnego radia internetowego ??
Niewiem teraz wykorzystać te dane żebym miał stadystyki na własnej stronie... czyli jaki mam zrobić załącznik do tej konfiguracji... w języku html ??? czy php ?? Licze że mi pomorzecie... Najlepiej żeby ktoś na tym forum podał mi całe źrudło do załącznika, i pod jaką nazwą ma być zapisany.... Licze na was Z góry dzięki.........
mój kontakt - gg 9190102
Gość ;| (przemasss)
Gość
Wysłany: 04.07.2007 17:14 Już wiem jak to zrobić :D
Nie utrudniajcie sobie życia... już sam się skumałem o co chodzi
Dla tych tkórzy nie wiedzą jak założyć radio ja wytłómacze w 2 krokach
1. Tworzymy plik (w zwykłym notatniku) *.php i następnie w tekście poniżej zmieniamy to :
$sc[host] = "host (np. localhost)";
$sc[port] = port (np. 8000) ;
i wklejamy do zmieniony tekst do utworzonego pliku *.php
<?php //konfiguracja $host = "http://bluedog.wavestreamer.com"; //adres serwera shoutcast $port = "6623"; //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"; ?>
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