Свой музыкальный стриминг без рекламы и подписки. Одна кодовая база — веб-приложение и нативное окно Windows (.exe).
- Поиск по всем трекам — каталог Spotify через
spotdl, YouTube черезyt-dlpи открытые треки Audius в одном списке. - Мгновенная выдача — первые треки появляются почти сразу, остальные источники добавляются по мере ответа. Spotify всегда идёт первым, затем YouTube и Audius.
- Быстрый старт воспроизведения — топ-результаты, следующий трек и ещё один трек того же исполнителя прогреваются заранее. Обычно звук начинается за доли секунды вместо нескольких секунд ожидания
yt-dlp. - Рекомендации «Для вас» — блок на главной строится по истории прослушиваний: чаще всего звучавшие исполнители и любимый жанр. Уже прослушанные треки исключаются, список обновляется по кнопке.
- Прослушивание прямо в приложении — Spotify-треки автоматически находятся на YouTube и играют через локальный прокси с перемоткой.
- Плеер — очередь, следующий/предыдущий трек, перемотка, громкость, shuffle и повтор.
- Коллекция — любимые треки, история прослушивания и собственные плейлисты.
- Локальное хранение — всё лежит в
localStorage, без аккаунтов. - Медиа-клавиши Windows — через Media Session API.
- Адаптивная вёрстка — от широкого монитора до телефона.
Если Spotify недоступен, приложение продолжает работать на YouTube и Audius.
- React 19 + TypeScript + Vite
- Zustand (состояние и сохранение в
localStorage) - Tauri 2 + Rust (нативное окно Windows)
yt-dlp— поиск по YouTube и получение аудиопотокаspotdl(Python) — поиск по каталогу Spotify и метаданные- Audius API
- Node.js 20.19+ (проверено на Node 24).
- Python 3.10+ и пакет
spotdl— для поиска по Spotify. - yt-dlp — для поиска и проигрывания YouTube.
ffmpegне нужен: OpenWave ничего не скачивает и не конвертирует, только стримит.
Установка инструментов:
pip install -U spotdl yt-dlpПроверка:
spotdl --version
yt-dlp --versionЕсли spotdl установлен в пользовательскую папку скриптов Python и команда не находится, добавьте её в PATH или укажите путь через OPENWAVE_PYTHON (полный путь к python.exe с установленным spotdl).
npm installnpm run webОткройте http://localhost:4173. Команда собирает статику в dist/ и запускает локальный сервер, который одновременно отдаёт интерфейс и музыкальное API (/api/music/*).
Для локальной раздачи уже готовой сборки: npm run serve.
По умолчанию сервер слушает только 127.0.0.1. Чтобы открыть доступ в локальной сети:
$env:HOST="0.0.0.0"; npm run serveДополнительно нужны Rust 1.77.2+ и Visual Studio Build Tools (MSVC):
npm run desktop:buildГотовый файл: release/OpenWave.exe (он же в src-tauri/target/release/openwave.exe). Для установщика уберите --no-bundle из скрипта desktop:build.
Нативное приложение при запуске само поднимает локальный музыкальный сервис на 127.0.0.1:47821 и останавливает его при выходе. Для Spotify и YouTube на машине должны быть установлены Node.js, Python + spotdl и yt-dlp; без них остаются треки Audius.
npm run api # локальное музыкальное API на 127.0.0.1:47821
npm run dev # Vite на http://localhost:5173 (проксирует /api)
npm run desktop # нативное окно с горячей перезагрузкойnpm run dev без npm run api покажет только Audius.
| Источник | Что даёт | Ключ |
|---|---|---|
Spotify через spotdl |
Каталог, названия, исполнители, обложки | Не нужен (анонимный поиск) |
YouTube через yt-dlp |
Поиск и аудиопоток для прослушивания | Не нужен |
| Audius | Полноценные открытые треки, тренды, поиск | Не нужен |
OpenWave не скачивает музыку и не обходит платные подписки. Spotify используется только для поиска и метаданных, звук приходит с YouTube. Треки и обложки принадлежат их авторам.
Любимые треки, плейлисты, история и настройки плеера хранятся только на устройстве:
openwave.library.v1openwave.player.v1
Поисковые запросы отправляются в Spotify (через spotdl), YouTube (через yt-dlp) и Audius. Аккаунтов и синхронизации нет.
- Нужен интернет: все каталоги сетевые.
- Для Spotify и YouTube нужны
spotdl,yt-dlp, Python и Node.js. - Анонимный поиск Spotify может отвечать медленно (5–10 секунд) и иногда ограничивать запросы. Поэтому Spotify-результаты догружаются поверх уже показанных треков YouTube и Audius.
- YouTube может менять форматы и ограничивать поток — используйте актуальную версию
yt-dlp(pip install -U yt-dlp). - Мобильной нативной сборки пока нет, но веб-версия адаптирована под телефон.
src/
api/ Audius и клиент локального музыкального API
components/ плеер, очередь, карточки, навигация, модальные окна
pages/ Главная, Поиск, Коллекция, Плейлист, Любимые
store/ player / library / ui (Zustand + persist)
styles/ тёмная тема и адаптив
src-tauri/ конфигурация и Rust-обвязка (запуск локального API)
scripts/
spotdl_search.py JSON-воркер поиска Spotify на библиотеке spotdl
server.mjs статика + /api/music (yt-dlp, spotdl, аудиопрокси)
Сделано как личный плеер: без рекламы, без подписки и без лишнего.