SoulTaker

 
<<< Назад

API музыкального плеера

Команды управления встроенным музыкальным плеером с примерами. Воспроизведение музыки на терминалах.

HTTP (AJAX) управление

Все команды выполняются с помощью HTTP GET запросов по адресу:

http://<адрес_сервера>/popup/app_player.html?ajax=1&command=<команда>&param=<параметр>

Где:

  • <адрес_сервера> – доменное имя или ip адрес сервера, на котором установлен MajorDoMo;
  • <команда> – имя команды, которую необходимо выполнить (об этом ниже);
  • <параметр> – данные, передаваемые команде.
    Также, дополнительно можно передать еще несколько переменных:
  • play_terminal=<терминал> – указывается имя терминала, для которого предназначается команда (по умолчанию – текущий терминал, если невозможно определить, то MAIN).
  • session_terminal=<терминал> – имена терминалов, разделенные запятой, которые использует пользователь (в рамках данной сессии);
    В результате выполнения команды будет возвращен JSON объект следующей структуры:
  • success – результат выполнения команды (boolean);
  • message – текстовое разъяснение результата выполнения или ошибки (string);
  • data – данные, полученные в результате выполнения команды (если необходимо).

Список доступных команд:
Каждый тип терминала имеет свой набор доступных команд, зависящий от его технических возможностей. Получить данный список можно с помощью команды features:

http://localhost/popup/app_player.html?ajax=1&command=features

Ответ будет записан в data в виде массива строк с именами команд.
При попытке выполнить команду, которую данный тип терминала не поддерживает, то success будет установлен в false, а в message будет передано сообщение с описанием причины.
Для терминалов с полной совместимостью со всеми командами (например VLC через HTTP) список будет таким:

  • status – получение информации о текущем состоянии плеера. На данный момент это одномерный массив из следующих значений:
    • track_id – идентификатор воспроизводимого трека (integer, если воспроизведение остановлено, то -1);
    • length – длина текущего трека в секундах (integer, если воспроизведение остановлено или невозможно определить данное значение, то 0);
    • time – текущий прогресс воспроизведения в секундах (integer, если воспроизведение остановлено, то 0);
    • state – статус воспроизведения (string, возможные значения: stopped/playing/paused/unknown);
    • volume – уровень громкости в процентах (integer, некоторые типы плееров могут возвращать значение больше 100);
    • random – режим воспроизведения треков в случайном порядке (boolean);
    • loop – режим циклического воспроизведения плейлиста (boolean);
    • repeat – режим циклического воспроизведения трека (boolean).
  • play – воспроизвести указанный в param файл. В качестве ответа будет возвращен ID трека (integer);
  • pause – поставить воспроизведение на паузу / снять с паузы. В качестве ответа будет возвращен статус (boolean): поставлено на паузу = true, снято с паузы = false;
  • stop – остановить воспроизведение;
  • next – следующий трек (в плейлисте). В качестве ответа будет возвращен ID трека (integer);
  • previous – предыдущий трек (в плейлисте). В качестве ответа будет возвращен ID трека (integer);
  • seek – перейти на указанную в param позицию (время в секундах от начала трека);
  • set_volume – установить указанный в param уровень громкости (integer от 0 до 100);
  • get_volume – получить текущее значение уровня громкости (integer от 0 до 100);
  • set_system_volume - установить указанный в param уровень системной громкости сервера (integer от 0 до 100);
  • get_system_volume - получить текущее значение системного уровня громкости сервера (integer от 0 до 100);
  • pl_get – получить текущий плейлист. На данный момент это двумерный ассоциативный массив со следующей структурой:
    • id – идентификатор трека (integer);
    • name – название трека (string);
    • file – путь до файла с треком (string).
  • pl_add – добавить в плейлист новый файл, указанный в param. В качестве ответа будет возвращен ID трека (integer);
  • pl_delete – удалить трек из плейлиста (по его id);
  • pl_empty – очистить плейлист;
  • pl_play – начать воспроизведение конкретного трека из плейлиста (по его id);
  • pl_random – включить/отключить режим воспроизведения треков в случайном порядке. В качестве ответа будет возвращен статус (boolean): включено = true, отключено = false;
  • pl_loop – включить/отключить режим циклического воспроизведения плейлиста. В качестве ответа будет возвращен статус (boolean): включено = true, отключено = false;
  • pl_repeat – включить/отключить режим циклического воспроизведения текущего трека. В качестве ответа будет возвращен статус (boolean): включено = true, отключено = false;

Пример (jQuery):

// Устанавливаем уровень громкости мультимедиа на 70% для терминала MAIN
$.ajax({
    url: '/popup/app_player.html?ajax=1&command=set_volume&param=70&play_terminal=MAIN',
    dataType: 'json'
}).done(function(json) {
    if(json.success) {
        // Если команда успешно выполнена, то сообщаем об этом
        console.log('Готово!');
        // Так же, можно вывести данные, полученные в результате выполнения команды
        // Они хранятся в json.data и их формат различается для каждой из команд (см.выше)
    } else {
        // Если произошла ошибка, выводим ее описание
        console.error(json.message);
    }
});

PHP управление

Логика работы, аналогична той, что описана выше, потому повторяться не буду. Различается только код примера использования:

$player = new app_player();

$player->play_terminal = 'MAIN'; // Имя терминала
$player->command  = 'set_volume'; // Команда
$player->param   = 70; // Параметр

$player->ajax   = TRUE;
$player->intCall  = TRUE;
$player->usual($out);

if($player->json['success']) {
    // Если команда успешно выполнена, то сообщаем об этом
    echo 'Готово!';
    // Так же, можно вывести данные, полученные в результате выполнения команды
    // Они хранятся в $player->json['data'] и их формат различается для каждой из команд (см.выше)
} else {
    // Если произошла ошибка, выводим ее описание
    echo $player->json['message'];
}

Обсуждение (3) (12)

..., Россия

Веб-сайт:
http://google.com