Guest User

PortalRadiowy.pl

a guest
Feb 17th, 2017
435
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. /**
  3. * SHOUTcast 2 statistics class
  4. *
  5. * @author PortalRadiowy.pl
  6. * @copyright 2016 PortalRadiowy.pl
  7. * @version 1.3
  8. */
  9. class shoutcast2stats {
  10.     private $_ip;
  11.     private $_port;
  12.     private $_sid;
  13.     private $_json;
  14.  
  15.     public function __construct($ip, $port, $sid=1)
  16.     {
  17.         $this->_ip = $ip;
  18.         $this->_port = $port;
  19.         $this->_sid = $sid;
  20.         $this->initCurl();
  21.     }
  22.  
  23.     private function initCurl()
  24.     {
  25.         $ch = curl_init();
  26.         curl_setopt($ch, CURLOPT_URL, 'http://'.$this->_ip.':'.$this->_port.'/stats?sid='.$this->_sid.'&json=1');
  27.         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (PortalRadiowy.pl)');
  28.         curl_setopt($ch, CURLOPT_HEADER, 0);
  29.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  30.         curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  31.         $curl_exec = curl_exec($ch);
  32.         $this->_json = ($curl_exec ? json_decode(iconv('UTF-8', 'UTF-8//IGNORE', $curl_exec)) : false);
  33.         curl_close($ch);
  34.     }
  35.    
  36.     public function get($name, $name_dj='')
  37.     {
  38.         if ($name == 'streamstatus') {
  39.             if ($this->_json == false) {
  40.                 return 0;
  41.             } elseif ($this->_json->streamstatus == 0) {
  42.                 return 1;
  43.             } else {
  44.                 return 2;
  45.             }
  46.         } elseif (isset($this->_json->$name) && $name == 'dj' && !empty($name_dj)) {
  47.             $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));
  48.             if (isset($dj_json->$name_dj)) {
  49.                 return htmlspecialchars($dj_json->$name_dj);
  50.             }
  51.         } elseif (isset($this->_json->$name)) {
  52.             return htmlspecialchars($this->_json->$name);
  53.         }
  54.         return '';
  55.     }
  56. }
  57.  
  58.  
  59.  
  60. /**
  61. * Inicjalizacja klasy:
  62. * ip-serwera - Zamień na adres IP swojego serwera SHOUTcast 2
  63. * 8000 - Zamień na port swojego serwera SHOUTcast 2
  64. *
  65. * Opcjonalnie:
  66. * Po argumencie z numerem portu, możesz wstawić argument z numerem streamu (kanału) sid, domyślnie: 1
  67. * $stats = new shoutcast2stats('ip-serwera', 8000, 2); // Dla stream id: 2
  68. */
  69. $stats = new shoutcast2stats('ip-serwera', 8000);
  70. echo $stats->get('streamstatus'); // Informuje o stanie serwera: 0 - wyłączony, 1 - włączony (nikt nie nadaje), 2 - włączony (prowadzona jest transmisja)
  71. echo $stats->get('currentlisteners'); // Aktualna ilość słuchaczy
  72. echo $stats->get('uniquelisteners'); // Ilość unikalnych słuchaczy (zlicza na podstawie unikalnych adresów IP), wartość pola "Listener Peak"
  73. echo $stats->get('peaklisteners'); // Rekord słuchaczy (ta wartość resetuje się w momencie restartu serwera SHOUTcast 2)
  74. echo $stats->get('maxlisteners'); // Maksymalna ilość słuchaczy (ilość slotów)
  75. echo $stats->get('servertitle'); // Wyświetla wartość pola "Stream Name", czyli często uznawane jako "Nazwa audycji". Poprawnie powinno odpowiadać za nazwę radia.
  76. 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.
  77. echo $stats->get('songtitle'); // Wyświetla wartość pola "Playing Now", czyli nazwa aktualnie odgrywanego utworu lub teksty E-RDS.
  78. echo $stats->get('dj'); // Wyświetla wartość pola "dj" (pole dostępne tylko w statystykach).
  79. // 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".
  80. echo $stats->get('dj', 'icy-name'); // Wyświetla wartość pola "Name" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa audycji".
  81. echo $stats->get('dj', 'icy-genre'); // Wyświetla wartość pola "Genre" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa prezentera".
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×