Music API Documentation

Добро пожаловать в документацию Music API. Этот API позволяет интегрировать музыкальные треки из нашей коллекции на ваш сайт.

Аутентификация

На данный момент API доступен без аутентификации.

Базовый URL

Все запросы должны отправляться на базовый URL: https://jamusic.ru/api/

Формат ответа

Все ответы возвращаются в формате JSON. Каждый ответ содержит поле success, которое указывает, был ли запрос успешным.

В случае успеха, данные будут возвращены в поле data. В случае ошибки, сообщение об ошибке будет возвращено в поле message.

Эндпоинты

GET /api/tracks.php

Получить список треков. Поддерживает пагинацию и фильтрацию по жанру.

Параметры запроса

Параметр Тип Обязательный Описание
limit число Нет Максимальное количество треков в ответе (по умолчанию 50)
offset число Нет Количество треков, которые нужно пропустить (для пагинации)
genre строка Нет Фильтр по жанру

Пример запроса

GET /api/tracks.php?limit=10&offset=0&genre=pop

Пример ответа

{
    "success": true,
    "data": [
        {
            "id": 1,
            "title": "Название трека",
            "artist": "Исполнитель",
            "genre": "pop",
            "upload_date": "2023-06-15 12:30:45",
            "stream_url": "https://jamusic.ru/api/stream.php?id=1",
            "cover_url": "https://jamusic.ru/uploads/artist/tracks/cover.jpg"
        },
        // другие треки...
    ],
    "total": 45,
    "limit": 10,
    "offset": 0
}
        

GET /api/tracks.php?id={track_id}

Получить информацию о конкретном треке.

Параметры запроса

Параметр Тип Обязательный Описание
id число Да ID трека

Пример запроса

GET /api/tracks.php?id=1

Пример ответа

{
    "success": true,
    "data": {
        "id": 1,
        "title": "Название трека",
        "artist": "Исполнитель",
        "genre": "pop",
        "description": "Описание трека",
        "upload_date": "2023-06-15 12:30:45",
        "stream_url": "https://jamusic.ru/api/stream.php?id=1",
        "cover_url": "https://jamusic.ru/uploads/artist/tracks/cover.jpg"
    }
}
        

GET /api/stream.php?id={track_id}

Воспроизвести трек. Этот эндпоинт можно использовать напрямую в теге <audio>.

Параметры запроса

Параметр Тип Обязательный Описание
id число Да ID трека
play число Нет Установите 1, чтобы увеличить счетчик воспроизведений
user_id строка Нет ID пользователя для статистики

Примеры интеграции

Пример 1: HTML-плеер

<!DOCTYPE html>
<html>
<head>
    <title>Музыкальный плеер</title>
</head>
<body>
    <div id="player">
        <h2 id="track-title">Загрузка...</h2>
        <p id="track-artist"></p>
        <img id="track-cover" src="" alt="Обложка" style="max-width: 300px;">
        <audio id="audio-player" controls></audio>
    </div>

    <script>
        // Загружаем трек с ID 1
        fetch('https://jamusic.ru/api/tracks.php?id=1')
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    const track = data.data;
                    document.getElementById('track-title').textContent = track.title;
                    document.getElementById('track-artist').textContent = track.artist;
                    document.getElementById('track-cover').src = track.cover_url;
                    
                    // Устанавливаем источник аудио
                    const audioPlayer = document.getElementById('audio-player');
                    audioPlayer.src = track.stream_url + '&play=1';
                }
            })
            .catch(error => console.error('Ошибка:', error));
    </script>
</body>
</html>
    

Пример 2: JavaScript-плейлист

<!DOCTYPE html>
<html>
<head>
    <title>Музыкальный плейлист</title>
    <style>
        .track {
            display: flex;
            align-items: center;
            margin-bottom: 10px;
            padding: 10px;
            border: 1px solid #ddd;
            cursor: pointer;
        }
        .track img {
            width: 50px;
            height: 50px;
            margin-right: 10px;
        }
        .track.active {
            background-color: #f0f0f0;
        }
    </style>
</head>
<body>
    <h1>Плейлист</h1>
    
    <div id="player">
        <audio id="audio-player" controls></audio>
    </div>
    
    <div id="playlist">
        <!-- Треки будут добавлены здесь -->
    </div>

    <script>
        const audioPlayer = document.getElementById('audio-player');
        const playlist = document.getElementById('playlist');
        let currentTrack = null;
        
        // Загружаем список треков
        fetch('https://jamusic.ru/api/tracks.php?limit=20')
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    const tracks = data.data;
                    
                    // Создаем плейлист
                    tracks.forEach(track => {
                        const trackElement = document.createElement('div');
                        trackElement.className = 'track';
                        trackElement.innerHTML = `
                            <img src="${track.cover_url}" alt="${track.title}">
                            <div>
                                <h3>${track.title}</h3>
                                <p>${track.artist}</p>
                            </div>
                        `;
                        
                        // При клике на трек, воспроизводим его
                        trackElement.addEventListener('click', () => {
                            // Удаляем активный класс с предыдущего трека
                            if (currentTrack) {
                                currentTrack.classList.remove('active');
                            }
                            
                            // Устанавливаем новый трек активным
                            trackElement.classList.add('active');
                            currentTrack = trackElement;
                            
                            // Воспроизводим трек
                            audioPlayer.src = track.stream_url + '&play=1';
                            audioPlayer.play();
                        });
                        
                        playlist.appendChild(trackElement);
                    });
                }
            })
            .catch(error => console.error('Ошибка:', error));
    </script>
</body>
</html>
    

Ограничения

Пожалуйста, соблюдайте следующие ограничения при использовании API:

Обратная связь

Если у вас возникли вопросы или предложения по API, пожалуйста, свяжитесь с нами по адресу support@jamusic.ru.