SilentMan
Przyjaciel forum

Płeć: 
Wiek: 24
Dołączył(a): 03 Mar 2004
Posty: 373
Skąd: Olsztyn / Trevelmond
|
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.
| Kod: | Zaznacz Podgląd (X)HTML Uruchom Zapisz |  
 <?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ę: | Kod: | Zaznacz Podgląd (X)HTML Uruchom Zapisz |  <style type="text/css"><!--
 td {font-family: Verdana; font-size: 10px; width: 50%; font-weight: bold}
 --></style>
 <table border="0" width="300" cellspacing="0" cellpadding="0">
 <tr>
 <td>Server status:</td>
 <td>{connection}</td>
 </tr>
 <tr>
 <td>Słuchaczy:</td>
 <td>{currentlisteners}</td>
 </tr>
 <tr>
 <td>Max słuchaczy:</td>
 <td>{maxlisteners}</td>
 </tr>
 <tr>
 <td>Jakość:</td>
 <td>{bitrate}</td>
 </tr>
 <tr>
 <td>Tytuł piosenki:</td>
 <td>{songtitle}</td>
 </tr>
 </table> |
| Dzięki temu mamy możliwość szybkiej modyfikacji sposobu 'podawania' statystyk radia na stronie www.[/code]
|
| |
|
| Dask
Gość
|
Wysłany: 23.12.2006 13:54
|
 |
To ja mam ten kod zapisać jako np. statystyki.php i zamieścić na stronie tak:
<script src="statystyki.php"></script>
i co dalej? niech ktoś to jasno wytłumaczy krok po kroku..
|
| |
|
| Dask
Gość
|
Wysłany: 23.12.2006 14:49
|
 |
A więc tak skopiowałem ten pierwszy kod i zmieniłem jedynie:
$host = "http://bestdj.stacja.fm:36002/listen.pls"; //adres serwera shoutcast
$port = "36002"; //port serwera shoutcast
na takie ustawienia jakie mam w radiu.
następnie zapisałem na mojej stronie tak:
<script type="text/php" src="statystyki.php"></script>
i w miejscu gdzie chce statystyki wkleiłem kod:
<style type="text/css"><!--
td {font-family: Verdana; font-size: 10px; width: 50%; font-weight: bold}
--></style>
<table border="0" width="300" cellspacing="0" cellpadding="0">
<tr>
<td>Server status:</td>
<td>{connection}</td>
</tr>
<tr>
<td>Słuchaczy:</td>
<td>{currentlisteners}</td>
</tr>
<tr>
<td>Max słuchaczy:</td>
<td>{maxlisteners}</td>
</tr>
<tr>
<td>Jakość:</td>
<td>{bitrate}</td>
</tr>
<tr>
<td>Tytuł piosenki:</td>
<td>{songtitle}</td>
</tr>
</table></div>
Czy dobrze to zrobiłem? jak nie to prosze o pomoc! [/code]
|
| |
|
pomek
BANITA!

Płeć: 
Wiek: 18
Dołączył(a): 09 Sty 2006
Posty: 1929
Skąd: Bytom
|
Wysłany: 23.12.2006 14:55
|
 |
|
| Dask
Gość
|
Wysłany: 23.12.2006 15:05
|
 |
Ok zmieniłem na:
a w tym kodzie co podał SilentMan to oprócz
trzeba coś zmienić? i adres servera shoutcast to wkleiłem link do słuchania a adres radia to www.bestdj.stacja.fm to dobrze zrobiłem?
|
| |
|
pomek
BANITA!

Płeć: 
Wiek: 18
Dołączył(a): 09 Sty 2006
Posty: 1929
Skąd: Bytom
|
Wysłany: 23.12.2006 15:19
|
 |
| Kod: | Zaznacz Podgląd (X)HTML Uruchom Zapisz |  <style type="text/css"><!--
 td {font-family: Verdana; font-size: 10px; width: 50%; font-weight: bold}
 --></style>
 <table border="0" width="300" cellspacing="0" cellpadding="0">
 <tr>
 <td>Server status:</td>
 <td>{connection}</td>
 </tr>
 <tr>
 <td>Słuchaczy:</td>
 <td>{currentlisteners}</td>
 </tr>
 <tr>
 <td>Max słuchaczy:</td>
 <td>{maxlisteners}</td>
 </tr>
 <tr>
 <td>Jakość:</td>
 <td>{bitrate}</td>
 </tr>
 <tr>
 <td>Tytuł piosenki:</td>
 <td>{songtitle}</td>
 </tr>
 </table></div> |
|
Zapisałeś do pliku tpl.txt?
|
| |
|
| Dask
Gość
|
Wysłany: 23.12.2006 15:23
|
 |
Tak, zapisałem do TPL.txt i do index.html też skopiowałem jeśli to coś pomoże to podam adres na jakim mam strone: www.musicparty.cba.pl
|
| |
|
| Wnuku
Gość
|
Wysłany: 05.01.2007 19:57 Skryp ;;) |
 |
Ej kto mi pomoze z skryptem i wytlumaczy mi to prosze pisac na moje gg 4391996 czy to wkleic jak to zrobic prosze o kontakt
|
| |
|
| Dask
Gość
|
Wysłany: 06.01.2007 15:15
|
 |
|
sefs
Użytkownik
Płeć: 
Wiek: 24
Dołączył(a): 03 Sie 2006
Posty: 1591
Pomocy: 2
Skąd: Szczecin
|
Wysłany: 07.01.2007 17:24
|
 |
IMO masz zablokowaną po stronie serwera możliwość wywoływania funkcji fsockopen()
|
| |
|
| Tenior
Gość
|
Wysłany: 16.01.2007 20:41
|
 |
|
| ERROR
Gość
|
Wysłany: 24.01.2007 16:55 Staty |
 |
Witam, nie wiem jak zrobic te staty prubowalem robic ale mi nie wychodzi prosze o pomoc ogolnie wiem jak inne staty sie robi ale tych nie umiem zrobic pls help piszcze domnie na gg 7523752 czesto niewidoczny
|
| |
|
| Gość
|
Wysłany: 31.01.2007 15:28
|
 |
mam problem z tym , wszystko dziala jak nalezy www.fb.6r.pl/statystyki.php
tylko ze portal mamy w jportalu i chcialem te statystyki wkleic pod topem w pliku index.txt / kto ma jportal bedzie wiedzial ocb..
Prosze o pomoc
|
| |
|
| Gość
Gość
|
Wysłany: 12.02.2007 00:58
|
 |
A jak zrobić aby wyświetlało w tych statystykach kto prowadzi daną audycje
|
| |
|
| liberator
Gość
|
Wysłany: 19.02.2007 14:44
|
 |
Ok przeczytałem już wiem co i jak ale koledzy czy ta sama formułka umieszczenia statystyk jest przy extrem-fusion PHP na php znam się troszkę kiebsko:)
|
| |
|
| wtf
Gość
|
Wysłany: 22.03.2007 23:05
|
 |
| Gość napisał(a): | | A jak zrobić aby wyświetlało w tych statystykach kto prowadzi daną audycje |
a jak sobie wyobrazasz wyciagnac takie info kto gra (czytaj- kto jest zalogowany do serwera z radiem) skoro pewnie wszyscy logują sie na te same dane?
|
| |
|