Исходники проекта по интеграции Яндекс.Музыки и Winamp (Webamp)
Yaamp — это десктопный музыкальный плеер, который объединяет классический интерфейс Winamp с возможностями Яндекс.Музыки. Приложение построено на базе Electron и использует Webamp для воссоздания аутентичного опыта использования легендарного Winamp с современной интеграцией потокового сервиса.
Yaamp позволяет наслаждаться музыкой из каталога Яндекс.Музыки через знакомый интерфейс Winamp, сохраняя все его характерные особенности: скины, эквалайзер, визуализацию и ностальгический вид.
- Интеграция с Яндекс.Музыкой — полный доступ к каталогу музыки через официальный API
- Классический интерфейс Winamp — точная копия оригинального плеера через Webamp
- Поддержка скинов — использование оригинальных скинов Winamp (.wsz файлы)
- Эквалайзер — 10-полосный графический эквалайзер с сохранением настроек
- Визуализация Milkdrop — поддержка визуализации музыки
- Плейлист — полнофункциональный плейлист с возможностью управления треками
- Моя волна — запуск персонализированной радиостанции
- Любимые треки — быстрый доступ к избранным композициям
- Поиск — поиск артистов и альбомов с возможностью воспроизведения
- Управление треками — переключение, пауза, воспроизведение через интерфейс или горячие клавиши
- Веб-интерфейс — управление плеером через браузер
- REST API — программное управление плеером через HTTP запросы
- Удаленное управление — контроль воспроизведения с любого устройства в локальной сети
- Поиск и воспроизведение — поиск артистов/альбомов и запуск через API
- Discord Rich Presence — отображение текущего трека в статусе Discord
- Горячие клавиши — поддержка стандартных горячих клавиш Winamp
- Touch Bar (macOS) — управление воспроизведением через Touch Bar на MacBook
- Кроссплатформенность — поддержка Windows, macOS и Linux
- Автоматические обновления — встроенная система обновлений через electron-updater
- Сохранение настроек — автоматическое сохранение позиций окон, скинов и эквалайзера
- Прозрачность окон — поддержка прозрачности для аутентичного вида Winamp
- IPC коммуникация — взаимодействие между Electron и Webamp через IPC
yarn installиyarn installв папке webamp- Поправить в package.json - "copy" и "deploy-webamp" на тот, на какой системе вы сейчас работаете, на данный момент настроенно на Windows
Добавление функционала и работа с Webamp
- Используйте
yarn deploy-webampдля сборки Webamp
Based on: Webamp, yandex-music-api, yandex-music-open-api While the Winamp name, interface and logo are surely property of Nullsoft.
HTTP API для управления плеером Yaamp.
API можно включить двумя способами:
- Через файл настроек (
settings.jsonв папке userData):
{
"api": {
"enabled": true,
"port": 8080
}
}- Через IPC (из renderer процесса):
ipcRenderer.invoke('setApiSettings', { enabled: true, port: 8080 });После изменения настроек API сервер автоматически перезапустится.
На корневой странице API (http://127.0.0.1:{port}/) доступен веб-интерфейс для управления плеером.
Особенности:
- Кнопки управления: Предыдущий трек, Воспроизведение/Пауза, Следующий трек
- Слайдер управления громкостью (0-100%)
- Кнопки для запуска "Моя волна" и "Любимые треки"
- Поиск треков с возможностью воспроизведения найденных артистов и альбомов
- Отображение статуса API и последнего действия
- Поддержка клавиатурных сокращений:
Пробел- Воспроизведение/Пауза←- Предыдущий трек→- Следующий трек
Просто откройте в браузере: http://127.0.0.1:8080/
Все endpoints доступны по адресу http://127.0.0.1:{port} (по умолчанию http://127.0.0.1:8080).
Переключить на следующий трек.
Пример:
curl http://127.0.0.1:8080/nextОтвет:
{
"success": true,
"message": "Next track"
}Переключить на предыдущий трек.
Пример:
curl http://127.0.0.1:8080/prevОтвет:
{
"success": true,
"message": "Previous track"
}Переключить воспроизведение/паузу.
Пример:
curl http://127.0.0.1:8080/playpauseОтвет:
{
"success": true,
"message": "Play/Pause toggled"
}Воспроизвести трек.
Пример:
curl http://127.0.0.1:8080/playОтвет:
{
"success": true,
"message": "Play"
}Поставить на паузу.
Пример:
curl http://127.0.0.1:8080/pauseОтвет:
{
"success": true,
"message": "Pause"
}Установить громкость плеера (0-100).
Пример:
curl http://127.0.0.1:8080/volume?value=75Ответ:
{
"success": true,
"message": "Volume set to 75%",
"volume": 75
}Запустить "Моя волна".
Пример:
curl http://127.0.0.1:8080/mywaveОтвет:
{
"success": true,
"message": "Моя волна запущена"
}Загрузить "Любимые треки".
Пример:
curl http://127.0.0.1:8080/mylovedОтвет:
{
"success": true,
"message": "Любимые треки загружены"
}Поиск артистов и альбомов.
Параметры:
queryилиq(обязательный) - поисковый запрос
Пример:
curl "http://127.0.0.1:8080/search?query=король"Ответ:
{
"success": true,
"results": [
{
"type": "artist",
"id": "12345",
"name": "Король и Шут"
}
]
}Примечание: Результаты поиска могут содержать артистов (type: "artist") или альбомы (type: "album"). Используйте ID из результатов с эндпоинтами /setArtist или /setAlbum для воспроизведения.
Загрузить популярные треки артиста по ID и начать воспроизведение.
Параметры:
idилиartistId(обязательный) - ID артиста из результатов поиска
Пример:
curl "http://127.0.0.1:8080/setArtist?id=12345"Ответ:
{
"success": true,
"message": "Артист загружен"
}Примечание: ID артиста можно получить из результатов поиска (/search).
Загрузить треки альбома по ID и начать воспроизведение.
Параметры:
idилиalbumId(обязательный) - ID альбома из результатов поиска
Пример:
curl "http://127.0.0.1:8080/setAlbum?id=67890"Ответ:
{
"success": true,
"message": "Альбом загружен"
}Примечание: ID альбома можно получить из результатов поиска (/search).
Проверить статус API сервера.
Пример:
curl http://127.0.0.1:8080/statusОтвет:
{
"success": true,
"message": "API server is running",
"endpoints": ["/next", "/prev", "/play", "/pause", "/playpause", "/volume?value=50", "/mywave", "/myloved", "/search?query=...", "/setArtist?id=...", "/setAlbum?id=...", "/status"]
}API сервер доступен только на 127.0.0.1 (localhost), что означает, что он доступен только с локальной машины. Это обеспечивает базовую безопасность.
