API конфигурации приложения
Список станций, URL потоков, обложки, навигационные ссылки и настройки приложения.
Эндпоинты
GET
/appv1.json
Устаревшая конфигурация для приложений v1. Ссылается на старые URL расписаний.
GET
/appv2.json
Новая конфигурация для приложений v2. Ссылается на URL расписаний v2 с улучшенной схемой.
Какую версию использовать?
Для новых интеграций используйте
appv2.json. URL расписаний в appv2 указывают на схему v2 с числовыми днями, 24-часовым форматом времени и категориями.
Формат ответа
{
"config": {
"version": "20251212.1052",
"logoLightMode": "https://assets.radiomv.studio/logo-light-mode.png",
"logoDarkMode": "https://assets.radiomv.studio/logo-dark-mode.png"
},
"navigation": { ... },
"settings": { ... },
"stations": [ ... ]
}
Объект config
version
string
обязательное
Версия на основе даты в формате
YYYYMMDD.HHMM. Используйте для инвалидации кэша.
logoLightMode
string
обязательное
URL логотипа для светлых фонов.
logoDarkMode
string
обязательное
URL логотипа для тёмных фонов.
Объект navigation
Содержит навигационные URL, сгруппированные по языкам:
{
"navigation": {
"english": {
"explore": {
"url": "https://radiomv.com/support/#english"
}
},
"spanish": { ... },
"german": { ... },
"slavic": { ... }
}
}
Каждая языковая группа содержит:
explore.url
string
URL страницы «узнать больше» / поддержки для этого языка.
Объект settings
Контактная информация и ссылки, сгруппированные по языкам:
{
"settings": {
"english": {
"website": "https://en.radiomv.com/",
"office": "+1-830-208-2494",
"sms": "+1-830-208-2494",
"beta-program": "https://...",
"report-a-bug": "https://..."
}
}
}
website
string
Основной сайт для данного языка.
office
string
Телефон офиса.
sms
string
Номер для SMS.
beta-program
string
URL записи в бета-программу.
report-a-bug
string
URL формы сообщения об ошибке.
Массив stations
Массив всех объектов станций. Каждая станция содержит:
{
"id": "1",
"station": "English",
"language": "English",
"isMain": true,
"artworkUrl16x9": "https://assets.radiomv.studio/...",
"artworkUrl1x1": "https://assets.radiomv.studio/...",
"artworkUrlNowPlaying1x1": "https://assets.radiomv.studio/...",
"audioPriority": "hls",
"hlsStreamUrl": "https://stream.radiomv.com/english.m3u8",
"iceStreamUrl": "https://stream.radiomv.com/english.m3u",
"shareUrl": "https://player.radiomv.com/english.html",
"stationScheduleUrl": "https://apps.radiomv.com/program/english-program.json",
"metadataUrl": "https://api.radiomv.com/english.txt"
}
Поля станции
id
string
обязательное
Уникальный идентификатор станции (1-14).
station
string
обязательное
Отображаемое название станции.
language
string
обязательное
Языковая группа: "English", "Spanish", "German" или "Slavic".
isMain
boolean
обязательное
Основная это станция (true) или дополнительный канал (false).
artworkUrl16x9
string
необязательное
URL широкоформатной обложки. Присутствует только у основных станций.
artworkUrl1x1
string
обязательное
URL квадратной обложки для отображения станции.
artworkUrlNowPlaying1x1
string
обязательное
URL квадратной обложки для экрана «сейчас играет».
audioPriority
string
обязательное
Предпочтительный тип потока: "hls" или "ice".
hlsStreamUrl
string
обязательное
URL HLS-потока (.m3u8).
iceStreamUrl
string
обязательное
URL Icecast-потока (.m3u) в качестве резервного.
shareUrl
string
обязательное
URL веб-плеера для «поделиться».
stationScheduleUrl
string
необязательное
URL JSON-расписания станции. Присутствует только у основных станций.
metadataUrl
string
обязательное
URL метаданных текущего трека.
Список станций
| ID | Станция | Язык | Основная |
|---|---|---|---|
| 1 | English | Английский | Да |
| 2 | English Old Testament | Английский | Нет |
| 3 | English New Testament | Английский | Нет |
| 4 | Radio Cristiana en Español | Испанский | Да |
| 5 | El Antiguo Testamento | Испанский | Нет |
| 6 | El Nuevo Testamento | Испанский | Нет |
| 7 | Deutsch RadioMv | Немецкий | Да |
| 8 | Altes Testament | Немецкий | Нет |
| 9 | Neues Testament | Немецкий | Нет |
| 10 | Христианское Радио | Русский | Да |
| 11 | Музыкальный Канал | Русский | Нет |
| 12 | Детский Канал | Русский | Нет |
| 13 | Новый Завет | Русский | Нет |
| 14 | Ветхий Завет | Русский | Нет |
Примеры кода
Получить все основные станции
const response = await fetch('https://api.radiomv.studio/appv1.json');
const data = await response.json();
const mainStations = data.stations.filter(s => s.isMain);
// Возвращает станции с ID: 1, 4, 7, 10
Получить станции по языку
function getStationsByLanguage(stations, language) {
return stations.filter(s => s.language === language);
}
const slavicStations = getStationsByLanguage(data.stations, 'Slavic');
// Возвращает станции с ID: 10, 11, 12, 13, 14
Воспроизведение с резервным потоком
function getStreamUrl(station) {
if (station.audioPriority === 'hls') {
return {
primary: station.hlsStreamUrl,
fallback: station.iceStreamUrl
};
}
return {
primary: station.iceStreamUrl,
fallback: station.hlsStreamUrl
};
}
Проверка обновлений конфигурации
async function checkForUpdates(cachedVersion) {
const response = await fetch('https://api.radiomv.studio/appv1.json');
const data = await response.json();
if (data.config.version !== cachedVersion) {
// Доступна новая версия — обновляем кэш
return { updated: true, data };
}
return { updated: false };
}