Skocz do zawartości

Kod php łapiący status servera?


Polecane posty

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 

Edytowano przez bela
Link to postu
Udostępnij na innych stronach
Napisano (edytowany)

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 ? 

 

 

 

 

 

Edytowano przez bela
Link to postu
Udostępnij na innych stronach
Napisano (edytowany)
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. 

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

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

 

Link to postu
Udostępnij na innych stronach
Napisano (edytowany)

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" 

Edytowano przez bela
Link to postu
Udostępnij na innych stronach
   $sc[table1]	=	"<b>Serwer Włączony</b>";
   $sc[table2]   =   "<b>Serwer Włączony</b>";
   $sc[table3]   =   "<b>Serwer Włączony</b>";
   $sc[table4]   =   "<b>Serwer Włączony</b>";

Zmień tylko to, powinno działać. 

Link to postu
Udostępnij na innych stronach
Napisano (edytowany)

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? 

Edytowano przez bela
Link to postu
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Maksymalna ilość emotikon wynosi 75.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...