В этом разделе показано, как использовать API нашей панели управления Интернет-радио для получения информации о состоянии эфира и других данных у себя на сайте. Используя наш API Вы можете строить свои собственные скрипты и модули для сайта своего радио.
В результате запроса к API будут выданы данные в формате JSON/JSONP.
Вызов API происходит по адресу <адрес Вашей панели на сервере>/api/<параметры>, например: http://demo.radio-tochka.com:8080/api/djs/?limit=1.
На настоящий момент реализовн API к следующим ресурсам:
Для каждого из ресурсов можно запросить их список, например:
{
"meta": {
"limit": <количество объектов на странице>,
"next": <uri для получения слудеющей страницы>,
"offset": <начиная с какого элемента нужно отдавать данные>,
"previous": <uri для получения предыдущей страницы>,
"total_count": <общее количество элементов>
},
"objects": [
<объект 1>,
<объект 2>,
...
<объект n>
]
}
Можно изменять количество объектов в запросе и устанавливать лимиты выборки, манипулируя параметрами limit и offset.
Например:
Параметры фильтраций передаются как параметры GET-запроса.
Фильтры нужны для того, чтобы выбрать не все объекты, а конкретные, например список только активных диджеев. Для объектов доступны следующие фильтры:
Примеры фильтраций:
В этом простом примере мы будем запрашивать каждые 5 секунд название текущего трека на радио и выводить его на странице.
<html>
<body>
<div id="track"></div>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script>
$( document ).ready(function() {
function updateTrack(){
$.ajax({
// Дополнительно передается два параметра
// callback & format для получения данных
// в формате JSONP. Это позволит преодолеть CORS ограничение
url: "http://demoaccount.s02.radio-tochka.com:8080/api/history/?server=1&limit=1&callback=callback&format=jsonp",
jsonp: "callback",
dataType: "jsonp",
method: "GET",
success: function( response ) {
var trackTitlte = response.objects[0].metadata;
$("#track").text(trackTitlte);
}
});
}
updateTrack();
setInterval(updateTrack, 5*1000);
});
</script>
</body>
</html>
/api/v2/servers/ - подгрузка всех радио-серверов из панели управления
/api/v2/channels/?server=1 - подгрузка радио-каналов радио сервера 1
Чтобы принять голос за трек, сначала необходимо загрузить его ID в базе треков. ID есть только для треков, закачанных в AutoDJ, поэтому голосовать слушатель может только за них. Если трек играет в прямом эфире - ID такого трека будет null и проголосовать за него возможности нет. Сначала нужно загрузить ID текущего трека GET запросом по URL /api/v2/history/?limit=10&offset=0&server=1 где limit - это количество треков истории воспроизведения на радио, которые Вам нужны. Если, например, нужен только текущий трек, то URL будет /api/v2/history/?limit=1&offset=0&server=1 плюс необходимо выставить параметр server в ID радио сервера, играющий трек с которого нужно загрузить. Если запрос прошел корректно, то в ответе сервера Вы получите ID текущего трека, например id: 577810.
Теперь, когда известен ID трека - POST запрос на URL /api/v2/music/577810/like/ поставит лайк, POST на /api/v2/music/577810/dislike/ поставит дизлайк, 577810 в URL поменяйте на соответствующий ID трека.
Для тех методов API, которые изменяют что-либо на сервере, необходимо получить API ключ.
Для получения API ключа необходимо отправить POST запрос на API/api/v2/api-token-auth/Со следующими данными:
{
"username":"логин аккаунта",
"password":"пароль аккаунта"
}
В ответ будет отправлен API ключ, например:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX"
}
Этот ключ необходимо включать в HTTP заголовок "Authorization:"
Authorization: JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX
Для этого метода требуется авторизация
POST /api/v2/djs/<DJ_ID>/rewind/Где DJ_ID - ID диджея в панели управления.
Для этого метода требуется авторизация
POST /api/v2/music/remove/
Payload:
{"server_id":1,"files":[1193, ]}
Где server_id - ID сервера из панели управления, files - массив ID треков
Исходные коды виджета заказа трэков доступны здесь
Исходные коды виджета текущего статуса радио доступны здесь