Добро пожаловать в документацию Music API. Этот API позволяет интегрировать музыкальные треки из нашей коллекции на ваш сайт.
На данный момент API доступен без аутентификации.
Все запросы должны отправляться на базовый URL: https://jamusic.ru/api/
Все ответы возвращаются в формате JSON. Каждый ответ содержит поле success, которое указывает, был ли запрос успешным.
В случае успеха, данные будут возвращены в поле data. В случае ошибки, сообщение об ошибке будет возвращено в поле message.
Получить список треков. Поддерживает пагинацию и фильтрацию по жанру.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| 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
}
Получить информацию о конкретном треке.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| 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"
}
}
Воспроизвести трек. Этот эндпоинт можно использовать напрямую в теге <audio>.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | число | Да | ID трека |
| play | число | Нет | Установите 1, чтобы увеличить счетчик воспроизведений |
| user_id | строка | Нет | ID пользователя для статистики |
<!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>
<!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.