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 логотипа для тёмных фонов.

Содержит навигационные 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 Станция Язык Основная
1EnglishАнглийскийДа
2English Old TestamentАнглийскийНет
3English New TestamentАнглийскийНет
4Radio Cristiana en EspañolИспанскийДа
5El Antiguo TestamentoИспанскийНет
6El Nuevo TestamentoИспанскийНет
7Deutsch RadioMvНемецкийДа
8Altes TestamentНемецкийНет
9Neues 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 };
}