Advertisement
Guest User

PortalRadiowy.pl

a guest
Feb 8th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.84 KB | None | 0 0
  1. <?php
  2. /**
  3. * SHOUTcast 2 statistics class
  4. *
  5. * @author PortalRadiowy.pl
  6. * @copyright 2016 PortalRadiowy.pl
  7. * @version 1.2
  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('{"', '"}', '":'), $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".
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement