<?php
// Основной класс с кучей функций
class radioboss {
// Определяем языковые определения
const INFO_BLOCK = "Какую команду отправить?";
const C_VNIMANIE = "Внимательно выбирай";
const C_PLAY = "Воспроизвести";
const C_STOP = "Стоп";
const C_NEXT = "Следующий трек";
const C_PREV = "Предыдущий трек";
const A_PLAYBACKINFO = "Посмотреть что играет";
const A_INSERTTRACK = "Вставить трек";
const A_LIBRARY = "Получить библиотеку";
const A_TRACKARTWORK = "Скачать текущий трек";
const A_NEXTTRACKARTWORK = "Скачать следующий трек";
const A_SETNEXTTARCK = "Установить следующий трек";
const A_INSERT_END = "Вставить файл в конец списка";
const A_INSERT_CURRENT = "Вставить файл после текущего";
const A_INSERT_TO_POS = "Вставить файл в позицию списка";
const A_GETLIBRARY = "Получить библиотеку";
const R_ERROR_CMD = "Не понятно";
const R_ARTIST = "Артист";
const R_TITLE = "Заголовок";
const R_ALBUM = "Альбом";
const R_YEAR = "Год";
const R_GENRE = "Жанр";
const R_COMMENT = "Комментарий";
const R_FILE = "Файл";
const R_FILESIZE = "Размер";
const R_DURATION = "Продолжительность";
const R_PLAYCOUNT = "Прослушано";
const R_ERROR_FILE = "Укажите правильно имя файла";
const R_BITRATE = "Битрейт";
const R_DATEADDED = "Дата добавления";
const R_BPM = "BPM";
const R_RATING = "Рейтинг";
const R_LANGUAGE = "Язык";
const R_GENDER = "Пол";
// переменные для GET запроса на случай изменений
public $config = array("host" => NULL, "pass" => NULL);
function __construct($host, $pass)
{
$this -> config['host'] = $host;
$this -> config['pass'] = $pass;
}
function ms2time ($seconds) {
$hours = floor($seconds / 3600);
$mins = floor(($seconds - $hours*3600) / 60);
$s = $seconds - ($hours*3600 + $mins*60);
$mins = ($mins<10?"0".$mins:"".$mins);
$s = ($s<10?"0".$s:"".$s);
$time = ($hours>0?$hours.":":"").$mins.":".$s;
return $time;
}
function cmd ($cmd) {
$r_command = $this -> config['host'] . "pass=" . $this -> config['pass'] . "&cmd=" . $cmd;
$res = file_get_contents($r_command);
$result = "OK";
header("Location: http://life-fm.ru/index.php");
}
function playinfo ($r_actions, $r_value = "") {
// стрроку собирем
$r_act = $this -> config['host'] . "pass=" . $this -> config['pass'] . "&action=playbackinfo";
// отправляем и забираем
$xml = simplexml_load_file($r_act);
echo "<table border=1 cellpadding=0 cellspacing=0 class='playbackinfo'>";
echo "<tr><th>"
.self::R_ARTIST."</th><th>"
.self::R_TITLE."</th><th>"
.self::R_ALBUM."</th><th>"
.self::R_YEAR."</th><th>"
.self::R_GENRE."</th><th>"
.self::R_COMMENT."</th><th>"
.self::R_FILE."</th><th>"
.self::R_DURATION."</th><th>"
.self::R_PLAYCOUNT."</th></tr>";
echo "<tr><th colspan=9>Сейчас звучит</th></tr>";
$current = $xml->CurrentTrack->TRACK;
foreach($current as $key=>$value) {
echo "<tr>";
echo "<td>" .$value['ARTIST'] . "</td>";
echo "<td>" .$value['TITLE'] . "</td>";
echo "<td>" .$value['ALBUM'] . "</td>";
echo "<td>" .$value['YEAR'] . "</td>";
echo "<td>" .$value['GENRE'] . "</td>";
echo "<td>" .$value['COMMENT'] . "</td>";
echo "<td>" .$value['FILENAME'] . "</td>";
echo "<td>" .$value['DURATION'] . "</td>";
echo "<td>" .$value['PLAYCOUNT'] . "</td>";
echo "</tr>";
}
echo "<tr><th colspan=9>Следующий трек</th></tr>";
$nexttrack = $xml->NextTrack->TRACK;
foreach($nexttrack as $k=>$val) {
echo "<tr>";
echo "<td>" .$val['ARTIST'] . "</td>";
echo "<td>" .$val['TITLE'] . "</td>";
echo "<td>" .$val['ALBUM'] . "</td>";
echo "<td>" .$val['YEAR'] . "</td>";
echo "<td>" .$val['GENRE'] . "</td>";
echo "<td>" .$val['COMMENT'] . "</td>";
echo "<td>" .$val['FILENAME'] . "</td>";
echo "<td>" .$val['DURATION'] . "</td>";
echo "<td>" .$val['PLAYCOUNT'] . "</td>";
echo "</tr>";
}
$pos = floor($xml->Playback['pos']/1000);
$postime = $this->ms2time($pos);
$len = floor($xml->Playback['len']/1000);
$lentime = $this->ms2time($len);
echo "<tr><th colspan=9>Статус</th></tr>";
echo "<tr><td>Позиция: " . $postime . "</td>";
echo "<td>Позиция: " . $lentime . "</td>";
echo "<td colspan=7>Состояние: " . $xml->Playback['state'] . "</td>";
echo "</tr>";
echo "</table>";
}
function insertfile ($file, $pos = "-1") {
if($file == "") {
echo self::R_ERROR_FILE;
} else {
echo "<p>Вставлять будем:</p>";
echo $file."<br />";
echo $pos;
}
}
function getlibrary ($libraryname = "Base") {
$r_command = $this -> config['host'] . "pass=" . $this -> config['pass'] . "&action=library&filename=".$libraryname;
$xml = file_get_contents($r_command) or die("Ошибка загрузки URL");
$iskomoe = " xmlns=\"tracks\"";
$iskomoe2 = "<Version version=\"1\"/>";
// $iskomoe .= "<Version version=\"1\"/>";
$xmll = str_replace($iskomoe,"",$xml);
$xmll = str_replace($iskomoe2,"",$xmll);
$library = simplexml_load_string($xmll);
echo "<table border=1 id='myTable' cellpadding=0 cellspacing=1 class='tablesorter'>";
echo "<thead>";
echo "<tr><th>"
.self::R_TITLE."</th><th>"
.self::R_ARTIST."</th><th>"
// .self::R_ALBUM."</th><th>"
.self::R_YEAR."</th><th>"
// .self::R_COMMENT."</th><th>"
.self::R_GENRE."</th><th>"
.self::R_FILE."</th><th>"
.self::R_DURATION."</th><th>"
// .self::R_FILESIZE."</th><th>"
// .self::R_BITRATE."</th><th>"
// .self::R_DATEADDED."</th><th>"
// .self::R_BPM."</th><th>"
// .self::R_RATING."</th><th>"
// .self::R_LANGUAGE."</th><th>"
// .self::R_GENDER."</th><th>"
.self::R_PLAYCOUNT."</th></tr>";
echo "</thead><tbody>";
foreach($library as $key=>$val) {
echo "<tr>";
echo "<td>" .$val['title']. "</td>";
echo "<td>" .$val['artist']. "</td>";
// echo "<td>" .$val['album']. "</td>";
echo "<td>" .$val['year']. "</td>";
// echo "<td>" .$val['comment']. "</td>";
echo "<td>" .$val['genre']. "</td>";
echo "<td>" .$val['filename']. "</td>";
echo "<td>" .$this->ms2time(floor($val['duration']/1000)). "</td>";
// $filesize = round($val['filesize']/1024/1024, 2);
// echo "<td>" .$filesize. "</td>";
// echo "<td>" .$val['bitrate']. "</td>";
// echo "<td>" .$val['DateAdded']. "</td>";
// echo "<td>" .$val['BPM']. "</td>";
// echo "<td>" .$val['Rating']. "</td>";
// echo "<td>" .$val['Language']. "</td>";
// echo "<td>" .$val['Gender']. "</td>";
echo "<td>" .$val['PlayCount']. "</td>";
echo "</tr>";
}
echo "</tbody></table>";
echo '<div id="pager" class="pager" style="top: 652px; position: absolute; ">
<div id="pager" class="pager">
<form>
<img src="/templates/life/style/table/first.png" class="first"/>
<img src="/templates/life/style/table/prev.png" class="prev"/>
<input type="text" class="pagedisplay"/>
<img src="/templates/life/style/table/next.png" class="next"/>
<img src="/templates/life/style/table/last.png" class="last"/>
<select class="pagesize">
<option selected="selected" value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="500">500</option>
</select>
</form>
</div>';
}
} // конец класса
// Массив для построения интерфейса команд
$r_actions = array();
$r_result = "";
$r_actions = array(
"info"=>radioboss::C_VNIMANIE,
"play"=>radioboss::C_PLAY,
"stop"=>radioboss::C_STOP,
"next"=>radioboss::C_NEXT,
"prev"=>radioboss::C_PREV,
"playbackinfo"=>radioboss::A_PLAYBACKINFO,
"inserttoend"=>radioboss::A_INSERT_END,
"insertpostcurrent"=>radioboss::A_INSERT_CURRENT,
"inserttopos"=>radioboss::A_INSERT_TO_POS,
"getlibrary"=>radioboss::A_GETLIBRARY
);
?>