Skocz do zawartości

[PHP] Klasa do obsługi statystyk SHOUTcast 2 od PortalRadiowy.pl


Wojtek

Rekomendowane odpowiedzi

Witajcie!

 

Postanowiliśmy napisać i udostępnić dla Was prostą klasę w PHP do obsługi nowej wersji serwerów SHOUTcast 2.

Jeżeli ktoś korzysta z własnych statystyk i umieszcza je na swoim serwerze może być ona pomocna. :)

 

W razie pytań zachęcam do dyskusji.

 

Wersja na pastebin: http://pastebin.com/nD0gg0PV

 

<?php
/**
* SHOUTcast 2 statistics class
*
* @author PortalRadiowy.pl
* @copyright 2016 PortalRadiowy.pl
* @version 1.3
*/
class shoutcast2stats {
   private $_ip;
   private $_port;
   private $_sid;
   private $_json;

   public function __construct($ip, $port, $sid=1)
   {
       $this->_ip = $ip;
       $this->_port = $port;
       $this->_sid = $sid;
       $this->initCurl();
   }

   private function initCurl()
   {
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, 'http://'.$this->_ip.':'.$this->_port.'/stats?sid='.$this->_sid.'&json=1');
       curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (PortalRadiowy.pl)');
       curl_setopt($ch, CURLOPT_HEADER, 0);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($ch, CURLOPT_TIMEOUT, 3);
       $curl_exec = curl_exec($ch);
       $this->_json = ($curl_exec ? json_decode(iconv('UTF-8', 'UTF-8//IGNORE', $curl_exec)) : false);
       curl_close($ch);
   }
  
   public function get($name, $name_dj='')
   {
       if ($name == 'streamstatus') {
           if ($this->_json == false) {
               return 0;
           } elseif ($this->_json->streamstatus == 0) {
               return 1;
           } else {
               return 2;
           }
       } elseif (isset($this->_json->$name) && $name == 'dj' && !empty($name_dj)) {
           $dj_json = json_decode(substr(preg_replace('/\},[\s]*\{/', ',', preg_replace(array('/\([\s]*"/', '/"[\s]*\)/', '/"[\s]*,/'), array('{"', '"}', '":'), preg_replace_callback('/\\\\(\d+)/m', function($matches) { return iconv('Windows-1250', 'UTF-8//IGNORE', chr($matches[1])); }, $this->_json->dj))), 1, -1));
           if (isset($dj_json->$name_dj)) {
               return htmlspecialchars($dj_json->$name_dj);
           }
       } elseif (isset($this->_json->$name)) {
           return htmlspecialchars($this->_json->$name);
       }
       return '';
   }
}



/**
* Inicjalizacja klasy:
* ip-serwera - Zamień na adres IP swojego serwera SHOUTcast 2
* 8000 - Zamień na port swojego serwera SHOUTcast 2
*
* Opcjonalnie:
* Po argumencie z numerem portu, możesz wstawić argument z numerem streamu (kanału) sid, domyślnie: 1
* $stats = new shoutcast2stats('ip-serwera', 8000, 2); // Dla stream id: 2
*/
$stats = new shoutcast2stats('ip-serwera', 8000);
echo $stats->get('streamstatus'); // Informuje o stanie serwera: 0 - wyłączony, 1 - włączony (nikt nie nadaje), 2 - włączony (prowadzona jest transmisja)
echo $stats->get('currentlisteners'); // Aktualna ilość słuchaczy
echo $stats->get('uniquelisteners'); // Ilość unikalnych słuchaczy (zlicza na podstawie unikalnych adresów IP), wartość pola "Listener Peak"
echo $stats->get('peaklisteners'); // Rekord słuchaczy (ta wartość resetuje się w momencie restartu serwera SHOUTcast 2)
echo $stats->get('maxlisteners'); // Maksymalna ilość słuchaczy (ilość slotów)
echo $stats->get('servertitle'); // Wyświetla wartość pola "Stream Name", czyli często uznawane jako "Nazwa audycji". Poprawnie powinno odpowiadać za nazwę radia.
echo $stats->get('servergenre'); // Wyświetla wartość pola "Stream Genre(s)", czyli często uznawane jako "Nazwa prezentera". Poprawnie powinno odpowiadać za gatunki odgrywanej muzyki.
echo $stats->get('songtitle'); // Wyświetla wartość pola "Playing Now", czyli nazwa aktualnie odgrywanego utworu lub teksty E-RDS.
echo $stats->get('dj'); // Wyświetla wartość pola "dj" (pole dostępne tylko w statystykach).
// UWAGA! Poniższe opcje są dostępne tylko do usług Auto DJ zakupionych w firmie Slotex.pl, jeżeli korzystasz z funkcjonalności "Live DJ".
echo $stats->get('dj', 'icy-name'); // Wyświetla wartość pola "Name" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa audycji".
echo $stats->get('dj', 'icy-genre'); // Wyświetla wartość pola "Genre" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa prezentera".

 

Aktualizacja v1.2:

+ Dodano obsługę nowych pól "dj", które będą wykorzystywane wkrótce przez nową funkcjonalność w usługach Auto DJ oferowanych przez firmę Slotex.pl (szczegóły niebawem).

 

Aktualizacja v1.3:

* Naprawiono wyświetlanie polskich znaków dla parametrów z funkcji Live DJ.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 7 miesięcy temu...

$stats = new shoutcast2stats('ip-serwera', 8000);   wpisałem ip swego serwera i port , statystyki nie działaja,
skorzystałem z automatycznych statystyk:

https://staty.portalradiowy.pl/statystyki/styl5/staty.php?ip=s1.slotex.pl&port=7086&style=6&time=10&color=

 


do 1 szego odświerzenia pokazuje prezentera, ale po odświerzeniu pokazuje pilota ma ktos jakies pomysły??

 

[ADMINCGI sid=1] DJ name updated [[("icy-name","mix muzyka"), ("icy-genre","Basia"), chyba będe musiał poszukac skryptu na fotke aby wyswietlało fote prezentera.

Odnośnik do komentarza
Udostępnij na innych stronach

34 minuty temu, kosti napisał:

Twoje radio znajduje się na darmowym serwerze http://radioorbita.cba.pl/
Tam akurat takie funkcje PHP jak curl są zablokowane.

Ten sam problem dotyczył statystyk w starszych serwerach, tam był problem z funkcją fsockopen.

Przejdź na platny hosting stron www, nie bedziesz mial  tym żadnych problemów.  Mogę Ci polecić :

 

https://slotex.pl/oferta/hosting-www

 

https://slotex.pl/oferta/domeny

Odnośnik do komentarza
Udostępnij na innych stronach

oj panowie panowie a co ma ten piernik do wiatraka?? tu nie ma cba.pl darmowego
bezposrednie połączenie serwera slotex z panelem radiowym i co ma do rzeczy radioorbita.cba.pl? jak tu juz wywala zamiast prezentera pokazuje autopilota, co wy na to panowie??

 

do 1 szego odświerzenia pokazuje prezentera, ale po odświerzeniu pokazuje pilota i co ma wspólnego cba.pl??

https://staty.portalradiowy.pl/statystyki/styl5/staty.php?ip=s1.slotex.pl&port=7086&style=6&time=10&color=

http://s1.slotex.pl:7086/index.html?sid=1    z resztom co pokazuje serwer Gdy gra prezenter?? że gra autopilot

 

Stream Name:Audycja: MUZYCZNY MIX

Stream Genre(s):SUPERORBITA 
podczas gdy gra prezenter klopsik a wy ww chcecie abym gdzies załozył

 

Edytowane przez popmix
Odnośnik do komentarza
Udostępnij na innych stronach

http://prntscr.com/h0v4p3 no jest jak wół cba.pl...
Ten hosting ma sporo funkcji poblokowanych więc ta klasa nie będzie działać.
 

Co do:

https://staty.portalradiowy.pl/statystyki/styl5/staty.php?ip=s1.slotex.pl&port=7086&style=6&time=10&color=

Są to statystyki wygenerowane na portalu, więc zewnętrzne. Na cba będą działać, w postaci pływającej ramki (iframe).

Tyle, że to nie ma nic wspólnego z klasą PHP z tego tematu...

Odnośnik do komentarza
Udostępnij na innych stronach

kosti czy tu kuźwa czytac potrafisz???
https://staty.portalradiowy.pl/statystyki/styl5/staty.php?ip=s1.slotex.pl&port=7086&style=6&time=10&color=
gra prezenter a wyswietla że gra pilot chyba jasniej sie nie daco wy kużwa z tym cba??portal radiowy gryzie sie z slotexem kumasz, dlaczego nie wyswietla ze gra prezenter???NIE wyswiewtla, przez 10 sek wyswietla że gra BASIA a puzniej przeskakuje że gra autopilot pomimo że gra prezenter, zrozumieliscie??jest jak wół napisane staty nie działaja, co ten link ma wspólnego z cba??
https://staty.portalradiowy.pl/statystyki/styl5/staty.php?ip=s1.slotex.pl&port=7086&style=6&time=10&color=

kosti abo lennon abo sie znacie na czyms a bo nie znacie, bo  zwaszych wpisów wynika że moze mercedesa sobie zakupie i zacznie wszystko działac. jezeli sie nie znasz na tym to sie nie wypowiadaj. błąd jest w samym slotex dla zrozumienia statystyki nie wyswietla serwer Gdy gra prezenter.

Edytowane przez popmix
Odnośnik do komentarza
Udostępnij na innych stronach

Co do moich lub Lennona kompetencji dotyczących serwerów, nikt chyba tu wątpliwości nie ma. 
Mniejsza z tym. Napisałeś odpowiedź do tematu związanego z KLASĄ PHP. Więc odpowiedź była oczywista.

 

Teraz masz problem, że slotex się "gryzie" z portalem radiowym.... Takie info, ta sama firma się tym zajmuje.
Nie mam już mocy do Ciebie. Napisz na kontakt do portalu radiowego.

Odnośnik do komentarza
Udostępnij na innych stronach

@popmix korzystasz z funkcji Live DJ w usłudze Auto DJ i masz włączoną opcję E-RDS w serwerze SHOUTcast 2 - system E-RDS nie może być włączony, jeżeli korzystasz z funkcji Live DJ. W innym wypadku statystyki będą pokazywać błędne informacje.

 

A wystarczyło zapoznać się z informacjami, do których link prowadzi w wielu miejscach... https://slotex.pl/pomoc/korzystanie-z-funkcji-live-dj

Odnośnik do komentarza
Udostępnij na innych stronach

thx @Wojtek doszedłem do tego, ze rds zawadza,nawet iframe działa tak że statystyki leca jako tako

https://staty.portalradiowy.pl/statystyki/styl5/staty.php?ip=s1.slotex.pl&port=7086&style=6&time=10&color=

iframe też działa.jak na razie.
 

Live DJ w usłudze Auto DJ-- spełnia swoje zdanie na supper,, nie czytałem menu obsługi heheheh ale i tak próba off rds zdała egzamin pomimo że na ,
http://s1.slotex.pl:7086/index.html?sid=1  nie pokazuje gdy gra prezenter ale to nic statystyki działaja

<iframe>https://staty.portalradiowy.pl/statystyki/styl5/staty.php?ip=s1.slotex.pl&port=7086&style=6&time=10&color=</iframe>
http://radioorbita.cba.pl/
pozdro

 

Edytowane przez popmix
Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 lata później...
4 godziny temu, Koper napisał:

wszystko rozumiem Wojtek. Ale napisz mi jeszcze jak zrobic by nazwe wyswietlanej audycji ustawic na kolor czerwony

Przykładowo w pliku ze stylami css wpisz sobie:

.audycja {

color: red;

}

 

Następnie w pliku php np. na stronie statystyk, gdzie masz zaincludowaną tę klasę wywołaj:

 

<span class="audycja"><?PHP echo $stats->get('servertitle'); ?></span>

 

 

Można też bezpośrednio, bez dodawania stylu w pliku css:

 

<span style="color:red;"><?PHP echo $stats->get('servertitle'); ?></span>

 

Edytowane przez kosti
Odnośnik do komentarza
Udostępnij na innych stronach

29 minut temu, Koper napisał:

Poradziłem sobie z tym i dziękuję za odpowiedź. Tylko teraz mam taki problem ze jak wejdę na adres https://radio-relax.pl/stata.php to wyswietla ze gra radio relax a gdzie w rzeczywistości gra na chwile obecna prezenter 

Dodam ze poprawnie są wprowadzone wszelkie dane bo sprawdzałem na generatorze statystyk i tam wyswietla prawidlowo kto gra na chwile obecna. 

44.png

Widzę, że próbujesz użyć elementu z mojego szablonu... 

Musiałeś ostro porypać w pliku ustawienia.php

 

Nawet nie wiem jakim cudem wskazuje Ci CSS z bootstrapa w linku panelu radiowego..

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...
W dniu 22.10.2017 o 17:26, kosti napisał:

Twoje radio znajduje się na darmowym serwerze http://radioorbita.cba.pl/
Tam akurat takie funkcje PHP jak curl są zablokowane.

Ten sam problem dotyczył statystyk w starszych serwerach, tam był problem z funkcją fsockopen.

Kosti. Sprawa jest. Korzystam z twojego szablonu. Radio Ziel...

Statystyk tam nie ma. Nigdzie ich nie widzę, choć nie znam bootstrapa. Nie chcę podawać linka do radia, bo odświeżam stronę. Już wymagała. Wisiała na darmowym serwerze i pamiętała php fusion 6.x...  :( Mogę tylko powiedzieć, że zmieniłem stopkę. Dopisałem siebie jako przygotowującego stronę pod konkretne radio a u ciebie zostawiłem tylko FB bo serwer www ci wygasł. Pomóż proszę. bo mam jeszcze te od hovika i kilka innych ale pod V1 a mamy serwer V2

-->Mazi<--

Odnośnik do komentarza
Udostępnij na innych stronach

W dniu 8.04.2021 o 22:26, Mazi napisał:

Kosti. Sprawa jest. Korzystam z twojego szablonu. Radio Ziel...

Statystyk tam nie ma. Nigdzie ich nie widzę, choć nie znam bootstrapa. Nie chcę podawać linka do radia, bo odświeżam stronę. Już wymagała. Wisiała na darmowym serwerze i pamiętała php fusion 6.x...  :( Mogę tylko powiedzieć, że zmieniłem stopkę. Dopisałem siebie jako przygotowującego stronę pod konkretne radio a u ciebie zostawiłem tylko FB bo serwer www ci wygasł. Pomóż proszę. bo mam jeszcze te od hovika i kilka innych ale pod V1 a mamy serwer V2

-->Mazi<--

W tym szablonie akurat były statystyki w JavaScript, a nie PHP. 

Są niestety z niektórymi serwerami problemy, aby poprawnie działały. 

Należy je przerobić, na PHP + ramka, tak byłoby najłatwiej. 

Może jak kiedyś znajdę chwilę, to zrobię update tych statystyk właśnie pod opisaną tutaj klasę. ;)

 

Jeśli chcesz, to napisz mi prywatna widomość  z IP i PORTEM, Twojego serwera ShoutCast, wtedy będę mógł sprawdzić, czy wina leży po stronie hostingu, czy też skryptu.

Odnośnik do komentarza
Udostępnij na innych stronach

W dniu 10.04.2021 o 20:44, Jarek napisał:

Skoro nie jestes autorem szablonu to ja mozesz sie za niego uwazać robiąc tylko jego edycję... 

Przecież do szablonu są dodane wytyczne dotyczace praw autorskich..

Kosti nie ma już www. A tylko to usunąłem. Fb zostawiłem bo link działa.

Dalej jest podany jako autor. 

 

Zostawiłem autora

Edytowane przez Mazi
Chyba nie dopisałem...
Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona korzysta z plików cookie. Korzystając z forum, wyrażasz zgodę na: Warunki użytkowania, Polityka prywatności.