R

Radio Player Wiki

Порядок ранжирования радиостанций

Все радиостанции, полученные через api, должны быть показаны слушателю в определённом порядке.

При первом отображении списка станций для слушателя

  1. Список станций должен отображаться в случайном порядке

При последующих отображениях списка станций для слушателя (возврат пользователя)

  1. Станции из «избранного» в порядке их добавления слушателем
  2. Станции в порядке последнего прослушивания пользователем
  3. Оставшиеся станции в случайном порядке

Web http API

Сервер с API расположен по адресу https://api.radioplayer.ru

API защищено токеном, уникальным для каждого партнёра. Токен необходимо передавать в query части любого запроса как параметр ?rp-api-token=XXXXXXXXXXXX Например: https://api.radioplayer.ru/api/web/stations?region=78&rp-api-token=Hh6d9cUaQfPqQ4VfG9pZe5TPVXRsPKva Получить токен можно по почте r.putintsev@micro-it.ru nester@micro-it.ru

Все данные надо присылать в формате JSON, проставляя заголовок Content-Type: application/json. Возвращаемые данные также в формате JSON (если они есть).

Сейчас доступны следующие методы.


Отправка сообщения

POST:/api/web/message

Формат body:

{
    "name": yup.string().trim().max(255).required(),
    "email": yup.string().trim().max(255).required(),
    "message": yup.string().trim().max(10000).required(),
}

Возвращает 200 статус, если все ок.


Получение региона по координатам

GET: /api/web/region?latitude=42.15546&longitude=54.13456

Возвращается объект JSON вида:

{ "id": 40, "name": "Москва" }

или null если ничего не было найдено.


Получение списка регионов

GET: /api/web/regions

Возвращает массив регионов. Объект региона имеет вид:

{ "id": 1, "name": "Россия", "code": "RUS" }

Получение станций по id региона

GET: /api/web/stations?region=40

Возвращает массив станций, где все федеральные заменены на региональные для указанного региона, в случае если региональные потоки существуют.

  • Объект станции внутри массива содержит следующие поля:
    • id: уникальный идентификатор станции
    • name: название станции
    • source: ссылка на поток (зависит от региона) Может содержать массив ссылок на равнозначные потоки. В случае если вместо одной ссылки указан массив, то запускать проигрывание можно любой из них
    • mobileSourceUrl: ссылка на поток для плеера мобильного приложения. Формат m3u8 или json
    • reserveSourceUrl: ссылка на резервный поток (зависит от региона)
    • logoWhite: ссылка на белый логотип станции
    • logoBlack: ссылка на тёмный логотип станции
    • logoColored: ссылка на цветной логотип станции
    • logoWhitePng: ссылка на белый логотип станции в png формате
    • logoBlackPng: ссылка на тёмный логотип станции в png формате
    • logoColoredPng: ссылка на цветной логотип станции в png формате
    • socialLinks: массив объектов веб-ресурсов станции со следующими полями
      • type: тип веб-ресурса
      • url: URL веб-ресурса
    • metadata: (не обязательное поле) объект который может содержать в себе два поля. С их помощью по схеме https://docs.hostingradio.ru/books/metadannye/page/metafmgidcom-old можно обновлять текущие метаданные для потока.
      • jsonUrl: ссылка на json с полным описанием метаданных в потоке (сервер может отвечать долго)
      • uniqueIdJsonUrl: (не обязательное поле) ссылка на идентификатор текущих метаданных. Служит для частого опроса на предмет изменений jsonUrl. Если идентификатор текущих метаданных меняется, то в этом случае нужно запрашивать jsonUrl. Есть не у всех станций. Отвечает в большинстве случаев быстро.
    • googleAnalytics: (не обязательное поле) идентификатор станции для google аналитики
    • yandexMetrica: (не обязательное поле) идентификатор станции для yandex метрики
    • frequency: (не обязательное поле) частота вещания станции в текущем регионе. Для федеральных потоков отсутствует.
    • tags: теги станции для поиска.
    • enabled: доступность станции - значение false означает, что у станции есть временные проблемы с вещанием.

Если станция прекращает своё существование - она удаляется из api. Это исключительный случай, если вы станцию не обнаружили в выдаче API то ее нужно и в ваших сервисах удалять.

На сервере работает мониторинг, который периодически проверяет доступность всех станций, и устанавливает значение enabled=false для станций, которые на данный момент недоступны. Мониторинг выполняется каждые 5 минут.

Поле metadata может отсутствовать в том случае, если станция не содержит метаданных или url для их получения не был добавлен при добавлении станции. Как правило при добавлении станции метаданные, если они на ней есть, тоже добавляются, поэтому если поле отсутствует, то наиболее вероятная причина в том, что станция не содержит метаданных в принципе.

Данный метод получает только те станции, которые вещают в FM-диапазоне / имеют федеральное или региональное вещание. Для получения списка цифровых станций необходимо дополнительно использовать метод /api/web/digital


Получение списка цифровых станций

GET: /api/web/digital

Возвращает список цифровых станций, не имеющих FM-частоты.

Вещание цифровых станций одинаково для любого региона. Формат отдаваемых данных соответствует формату данных при получении станций по id региона.

Получение глобальных настроек

GET: /api/web/options

Возвращает объект вида:

{
   "googleAnalytics": "IDENTIFIER_HERE",
   "yandexMetrica": "IDENTIFIER_HERE",
   "lastModifyTs": "UNIXTIME"	
}

Отправка статистики при добавлении (удалении) станции в избранное

POST: /api/web/favorite

В body надо поместить JSON вида:

{
   "stationId": 100500,
   "liked": 1/0, // 0 если удалил из избранного
}

Возвращает статус 200 если все ок.


Ошибки

При ошибках всегда приходит не 200 статус (обычно 500) и JSON вида:

{
    "status": status,
    "message": message,
}