У меня есть этот скрипт, чтобы проверить название песни и имя слушателя (DJ), но он не всегда работает так, как должен
это должно быть, если статус 1 показывает то, что захватывает статистика, показанная в автономном режиме. но он не хочет работать, я получил этот код от друга, он не хочет перекодировать его, но я не знаю, как заставить его работать с shoutcast 2.0
вот код
<?php
class radioStuff {
/**
Shoutcast specific class to grab server stats
*/
private $url = "http://sc.*REMOVED*.co.uk";
private $port = 80;
private $json_object;
public function __construct() {
$ch = curl_init();
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$this->url . ':' . $this->port . '/stats?json=1');
// Execute
$result=curl_exec($ch);
// Closing
curl_close($ch);
$this->json_object = json_decode($result);
}
public function getHabboUrl() {
$imageString = 'http://www.habbo.com/habbo-imaging/avatarimage?user=' . $this->json_object->servergenre . '&direction=4&head_direction=3&action=wlk&gesture=sml';
return $imageString;
}
public function getCurrentListeners() {
return $this->json_object->currentlisteners;
}
public function getSTATUS() {
return $this->json_object->streamstatus;
}
public function getCurrentDJ() {
return $this->json_object->servertitle;
}
public function getCurrentSong() {
return $this->json_object->songtitle;
}
}
$radio = new radioStuff();if($radio->getSTATUS == 1) {
$response = array(
'dj' => 'Radio statistics are offline!',
'song' => 'We are offline!', 'listeners' => ''
);
header('Content-Type: application/json');
echo json_encode($response);} else {
$response = array(
'dj' => $radio->getCurrentDJ(),
'song' => $radio->getCurrentSong(),
'listeners' => $radio->getCurrentListeners()
);
header('Content-Type: application/json');
echo json_encode($response);
}
У вас есть ошибка в вашем коде:
if($radio->getSTATUS == 1) {
должно быть
if($radio->getSTATUS() == 1) {
getSTATUS
это функция, поэтому вы должны вызывать ее с ()
Кроме того, если статус потока 1
— поток активен, и если статус потока равен 0 — то ваша станция отключена, поэтому замените 1 на 0 в своем сравнении.
Других решений пока нет …