# 🎡 Navidrome Music Sync ΠœΡƒΠ»ΡŒΡ‚ΠΈΡΠ΅Ρ€Π²ΠΈΡΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€ ΠΈ синхронизатор ΠΌΡƒΠ·Ρ‹ΠΊΠΈ для **Navidrome**. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ ΠΈΠ»ΠΈ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅ΠΊΠΈ, Π°Π»ΡŒΠ±ΠΎΠΌΡ‹ ΠΈ плСйлисты ΠΈΠ· **ЯндСкс ΠœΡƒΠ·Ρ‹ΠΊΠΈ**, **Spotify**, **Apple Music** ΠΈ **YouTube Music** Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΌΠ΅Π΄ΠΈΠ°Ρ‚Π΅ΠΊΡƒ Navidrome с сохранСниСм ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π³ΠΎΠ², ΠΎΠ±Π»ΠΎΠΆΠ΅ΠΊ Π² высоком Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈ синхронизированных ΠΊΠ°Ρ€Π°ΠΎΠΊΠ΅-тСкстов (`.lrc`). --- ## πŸš€ ВозмоТности - **ΠŸΡ€ΡΠΌΠΎΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ· ЯндСкс ΠœΡƒΠ·Ρ‹ΠΊΠΈ (320 kbps)**: - Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅ΠΊΠΎΠ², альбомов ΠΈ плСйлистов. - Полная синхронизация Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ плСйлиста **«МнС нравится»** (880+ Ρ‚Ρ€Π΅ΠΊΠΎΠ²). - **Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ· Spotify ΠΈ Apple Music**: - Π‘Π΅Π· нСобходимости ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… подписок ΠΈ Π·Π°Ρ€ΡƒΠ±Π΅ΠΆΠ½Ρ‹Ρ… Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ². - Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Π°ΡƒΠ΄ΠΈΠΎ-ΠΌΠ°Ρ‚Ρ‡ΠΈΠ½Π³ с YouTube Music CDN (Opus 160 / MP3 320k). - **ΠžΠ±Ρ…ΠΎΠ΄ Ρ†Π΅Π½Π·ΡƒΡ€Ρ‹ ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ**: - Если Ρ‚Ρ€Π΅ΠΊ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π Π€ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ Π·Π°Ρ†Π΅Π½Π·ΡƒΡ€Π΅Π½ (Β«Π·Π°ΠΏΠΈΠΊΠ°Π½Β»), Π΄Π²ΠΈΠΆΠΎΠΊ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ источники ΠΈ скачиваСт ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ **Explicit (18+)** Π²Π΅Ρ€ΡΠΈΡŽ. - **ΠœΡƒΠ»ΡŒΡ‚ΠΈΡΠ΅Ρ€Π²ΠΈΡΠ½Ρ‹ΠΉ поиск & ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅**: - ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск ΠΏΠΎ **Spotify** (ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ источник), **ЯндСкс ΠœΡƒΠ·Ρ‹ΠΊΠ΅**, **SoundCloud**, **YouTube** ΠΈ **Apple Music**. - **ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Spotify**: Ρ‚Ρ€Π΅ΠΊΠΈ ΠΈ Π°Π»ΡŒΠ±ΠΎΠΌΡ‹ со Spotify ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ бонус рСлСвантности ΠΈ всСгда выводятся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ Π² Π²Ρ‹Π΄Π°Ρ‡Π΅. - Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ точности совпадСния: Π»ΡƒΡ‡ΡˆΠΈΠ΅ совпадСния сразу со всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²Π²Π΅Ρ€Ρ…Ρƒ. - ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Π·ΡƒΡ€Ρ‹: Π±Π΅ΠΉΠ΄ΠΆΠΈ `πŸ”ž 18+ Explicit` (Π±Π΅Π· Ρ†Π΅Π½Π·ΡƒΡ€Ρ‹) ΠΈ `⚠️ Clean` (зацСнзурСнная вСрсия). - ВстроСнный Π°ΡƒΠ΄ΠΈΠΎΠΏΠ»Π΅Π΅Ρ€ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΈ Π½Π° Π»Π΅Ρ‚Ρƒ (**HTTP Range 206**). - ΠŸΡ€ΡΠΌΠΎΠ΅ скачиваниС Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сСрвСра Π² 1 ΠΊΠ»ΠΈΠΊ. - **πŸ” Π—Π°Ρ‰ΠΈΡ‚Π° & Авторизация Ρ‡Π΅Ρ€Π΅Π· Navidrome**: - ПанСль синхронизации Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Для Π²Ρ…ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Π² Navidrome. - БСссионныС Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ HMAC (30 Π΄Π½Π΅ΠΉ) для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° HTTP Basic Auth для API / Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. - **🌊 Моя Π’ΠΎΠ»Π½Π° (Smart Wave V2 & V3)**: - Автономный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π½Π° основС профиля вкусов (Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ, скробблы, Ρ‚ΠΎΠΏ артистов ΠΈΠ· `navidrome.db`). - **ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Ρ‹ΠΉ LLM-Ρ€Π΅Ρ€Π°Π½ΠΊΠ΅Ρ€**: локальная Ollama (`qwen2.5:1.5b` с `keep_alive: 0`, 0 ΠœΠ‘ RAM Π² простоС) Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ» ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ² ΠΈ ΠΎΡ‚Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚Ρ€Π΅ΠΊΠΈ ΠΏΠΎΠ΄ врСмя суток (*ΡƒΡ‚Ρ€ΠΎ / дСнь / Π²Π΅Ρ‡Π΅Ρ€ / Π½ΠΎΡ‡ΡŒ*) ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ настроСниС (*ЭнСргия*, *Π§ΠΈΠ»Π»*, *АндСграунд*). - **⭐ Π›Π°ΠΉΠΊ (Β«Π’ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽΒ»)**: ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ пСрСнос Ρ‚Ρ€Π΅ΠΊΠ° Π² ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ΠΌΠ΅Π΄ΠΈΠ°Ρ‚Π΅ΠΊΡƒ `/music/{Artist}/{Album}/{Title}.mp3` ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π’ΠΎΠ»Π½Ρ‹ свСТим ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ. - **πŸ‘Ž Π”ΠΈΠ·Π»Π°ΠΉΠΊ**: ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈ занСсСниС исполнитСля ΠΈ Ρ‚Ρ€Π΅ΠΊΠ° Π² persistent Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ список `disliked_tracks`, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ΠΈΠ· всСх Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ навсСгда. - Π‘ΠΊΠΎΠ»ΡŒΠ·ΡΡ‰ΠΈΠΉ Π±ΡƒΡ„Π΅Ρ€ Π½Π° 25 Ρ‚Ρ€Π΅ΠΊΠΎΠ² Π² `/music/AI Recommendations/Моя Π’ΠΎΠ»Π½Π°/` (~180 ΠœΠ‘). - **Авто-ротация**: Ссли Ρ‚Ρ€Π΅ΠΊ Π»Π°ΠΉΠΊΠ½ΡƒΡ‚ Π² Navidrome β€” пСрСносится Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ навсСгда; Ссли Π»Π΅ΠΆΠΈΡ‚ Π±ΠΎΠ»Π΅Π΅ 7 Π΄Π½Π΅ΠΉ Π±Π΅Π· Π»Π°ΠΉΠΊΠ° β€” автоматичСски удаляСтся. - **Π€ΠΎΠ½ΠΎΠ²ΠΎΠ΅ расписаниС**: автоматичСская ротация ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 6 часов. - АвтоматичСская гСнСрация ΡƒΠΌΠ½ΠΎΠ³ΠΎ плСйлиста `Моя Π’ΠΎΠ»Π½Π°.nsp` ΠΈ `Моя Π’ΠΎΠ»Π½Π°.m3u8` для всСх Subsonic ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². - **πŸŽ™οΈ AI Π Π°Π΄ΠΈΠΎ (AI DJ Host & AI Π Π°Π΄ΠΈΠΎ.m3u8)**: - ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ радиоэфир: Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ радиостанции привСтствуСт ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ³ΠΎΠ΄Ρƒ Π·Π° ΠΎΠΊΠ½ΠΎΠΌ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (`wttr.in`) ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΆΠΈΠ²Ρ‹Π΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΊΠΈ ΠΊ Ρ‚Ρ€Π΅ΠΊΠ°ΠΌ. - НСйросСтСвая гСнСрация Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π΄ΠΈΠΊΡ‚ΠΎΡ€Π° Ρ‡Π΅Ρ€Π΅Π· `qwen2.5:1.5b` (`keep_alive: 0`). - НСйросинтСз Ρ€Π΅Ρ‡ΠΈ с Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π½Π° GPU ΠΈ сохранСниСм MP3-Ρ€Π΅ΠΏΠ»ΠΈΠΊ с ID3-Ρ‚Π΅Π³Π°ΠΌΠΈ `AI Π Π°Π΄ΠΈΠΎ (DJ)`. - ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π»ΠΈΠ²ΠΈΠ½Π³-плСйлист `AI Π Π°Π΄ΠΈΠΎ.m3u8` (Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Ρ€Π΅ΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 2–3 пСсни), сохраняя `Моя Π’ΠΎΠ»Π½Π°` ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ чистой ΠΎΡ‚ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΠ². - АвтоматичСскоС ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Navidrome Ρ‡Π΅Ρ€Π΅Π· Subsonic API (`startScan`) для ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ появлСния радиоэфира Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…. - **Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Navidrome**: - ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΠΎ стандарту: `/music/{Artist}/{Album}/{Track_Number} - {Title}.mp3`. - АвтоматичСскоС скачиваниС построчных ΠΊΠ°Ρ€Π°ΠΎΠΊΠ΅-тСкстов (`.lrc`). - Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Navidrome Ρ‡Π΅Ρ€Π΅Π· Subsonic API (`startScan`) сразу послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. - **Π’Π΅Π±-интСрфСйс & REST API**: - Адаптивный Ρ‚Π΅ΠΌΠ½Ρ‹ΠΉ Web UI с прогрСсс-Π±Π°Ρ€ΠΎΠΌ Π·Π°Π΄Π°Ρ‡, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ настроСния Π’ΠΎΠ»Π½Ρ‹, ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ AI Π Π°Π΄ΠΈΠΎ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ голоса Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ, ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Π›Π°ΠΉΠΊ/Π”ΠΈΠ·Π»Π°ΠΉΠΊ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Ρ€Π΅ΠΊΠΎΠ². - Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ асинхронный Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ интСрфСйса. - ДСдупликация (Π½Π΅ скачиваСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ‚Ρ€Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅). --- ## πŸ› οΈ Установка ΠΈ запуск ### 1. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ (.env) Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ ЯндСкс ΠœΡƒΠ·Ρ‹ΠΊΠΈ: ```bash cp .env.example .env ``` ### 2. Запуск Ρ‡Π΅Ρ€Π΅Π· Docker Compose ```bash docker compose up -d --build ``` БСрвис доступСн ΠΏΠΎ адрСсу: `http://127.0.0.1:8005` (ΠΈΠ»ΠΈ `https://music.qpid.pro/sync/`). --- ## πŸ”Œ API Π­Π½Π΄ΠΏΠΎΠΈΠ½Ρ‚Ρ‹ - `GET /` β€” Π’Π΅Π±-интСрфСйс управлСния (трСбуСтся авторизация). - `GET /login` / `POST /login` β€” Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° ΠΈ эндпоинт Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (валидация Ρ‡Π΅Ρ€Π΅Π· Navidrome). - `GET /logout` / `POST /logout` β€” Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ сСссии. - `GET /api/search?q={query}` β€” Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ поиск ΠΏΠΎ всСм ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌ с Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. - `GET /api/stream?url={url}` β€” Аудио-стриминг для ΠΏΠ»Π΅Π΅Ρ€Π° с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Range-запросов ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΈ. - `GET /api/direct-download?url={url}` β€” ΠŸΡ€ΡΠΌΠ°Ρ ΠΎΡ‚Π΄Π°Ρ‡Π° Ρ„Π°ΠΉΠ»Π° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. - `POST /api/download` β€” Запуск Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° скачиваниС ΠΏΠΎ ссылкС: ```json { "url": "https://music.yandex.ru/album/123/track/456" } ``` - `POST /api/sync/yandex-likes` β€” Запуск ΠΏΠΎΠ»Π½ΠΎΠΉ синхронизации ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ²ΡˆΠΈΡ…ΡΡ Ρ‚Ρ€Π΅ΠΊΠΎΠ² ΠΈΠ· ЯндСкс ΠœΡƒΠ·Ρ‹ΠΊΠΈ. - `GET /api/wave/status` β€” Бтатус Π±ΡƒΡ„Π΅Ρ€Π° «МоСй Π’ΠΎΠ»Π½Ρ‹Β» ΠΈ якорныС артисты. - `POST /api/wave/generate` β€” ГСнСрация свСТих Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° Π’ΠΎΠ»Π½Ρ‹. - `POST /api/wave/rotate` β€” Ротация Π±ΡƒΡ„Π΅Ρ€Π° (пСрСнос Π»Π°ΠΉΠΊΠ½ΡƒΡ‚Ρ‹Ρ… Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, очистка ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ…). - `POST /api/wave/like` β€” Π›Π°ΠΉΠΊ Ρ‚Ρ€Π΅ΠΊΠ° Π² Π’ΠΎΠ»Π½Π΅ (ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ пСрСнос Π² ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ Π΄ΠΎΠΊΠ°Ρ‡ΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ слота). - `POST /api/wave/dislike` β€” Π”ΠΈΠ·Π»Π°ΠΉΠΊ Ρ‚Ρ€Π΅ΠΊΠ° Π² Π’ΠΎΠ»Π½Π΅ (ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, занСсСниС Π² blacklist ΠΈ Π΄ΠΎΠΊΠ°Ρ‡ΠΊΠ° Π·Π°ΠΌΠ΅Π½Ρ‹). - `DELETE /api/track?file_path={path}` β€” Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ любого Ρ‚Ρ€Π΅ΠΊΠ° с диска ΠΈ ΠΈΠ· истории. - `GET /api/radio/status` β€” Бтатус AI РадиовСщания ΠΈ количСство Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ. - `POST /api/radio/generate` β€” ГСнСрация Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΈ сборка плСйлиста Β«AI Π Π°Π΄ΠΈΠΎ.m3u8Β». - `GET /api/tasks` β€” Бписок Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΈ прогрСсс выполнСния. - `GET /api/history` β€” Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈ статистика Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ ΠΌΡƒΠ·Ρ‹ΠΊΠΈ.