Skocz do zawartości

Status serwera w statystykach Shoutcast


Aragon

Rekomendowane odpowiedzi

Witam,

Mam pytanie odnoście powyższej klasy obsługującej statystyki shoutcast, a mianowicie chciałbym dodać w niej komunikat wyświetlany w dwóch przypadkach:

  • kiedy autopilot jest wyłaczony
  • kiedy serwer jest wyłaczony

 

Klasa ta została napisana przez @Wojtek, została lekko zmodyfikowana pod stronę radia, jednak z dodaniem komunikatów nie mogę się uporać.

Próbowałem samodzielnie, ale PHP nie jest moją mocną stroną !

 

Czy jest ktoś, kto mógł by mi pomóc z tym ? 

 

Z góry bardzo dziekuję za pomoc i wszystkie odpowiedzi. 

 

 

 

<head>
<link href='http://fonts.googleapis.com/css?family=Advent+Pro&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
</head>

<style>
.genre {
    font-family: 'Advent Pro Bold', sans-serif;
    text-align: left;
    color: #00a7c6;
    text-transform: uppercase;
    line-height: 45px;
    letter-spacing: 0px;
    font-weight: 400;
    font-size: 25px;
    border-color: rgb(255, 255, 255);
    border-style: none;
    margin: 0px;
    border-radius: 0px;
    padding: 0px;
}
.name {
    font-family: 'Advent Pro', sans-serif;
    text-align: left;
    color: #fff;
    text-transform: uppercase;
    line-height: 45px;
    letter-spacing: 0px;
    font-weight: 400;
    font-size: 43px;
    border-color: rgb(255, 255, 255);
    border-style: none;
    margin: 0px;
    border-radius: 0px;
    padding: 0px;
}
</style>
<?php
/**
* SHOUTcast 2 statistics class
*
* @author Slotex.pl / PortalRadiowy.pl
* @copyright 2016 Slotex.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 '';
    }
}

// Konwersja ISO-8859-2 -> UTF-8
function IsoToUtf8($str)
{
    return iconv("iso-8859-2", "utf-8", $str);
}

/**
* 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.slotex.pl', PORT);
// 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 '<div class="name">';
echo $stats->get('dj', 'icy-name'); // Wyświetla wartość pola "Genre" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa prezentera".
echo '</div>';

echo '<div class="genre">';
echo $stats->get('dj', 'icy-genre'); // Wyświetla wartość pola "Name" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa audycji".
echo '</div>';

 

 

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

Z pomocą tej klasy nie można wyświetlić info o autopilocie, czy jest włączony lub wyłączony. 
Można uzyskać 3 informacje o serwerze:
-online
-offline
-trwa transmisja.

Zrobiłem na szybko info czy serwer jest online, czy offline. 

 

<head>
<link href='http://fonts.googleapis.com/css?family=Advent+Pro&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
</head>

<style>
.genre {
    font-family: 'Advent Pro Bold', sans-serif;
    text-align: left;
    color: #00a7c6;
    text-transform: uppercase;
    line-height: 45px;
    letter-spacing: 0px;
    font-weight: 400;
    font-size: 25px;
    border-color: rgb(255, 255, 255);
    border-style: none;
    margin: 0px;
    border-radius: 0px;
    padding: 0px;
}
.name {
    font-family: 'Advent Pro', sans-serif;
    text-align: left;
    color: #fff;
    text-transform: uppercase;
    line-height: 45px;
    letter-spacing: 0px;
    font-weight: 400;
    font-size: 43px;
    border-color: rgb(255, 255, 255);
    border-style: none;
    margin: 0px;
    border-radius: 0px;
    padding: 0px;
}

.status_servera {
    color: red;
    font-weight: bold;
    font-size: 30pt;
    text-transform: uppercase;
}
</style>
<?php
/**
* SHOUTcast 2 statistics class
*
* @author Slotex.pl / PortalRadiowy.pl
* @copyright 2016 Slotex.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 '';
    }
}

// Konwersja ISO-8859-2 -> UTF-8
function IsoToUtf8($str)
{
    return iconv("iso-8859-2", "utf-8", $str);
}

/**
* 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('s3.slotex.pl', PORT);

$server = $stats->get('streamstatus');
$wlaczony = 'Serwer ONLINE'; //Komunikat o włączonym serwerze (można usunąć tekst pomiędzy '', aby nie wyświetlało się nic, w wypadku włączonego serwera.)
$wylaczony = 'Serwer OFFLINE'; //Komunikat o wyłączonym serwerze


echo '<div class="name">';
echo $stats->get('dj', 'icy-name'); // Wyświetla wartość pola "Genre" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa prezentera".
echo '</div>';

echo '<div class="genre">';
echo $stats->get('dj', 'icy-genre'); // Wyświetla wartość pola "Name" wpisaną w programie do nadawania, czyli często uznawane jako "Nazwa audycji".
echo '</div>';

echo '<div class="status_servera">';
if ($server >= 1): echo $wlaczony; elseif ($server == 0): echo $wylaczony; endif; 
echo '</div>';
		
?>
        

 

  • Thanks 1
Odnośnik do komentarza
Udostępnij na innych stronach

7 minut temu, kosti napisał:

Z pomocą tej klasy nie można wyświetlić info o autopilocie, czy jest włączony lub wyłączony. 
Można uzyskać 3 informacje o serwerze:
-online
-offline
-trwa transmisja.

Zrobiłem na szybko info czy serwer jest online, czy offline. 

 

Bardzo dziękuję @kosti za pomoc.  :)

Problem rozwiazany, temat do zamknięcia. 

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • 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.