Skocz do zawartości

Kod php łapiący status servera?


bela

Rekomendowane odpowiedzi

Witam ktoś posiada kod php łapiący status servera? Dlaczego mam tak że jeden server nie wyświetla żadnych danych? w 2 kody php działają takie jak historia, tytuł, ilość słuchaczy . 

 

Najlepiej jakby samemu dało się ustawić co ma się wyświetlać kiedy server jest off / on 

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

hmmm ciężko powiedzieć ponieważ nie mam dostępu do panelu admina a mówiłem dla kolegi żeby dal ostatnio na v1 bo chciałem zobaczyć czy moje bd działać ale nic to nie dało....

 

zmieniłem $stats = new shoutcast2stats('sonic.portalfoxmix.cl', 4458); i pokazuje się samo 0 :D  http://consciousness.hekko24.pl/xxx.php Tak sobie mysle ze moze adres servera zly podaje? Wpisałem ten sam który jest do laczenia sie przez winamp.... 

 

Posiadasz jakieś kod radio off / on php dla V1 ? 

 

 

 

 

 

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

Dnia 18.06.2020 o 16:35, RUFI napisał:

Pod adresem https://sonic.portalfoxmix.cl:4458/ nie ma serwera shoutcast

jest pod adresem bez tych portów. Przecież łącze sie z nim podając dane.  

https://sonic.portalfoxmix.cl:2083/widgets/player/?p=8446&type=shark

 

Tak stara wersja bo to radio darmowe i nie da się nowszej. Wersje php zawsze można zmienić na starsza :D Dalej czekam na odp. od kolegi. 

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

<?php

$ip='s8.myradiostream.com';							//IP/Host serwera shoutcast
$port='7882';	
   $sc[table1]	=	"<b>[dj][status]</b>";
   $sc[table2]   =   "<b>[audycja][status]</b>";
   $sc[table3]   =   "<b>[nuta][status]</b>";
   $sc[table4]   =   "<b>[ile]</b>";

if ($fp = @fsockopen($ip , $port))
{
fputs($fp,"GET /index.html HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");
fgets($fp);fgets($fp);fgets($fp);
       while(!feof($fp)) $in.=strip_tags(fgets($fp));
fclose($fp);
  # echo $in;

//  [status]
   $m[0]="Server is currently";
   $m[1]="";
   $mp[0]=strpos($in,$m[0]);
   $mp[1]=@strpos($in,$m[1]);
   $ml[0]=strlen($m[0]);
   $ml[1]=strlen($m[1]);

   $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , 5 ) ) );

   if( $tmp[1][0] == "up" )
       $dat[status] = "";
   elseif( $tmp[1][0] == "down" )
       $dat[status] = "Aktualnie nie nadajemy";
   else
       $dat[status] = "Złe ustawienia programu";

   if($dat[status]=="")
   {

 //  [audycja]
       $m[0]="Stream Title:";
       $m[1]="Content Type:";
       $mp[0]=strpos($in,$m[0]);
       $mp[1]=strpos($in,$m[1]);
       $ml[0]=strlen($m[0]);
       $ml[1]=strlen($m[1]);

       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );

       if( $tmp[1] ) $dat[audycja] = $tmp[1];
       else $dat[audycja] = "Złe ustawienia programu";

   //  [dj]
       $m[0]="Stream Genre:";
       $m[1]="Stream URL:";
       $mp[0]=strpos($in,$m[0]);
       $mp[1]=strpos($in,$m[1]);
       $ml[0]=strlen($m[0]);
       $ml[1]=strlen($m[1]);

       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) );

       if( $tmp[1] ) $dat[dj] = $tmp[1];
       else $dat[dj] = "Złe ustawienia programu";

   //  [statyw]
       $m[0]="Stream AIM:";
       $m[1]="Stream IRC:";
       $mp[0]=strpos($in,$m[0]);
       $mp[1]=strpos($in,$m[1]);
       $ml[0]=strlen($m[0]);
       $ml[1]=strlen($m[1]);

       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );

       if( $tmp[1] ) $dat[statyw] = $tmp[1];
       else $dat[statyw] = "pilot";

   //  [gg]
       $m[0]="Stream ICQ:";
       $m[1]="Stream AIM:";
       $mp[0]=strpos($in,$m[0]);
       $mp[1]=strpos($in,$m[1]);
       $ml[0]=strlen($m[0]);
       $ml[1]=strlen($m[1]);

       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );

       if( $tmp[1] ) $dat[gg] = $tmp[1];
       else $dat[gg] = "Złe ustawienia programu";

   //  [ile]
       $m[0]="kbps with";
       $m[1]="listeners";
       $mp[0]=strpos($in,$m[0]);
       $mp[1]=strpos($in,$m[1]);
       $ml[0]=strlen($m[0]);
       $ml[1]=strlen($m[1]);

       $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) ) );

       if( $tmp[1] ) $dat[ile] = $tmp[1][0];
       else $dat[ile] = "Złe ustawienia programu";

     //  [peak]
       $m[0]="Listener Peak:";
       $m[1]="Average";
       $mp[0]=strpos($in,$m[0]);
       $mp[1]=strpos($in,$m[1]);
       $ml[0]=strlen($m[0]);
       $ml[1]=strlen($m[1]);

       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-7) );

       if( $tmp[1] ) $dat[peak] = $tmp[1];
       else $dat[peak] = "Złe ustawienia programu";

 //  [nuta]
       $m[0]="Current Song:";
       $m[1]="Written by Ste";
       $mp[0]=strpos($in,$m[0]);
       $mp[1]=strpos($in,$m[1]);
       $ml[0]=strlen($m[0]);
       $ml[1]=strlen($m[1]);

       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );

       if( $tmp[1] ) $dat[nuta] = $tmp[1];
       else $dat[nuta] = "Złe ustawienia programu";

   }
}
else
{
   $dat=array();
   $dat[status]="Serwer Wyłaczony";
}

$co             =   array('[status]','[audycja]','[dj]','[statyw]','[gg]','[ile]','[peak]','[nuta]');
$naco           =   array($dat[status],$dat[audycja],$dat[dj],$dat[statyw],$dat[gg],$dat[ile],$dat[peak],$dat[nuta]);
$sc[table1]   =   str_replace($co,$naco,$sc[table1]);
$sc[table2]   =   str_replace($co,$naco,$sc[table2]);
$sc[table3]   =   str_replace($co,$naco,$sc[table3]);
$sc[table4]   =   str_replace($co,$naco,$sc[table4]);

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Stata</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2" />
<meta http-equiv="Refresh" Content="<? echo $czas; ?>; URL=?" />
<style type="text/css">
#cale {
width: 255px;
height: 115px;
display: block;
background: transparent;
position: relative;
color: White;
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
font-weight: bold;
text-shadow: 2px 2px 2px #0033FF;
}
#kto {
position : absolute;
left: 5px;
top: 0px;
width: 265px;
}

#audycja {
position : absolute;
left: 5px;
top: 30px;
width: 265px;
}

#nuta {
position : absolute;
left: 5px;
top: 60px;
width: 265px;
}
</style> 
</head>
<body>
<div id="cale">

	<div id="kto">	
	
Prezenter: <marquee align="middle" direction="left" behavior="scroll" truespeeed="truespeeed" scrollamount="2" scrolldelay="30">
<? echo $sc[table1]; ?>
</marquee>
	</div>


	<div id="audycja">
Audycja: <marquee align="middle" direction="left" behavior="scroll" truespeeed="truespeeed" scrollamount="2" scrolldelay="30">
<? echo $sc[table2]; ?>
</marquee>
	</div>
	
	<div id="nuta">
Piosenka: <marquee align="middle" direction="left" behavior="scroll" truespeeed="truespeeed" scrollamount="2" scrolldelay="30">
<? echo $sc[table3]; ?>
</marquee>
	</div>
</div>









</body>
</html>

Kawałek z mojego starego szablonu, spróbój na wersji PHP 5.2, powinno zatrybić. Dostosuj sobie CSS.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak wiem że do v1 i powiem Ci że gdzieś z forum je już brałem. Działa  z php 7.1 jednak nie przyda mi się bo nie ma tam zwykłej komendy on / off http://consciousness.hekko24.pl/radio/v1.php 

 

Kolegi kod i link http://consciousness.hekko24.pl/xxx.php

<?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('sonic.portalfoxmix.cl', 4458);
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".

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jakieś to powalone z tym serverem. Uzupełniłem plik php danymi za pomocą którymi łącze się z serverem wtyczką  SHOUTcast DSP 2.3.5 . Zaraz dowiem się czy kolega ma jakiś inny adres ale szczerze kiepsko to widzę. 

 

Do V1 nie masz żadnego statusu prostego ?  Tak żeby wyświetlił się "server włączony / server wyłączony" 

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

kod v2 działa już dobrze http://consciousness.hekko24.pl/x.php

Do łatwej informacji z servera off / on w v1 i v2 można użyć CURL ino trzeba pamiętać aby IP wyglądało tak na koniec sonic.portalfoxmix.cl:8446/7.html  lub s8.myradiostream.com:7882/7.html (czyli port po ip i /7.html ) a kod to już np. 

<?php
$online = "Online"; // Displays when stream is online
$offline['server'] = "Offline"; // Displays when server is offline
$offline['source'] = "Offline"; // Displays when server is online with no source
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "s8.myradiostream.com:7882/7.html");
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);
curl_close($ch);
$data = str_replace('</body></html>', "", $data);
$split = explode(',', $data);
if (empty($data)) {
	$status = $offline['server'];
} else { 
	if ($split[1] == "0") {
		$status = $offline['source'];
	} else {
		$status = $online;
	}
}
echo $status;
?>

Posiadasz może jakiś kod do song history na v2? 

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

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ą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

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.