Skip to content

umnik1/yaamp

Repository files navigation

Yaamp

Исходники проекта по интеграции Яндекс.Музыки и Winamp (Webamp)

Описание

Yaamp — это десктопный музыкальный плеер, который объединяет классический интерфейс Winamp с возможностями Яндекс.Музыки. Приложение построено на базе Electron и использует Webamp для воссоздания аутентичного опыта использования легендарного Winamp с современной интеграцией потокового сервиса.

Yaamp позволяет наслаждаться музыкой из каталога Яндекс.Музыки через знакомый интерфейс Winamp, сохраняя все его характерные особенности: скины, эквалайзер, визуализацию и ностальгический вид.

Особенности

Основной функционал

  • Интеграция с Яндекс.Музыкой — полный доступ к каталогу музыки через официальный API
  • Классический интерфейс Winamp — точная копия оригинального плеера через Webamp
  • Поддержка скинов — использование оригинальных скинов Winamp (.wsz файлы)
  • Эквалайзер — 10-полосный графический эквалайзер с сохранением настроек
  • Визуализация Milkdrop — поддержка визуализации музыки
  • Плейлист — полнофункциональный плейлист с возможностью управления треками

Управление воспроизведением

  • Моя волна — запуск персонализированной радиостанции
  • Любимые треки — быстрый доступ к избранным композициям
  • Поиск — поиск артистов и альбомов с возможностью воспроизведения
  • Управление треками — переключение, пауза, воспроизведение через интерфейс или горячие клавиши

HTTP API

  • Веб-интерфейс — управление плеером через браузер
  • 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

Установка

  1. yarn install и yarn install в папке webamp
  2. Поправить в package.json - "copy" и "deploy-webamp" на тот, на какой системе вы сейчас работаете, на данный момент настроенно на Windows

Добавление функционала и работа с Webamp

  1. Используйте 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.


Yaamp API

HTTP API для управления плеером Yaamp.

Включение API

API можно включить двумя способами:

  1. Через файл настроек (settings.json в папке userData):
{
  "api": {
    "enabled": true,
    "port": 8080
  }
}
  1. Через 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

Все endpoints доступны по адресу http://127.0.0.1:{port} (по умолчанию http://127.0.0.1:8080).

GET /next

Переключить на следующий трек.

Пример:

curl http://127.0.0.1:8080/next

Ответ:

{
  "success": true,
  "message": "Next track"
}

GET /prev

Переключить на предыдущий трек.

Пример:

curl http://127.0.0.1:8080/prev

Ответ:

{
  "success": true,
  "message": "Previous track"
}

GET /playpause

Переключить воспроизведение/паузу.

Пример:

curl http://127.0.0.1:8080/playpause

Ответ:

{
  "success": true,
  "message": "Play/Pause toggled"
}

GET /play

Воспроизвести трек.

Пример:

curl http://127.0.0.1:8080/play

Ответ:

{
  "success": true,
  "message": "Play"
}

GET /pause

Поставить на паузу.

Пример:

curl http://127.0.0.1:8080/pause

Ответ:

{
  "success": true,
  "message": "Pause"
}

GET /volume?value=50

Установить громкость плеера (0-100).

Пример:

curl http://127.0.0.1:8080/volume?value=75

Ответ:

{
  "success": true,
  "message": "Volume set to 75%",
  "volume": 75
}

GET /mywave

Запустить "Моя волна".

Пример:

curl http://127.0.0.1:8080/mywave

Ответ:

{
  "success": true,
  "message": "Моя волна запущена"
}

GET /myloved

Загрузить "Любимые треки".

Пример:

curl http://127.0.0.1:8080/myloved

Ответ:

{
  "success": true,
  "message": "Любимые треки загружены"
}

GET /search?query=...

Поиск артистов и альбомов.

Параметры:

  • 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 для воспроизведения.

GET /setArtist?id=...

Загрузить популярные треки артиста по ID и начать воспроизведение.

Параметры:

  • id или artistId (обязательный) - ID артиста из результатов поиска

Пример:

curl "http://127.0.0.1:8080/setArtist?id=12345"

Ответ:

{
  "success": true,
  "message": "Артист загружен"
}

Примечание: ID артиста можно получить из результатов поиска (/search).

GET /setAlbum?id=...

Загрузить треки альбома по ID и начать воспроизведение.

Параметры:

  • id или albumId (обязательный) - ID альбома из результатов поиска

Пример:

curl "http://127.0.0.1:8080/setAlbum?id=67890"

Ответ:

{
  "success": true,
  "message": "Альбом загружен"
}

Примечание: ID альбома можно получить из результатов поиска (/search).

GET /status

Проверить статус 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), что означает, что он доступен только с локальной машины. Это обеспечивает базовую безопасность.

About

🎧Yaamp — Аудио-плеер Winamp с интегрированным сервисом Яндекс.Музыка.

Topics

Resources

License

Stars

Watchers

Forks