Skocz do zawartości
Wojtek

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

Polecane posty

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.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

$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.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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.

Udostępnij ten post


Link to postu
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

Udostępnij ten post


Link to postu
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ł

 

Edytowano przez popmix

Udostępnij ten post


Link to postu
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...

Udostępnij ten post


Link to postu
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.

Edytowano przez popmix

Udostępnij ten post


Link to postu
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.

Udostępnij ten post


Link to postu
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

Udostępnij ten post


Link to postu
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

 

Edytowano przez popmix

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×