Skip to content

Migrate to Spotify API and integrate yt-dlp for audio resolution - #1

Open
yukinine-dev wants to merge 1 commit into
ragedrugg:mainfrom
yukinine-dev:claude/spotify-bot-rwkcu4
Open

Migrate to Spotify API and integrate yt-dlp for audio resolution#1
yukinine-dev wants to merge 1 commit into
ragedrugg:mainfrom
yukinine-dev:claude/spotify-bot-rwkcu4

Conversation

@yukinine-dev

Copy link
Copy Markdown

Меняется источник данных, вся обвязка (карточка, кэш-канал, диалоги, инлайн, альбомы, эффекты) остаётся.

Новое:

  • src/music/ — Spotify Web API клиент (поиск/треки/альбомы/плейлисты/лайки/ currently-playing/recently-played), заменяет src/yandex/.
  • src/audio/ytdlp.ts — резолвер аудио через yt-dlp, матчинг по ISRC/длительности, YouTube + SoundCloud фолбэком.
  • services/auth.ts — OAuth Authorization Code + PKCE. Гибрид: WEBHOOK_HOST задан → callback на /spotify/callback; иначе paste-код в чат.
  • services/nowPlayingWatcher.ts — polling /me/player/currently-playing вместо ws-Ynison.
  • HttpClient.downloadAudio поддерживает file:// URL — cache-пайплайн без изменений читает локальные файлы yt-dlp.

Удалено:

  • @dvxch/yandex-music из dependencies.
  • lossless-путь (Spotify не отдаёт FLAC, yt-dlp тем более).

Схема БД: track_id/album_id теперь TEXT (Spotify id — 22 base62-символа, не bigint).

Deep-link'и и URL-парсеры перенастроены под open.spotify.com/spotify:.

.env.example, README, install.sh, package.json, docker-compose.yml, docs/sql, ecosystem обновлены на nowspot / SPOTIFY_CLIENT_ID.

Тесты: удалены yandex-специфичные (ynison, DeviceAuthError, wave-color, lossless), остальные обновлены под string id / Spotify URL. 125/130 проходят локально; 5 упавших — TaggingService, требуют ffmpeg в окружении (нет регрессии кода).

Claude-Session: https://claude.ai/code/session_01QbH2hSXcggbR2pHy4mwasR

Меняется источник данных, вся обвязка (карточка, кэш-канал, диалоги,
инлайн, альбомы, эффекты) остаётся.

Новое:
- src/music/ — Spotify Web API клиент (поиск/треки/альбомы/плейлисты/лайки/
  currently-playing/recently-played), заменяет src/yandex/.
- src/audio/ytdlp.ts — резолвер аудио через yt-dlp, матчинг по ISRC/длительности,
  YouTube + SoundCloud фолбэком.
- services/auth.ts — OAuth Authorization Code + PKCE. Гибрид: WEBHOOK_HOST
  задан → callback на /spotify/callback; иначе paste-код в чат.
- services/nowPlayingWatcher.ts — polling /me/player/currently-playing
  вместо ws-Ynison.
- HttpClient.downloadAudio поддерживает file:// URL — cache-пайплайн
  без изменений читает локальные файлы yt-dlp.

Удалено:
- @dvxch/yandex-music из dependencies.
- lossless-путь (Spotify не отдаёт FLAC, yt-dlp тем более).

Схема БД: track_id/album_id теперь TEXT (Spotify id — 22 base62-символа,
не bigint).

Deep-link'и и URL-парсеры перенастроены под open.spotify.com/spotify:.

.env.example, README, install.sh, package.json, docker-compose.yml,
docs/sql, ecosystem обновлены на nowspot / SPOTIFY_CLIENT_ID.

Тесты: удалены yandex-специфичные (ynison, DeviceAuthError, wave-color,
lossless), остальные обновлены под string id / Spotify URL. 125/130
проходят локально; 5 упавших — TaggingService, требуют ffmpeg в
окружении (нет регрессии кода).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QbH2hSXcggbR2pHy4mwasR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants