Skip to content
Oxneed223Public

About

OpenWave - ad-free music player with Spotify search, YouTube playback, Audius and smart recommendations

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

OpenWave

Свой музыкальный стриминг без рекламы и подписки. Одна кодовая база — веб-приложение и нативное окно 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 install

Веб-версия

npm 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

Windows .exe

Дополнительно нужны 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.v1
  • openwave.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, аудиопрокси)

Сделано как личный плеер: без рекламы, без подписки и без лишнего.

About

OpenWave - ad-free music player with Spotify search, YouTube playback, Audius and smart recommendations

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages