Здесь и следующих подразделах мы расскажем как использовать API нашей панели управления Интернет-радио для получения информации о состоянии эфира и других данных программными методами. Используя наш API Вы можете строить свои собственные скрипты, приложения и модули для сайта своего радио, мобильного приложения и любой интеграции, где требуется программное взаимодействие с сервером радио.
Для работы с API у Вас уже должна быть установлена и настроена наша Панель Управления Интернет-радио. Для работы с API Вы должны знать URL своей панели управления: тот адрес, по которому Вы обычно заходите в интерфейс вещателя, где Ваши каналы, плей-листы, сетка вещания и прочие разделы.
Большинство запросов к API нацелены на получение информации о состоянии радио, но в некоторых случаях есть необходимость:
- получить информацию, которая является не публичной, например, список диджеев на радио с паролями доступа
- внести изменения на сервере радио, например, добавить новый канал, сервер, создать плей-лист и так далее.
В таких случаях API потребует авторизацию при запросе. Наша платформа Интернет-радио поддерживает стандартный механизм авторизации для API: ключи, которыми вы можете управлять в разделе “Настройки” -> “API ключи” панели управления Интернет-радио.
HTTP Методы: GET
Параметры:
limit: количество запрашиваемых элементов
offset: отступ (с какой записи начинать вывод)
server: ID радио-сервера
История треков в эфире радио, последний трек в выводе данного API представляет собой трек, который играет прямо сейчас на радио.
Пример
import requests
response = requests.get("https://demoaccount.s02.radio-tochka.com:8080/api/v2/history/?limit=1&offset=0&server=1")
print(response.json())Результат
{
"count":500,
"next":"https://demoaccount.s02.radio-tochka.com:8080/api/v2/history/?limit=1&offset=1&server=1",
"previous":"None",
"results":[
{
"album":"Ozzmosis (Expanded Edition)",
"all_music_id":1190,
"author":"Ozzy Osbourne",
"author_other":"None",
"comment":"None",
"composer":"None",
"dj_name":"AutoDJ",
"genre":"None",
"id":11552,
"img_fetched":true,
"img_large_url":"https://demoaccount.s02.radio-tochka.com:8080/media/tracks/trackImage1190_large.jpg",
"img_medium_url":"https://demoaccount.s02.radio-tochka.com:8080/media/tracks/trackImage1190_medium.jpg",
"img_url":"https://demoaccount.s02.radio-tochka.com:8080/media/tracks/trackImage1190.jpg",
"isrc":"None",
"jingle_id":"None",
"label":"None",
"length":296347,
"lyricist":"",
"metadata":"Ozzy Osbourne - I Just Want You",
"n_listeners":0,
"performance_type":"None",
"playlist_title":"All music",
"publisher":"None",
"title":"I Just Want You",
"ts":1733763534000,
"year":"None"
}
]
}Параметры
- album: Альбом
- all_music_id: ID трека в музыкальной библиотеке сервера. Если трек является джинглом, этот параметр равен null. Если трек был воспроизведён в прямом эфире, а не из музыкальной библиотеки Авто-диджея - этот параметр равен null.
- author: исполнитель
- author_other: со-автор
- comment: комментарий к треку
- composer: композитор
- dj_name: имя диджея, во время эфира которого вышел в эфир этот трек.
- genre: жанр композиции
- id: ID записи в истории треков (уникальное значение)
- img_fetched: системой была выполнена попытка подгрузки обложки трека на музыкальных сервисах, если она отсутствует в mp3 тэгах файла
- img_large_url: - URL картинки в максимальном разрешении для этого трека без сжатия
- img_medium_url: - вариант картинки среднего размера, который система получила путём сжатия оригинальной картинки до 500х500 пикселей
- img_url: мини-обложка трека, обычно в разрешении 100х100 пикселей
- isrc: ISRC код трека (используется для отчётности правообладателям)
- jingle_id: если трек в эфире был джинглом - этот параметр содержит ID джингла в базе контента Авто-диджея
- label: лейбл
- length: длительность трека в миллисекундах
- lyricist: автор текста
- metadata: итоговые метаданные с которыми трек вышел в эфир, обычно это Исполнитель - Название, но метаданные могут содержать и другие данные, в зависимости от формата мета-данных, которые указаны в разделе “Настройки” радио-панели: например, имя ведущего Диджея
- n_listeners: количество слушателей на радио на момент запуска трека в эфир
- performance_type: вид исполнения: вокал, инструментал,чтец и т.п.
- playlist_title: название плей-листа, который был в эфире, может быть null для джинглов и для треков из прямого эфира
- publisher: издатель
- title: название трека
- ts: время выхода в эфир в формате int в миллисекундах во временной зоне UTC
- year: год трека
Справочник API для панели администратора
Панель администратора используется для добавления и управления вашими радио-аккаунтами на сервере. Обычно URL панели администратора после установки нашей Панели Управления Интернет-радио выглядит примерно так:
https://stream.radio.ru:2345
Базовый URL-префикс для API: /api/v1/
Авторизация
POST /api/v1/rest-auth/login/
Описание: endpoint логина в систему, используйте его для получения токена авторизации по логину и паролю админа
Запрос (JSON):
{
"username": "admin",
"password": "secret"
}
Пример успешного входа (HTTP 200):
{
"key": "<dj-rest-auth-token>",
"user": { /* здесь следует информация об аккаунте пользователя */ }
}
Пример на curl:
HTTP метод: GET, POST
Авторизация: необходима
Параметры:
server: ID радиосервера
Это API позволяет управлять плейлистами вашей станции.
Пример: GET
Получить все плейлисты с сервера с ID 1:
import requests
API_KEY = "6aNLaqRN.87L4xZ5LUXwWLCkK7dBswDafWZNcaLOB"
headers = {"SC-API-KEY": API_KEY}
response = requests.get(
"https://demo.streaming.center:1030/api/v2/playlists/?server=1",
headers=headers
)
print(response.json())Пример ответа
[
{
"id":1,
"duration":9244067,
"playlist_files_per_page":1000,
"tracks_num":55,
"name":"All music",
"is_default":true,
"is_random":true,
"on_air":false,
"directory_name":"",
"current_track_order":-9,
"server":1
},
{
"id":2,
"duration":9240712,
"playlist_files_per_page":1000,
"tracks_num":54,
"name":"Morning shows",
"is_default":false,
"is_random":false,
"on_air":true,
"directory_name":"",
"current_track_order":43,
"server":1
}
]Описание
Этот API endpoint возвращает массив ваших плейлистов. Каждый плейлист содержит следующие свойства:
HTTP метод: GET, POST
Авторизация: GET - не обязательна, POST - необходима
Query параметры для GET:
limit: количество элементов в ответе
offset: смещение для пагинации
server: ID радиосервера
Этот endpoint позволяет получить список каналов вещания радиостанции и создать новый канал.
Пример: GET
Получить список каналов для сервера с ID 1:
import requests
response = requests.get(
"https://demo.streaming.center:1030/api/v2/channels/?limit=20&offset=0&server=1"
)
print(response.json())Пример ответа
{
"count":2,
"next":null,
"previous":null,
"results":[
{
"id":11,
"active":true,
"server":1,
"bitrate":"128",
"listeners":"500",
"s_type":"icecast",
"s_format":"mp3",
"ip_address":"127.0.0.1",
"port":8000,
"ssl_port":8443,
"mount_point":"/stream",
"public":true,
"traf":0,
"traf_month":0,
"autodj_enabled":true,
"centovacast_compatible":true,
"proxy_enabled":false,
"proxy_status":0,
"proxy_url_path":null,
"ssl_proxy_enabled":false,
"ssl_proxy_status":0,
"ssl_proxy_url_path":null,
"allow_auth_listeners_only":false,
"queue_size":524288,
"burst_size":131072,
"listeners_current":37,
"listeners_peak":82,
"traffic":"0 B",
"state":2,
"links_html":"<a href=\"#\">Listen</a>",
"stream_url":"http://s02.demo.streaming.center:8000/stream",
"secure_stream_url":"https://s02.demo.streaming.center:8443/stream",
"admin_link":"https://s02.demo.streaming.center:8443/",
"youtube_stream_image":null,
"youtube_stream_image_resolution":null,
"fb_stream_image":null,
"fb_stream_image_resolution":null,
"vk_stream_image":null,
"vk_stream_image_resolution":null,
"telegram_stream_image":null,
"telegram_stream_image_resolution":null,
"rutube_stream_image":null
}
]
}Описание ответа
Ответ списка использует стандартную пагинацию и содержит поля:
HTTP метод: GET, POST
Авторизация: GET - не обязательна, POST - необходима
Query параметры для GET:
server: ID радиосервера
start_ts: начало диапазона в Unix timestamp
end_ts: конец диапазона в Unix timestamp
utc: необязательный флаг, `1` если `start_ts` и `end_ts` передаются в UTC
Этот endpoint позволяет получить события сетки вещания за выбранный диапазон времени и создать новое событие в расписании.
Как работает GET списка событий
При запросе списка API:
HTTP метод: GET
Авторизация: не требуется
Параметры:
limit: количество записей в ответе (опционально)
offset: смещение, указывает начальную запись (опционально)
server: ID радиосервера (опционально)
Возвращает список подкастов.
Пример
import requests
response = requests.get("https://demoaccount.s02.radio-tochka.com:8080/api/v2/podcasts/?server=1")
print(response.json())Пример ответа
[
{
"id": 2,
"folder": "the-retro-podcast",
"image": "https://radio.com:8080/media/podcast_covers/podcast1.jpg",
"episodes_count": 5,
"feed_url": "https://radio.com:8080/api/v2/podcasts/2/feed.xml",
"public_page_url": "https://radio.com:8080/public/podcasts/2/",
"title": "The Retro Podcast",
"description": "There are many variations of passages of Lorem Ipsum",
"published": true,
"server": 1
},
]Описание
- folder: папка подкаста в файловой системе сервера
- image: изображение обложки подкаста
- episodes_count: количество эпизодов в этом подкасте
- feed_url: URL RSS-ленты для этого подкаста
- public_page_url: URL публичной страницы этого подкаста, позволяет просматривать подкаст в браузере
- title: название подкаста
- description: описание подкаста
- published: true, если подкаст опубликован (не черновик)
- server: ID радиосервера, к которому относится подкаст
HTTP метод: POST
Авторизация: необходима
Parameters:
title: название подкаста, string
published: boolean - опубликован подкаст или нет
description: описание подкаста, string
server: ID радиосервера
Создает подкаст на радио с указанным ID радиосервера. Если вам также нужно включить обложку подкаста в запрос на создание, отправьте POST-запрос с заголовком multipart/form-data и укажите обложку подкаста через параметр image.