A vibecoded music player for YaMusic, YTM and SoundCloud music. Available on Windows, macOS and Android! (NOW WITH SPOTIFY!)
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Один плеер для Яндекс Музыки, YouTube Music, SoundCloud и VK: общие лайки и плейлисты, поиск сразу везде и «Моя волна», которая смешивает сервисы в нужной пропорции. Windows, macOS и Android.
Токены и cookies сервисов хранятся только на устройстве (на ПК — зашифрованы системой) и на сервер Nyao не отправляются.
Последняя версия — на странице релизов. Приложение само проверяет обновления: «Настройки» → «Центр обновлений» (на Android APK ставится поверх, входы сохраняются). Тестовые сборки выходят пререлизами -dev.
ПК (Electron, нужен Node.js 20+):
npm install
npm start # запуск (npm run dev — с DevTools)
npm run dist # установщик для Windows (dist:mac — .dmg)
npm run bump # +1 к номеру сборки
Android (Kotlin + Jetpack Compose, JDK 17 и Android SDK 36):
cd android && ./gradlew assembleRelease
Версия «0.7 (45)» лежит в version.json и общая для всех платформ. Сборки для всех систем делает GitHub Actions при пуше; тему macOS на другой системе можно посмотреть так: NYAO_THEME=mac npm start.
src/main/ главный процесс: провайдеры сервисов, волна, поток аудио, тексты, аккаунт Nyao
src/renderer/ интерфейс без фреймворков (app.js — экраны, player.js — очередь)
android/ приложение для Android
server/ сервер аккаунта Nyao (Node.js + Postgres)
Сервисы подключены через неофициальные API, после их обновлений что-то может сломаться. Для личного использования; без Яндекс Плюса полные треки могут не играть.
Все пять источников передают кандидатов общему алгоритму Nyao. В «Любимом» при максимальной свежести цель — 70% недавних лайков, 20% остальных любимых и 10% рекомендаций; при нехватке кандидатов доли перераспределяются. Свежесть — давность интереса, а не год выхода песни. Где API не отдаёт дату лайка, используется исходная позиция в списке и дата обнаружения нового добавления. Баланс источников — предпочтение, которое может уступать доступности, разнообразию и отсутствию дублей.
Дубликаты объединяются по ISRC или исполнителю, названию и близкой длительности. Названия версий live/remix сохраняются. Локально запоминаются «не нравится», ранние пропуски и дослушивания. Настроение пока передаётся только в рекомендации Яндекса; Spotify участвует через библиотеку и поиск, без зависимости от закрытого API рекомендаций.
Проверка подбора: npm test; Android: cd android && ./gradlew testReleaseUnitTest.