Как собрать свою музыкальную библиотеку без лишних хлопот

17 мая 2026

Репозиторий был удален

Но вы можете попробовать восстановить данные из глобального архива.

2,251
153
8
4 месяца

Знакомая ситуация: вы составили идеальный плейлист в Spotify, но понимаете, что в любой момент треки могут стать недоступными из-за лицензионных ограничений или проблем с аккаунтом. Облачные сервисы удобны, пока они работают. Но когда хочется иметь файлы под рукой — на плеере, в машине или домашнем медиасервере — начинаются танцы с бубном.

Я наткнулся на проект Spooty, который решает эту проблему элегантно и, что немаловажно, полностью в self-hosted режиме.

Что это такое

Spooty — это инструмент для тех, кто предпочитает хранить музыку у себя. По сути, это мостик между вашими предпочтениями в Spotify и реальными аудиофайлами. Работает он хитро: проект не взламывает защиту Spotify и не пытается скачивать потоки напрямую с их серверов. Вместо этого он забирает метаданные трека (название, артист, альбом) через официальный API, а затем ищет и скачивает аудио с YouTube.

В итоге вы получаете аккуратно разложенные по папкам файлы с правильными тегами и обложками. Проект написан на NestJS и Angular, упакован в Docker и готов к работе «из коробки».

Что умеет Spooty

Главное преимущество здесь не в простом скачивании одного трека, а в автоматизации процесса.

Реклама

Подписка на обновления

Это самая крутая фишка. Вы можете «подписаться» на плейлист или страницу артиста. Как только там появляется новая песня, Spooty замечает это и автоматически вытягивает её в ваше хранилище. Это превращает инструмент из простой «качалки» в полноценный менеджер библиотеки.

Гибкость форматов

Если вы аудиофил, вам не навязывают mp3. В настройках можно выбрать flac, opus, m4a или даже wav. Качество тоже настраивается — от стандартных 128 kbps до максимального битрейта, который сможет отдать YouTube.

Работа с очередями

Внутри используется Redis, поэтому если вы решите «слить» дискографию группы из 20 альбомов, сервер не упадет. Задачи выстраиваются в очередь и обрабатываются постепенно. Можно даже ограничить количество скачиваний в минуту, чтобы не ловить лишние подозрения от Google.

Как это устроено внутри

Архитектура проекта довольно стандартная для современного веба: TypeScript на обоих концах. Backend на NestJS управляет логикой поиска и скачивания, а Frontend на Angular дает приятный интерфейс, где не нужно возиться с консолью после первичной настройки.

Интересный момент связан с обходом ограничений YouTube. Разработчик предусмотрел использование cookies.txt. Это позволяет приложению «прикидываться» залогиненным пользователем, что критично, если вы качаете много или живете в регионе, где YouTube капризничает.

Запуск и настройка

Проще всего завести Spooty через Docker Compose. Вам понадобятся две вещи: аккаунт разработчика Spotify (создается за пару минут) и пара ключей API.

Пример конфига выглядит так:

services:
  spooty:
    image: raiper34/spooty:latest
    container_name: spooty
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - /your/music/folder:/spooty/backend/downloads
      - /your/config/cookies.txt:/spooty/config/cookies.txt
    environment:
      - SPOTIFY_CLIENT_ID=ваш_id
      - SPOTIFY_CLIENT_SECRET=ваш_secret

После запуска интерфейс будет доступен на 3000 порту. Там нужно будет авторизоваться через Spotify, и можно начинать кормить сервис ссылками.

Кому это пригодится

Проект явно не для всех. Если вам хватает стриминга и вы не боитесь, что завтра ваш любимый альбом пропадет из доступа — Spooty вам не нужен.

Но он станет спасением для:

  • Владельцев локальных медиасерверов вроде Jellyfin или Plex.
  • Тех, кто слушает музыку в офлайне (в самолетах или походах).
  • Коллекционеров, которые хотят иметь физическую копию редких релизов.

Из минусов я бы отметил необходимость ручной возни с куками YouTube, если планируете качать терабайтами. Но для личного использования это небольшая цена за автоматизацию.

Spooty — крепкий инструмент, который делает ровно то, что обещает. Без лишнего пафоса и сложных настроек. Если давно хотели «забэкапить» свои плейлисты, это отличный повод потратить 15 минут на настройку контейнера.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.