О проекте

О SpotiDown

Небольшой инструмент с узкой задачей, созданный потому, что все остальные бесплатные варианты в этой области были хуже, чем должны были быть.

Почему он появился

SpotiDown начался в 2024 году из обычного раздражения. Каждый бесплатный загрузчик Spotify, который мы пробовали, делал одни и те же три вещи неправильно. Файлы приходили без тегов и обложек, и библиотека превращалась в папку неизвестных исполнителей. Кнопка пакетной загрузки была платной, то есть единственная функция, которая для плейлиста имеет значение, оказывалась ровно той, за которую нужно платить. А сами страницы были медленными, забитыми рекламой и усыпанными фальшивыми кнопками загрузки.

Ни одна из этих задач не является сложной. Прочитать публичные метаданные Spotify и записать их в файл — давно решённая задача. Отдать ZIP — давно решённая задача. Не грузить одиннадцать рекламных сетей — это решение, а не инженерный вызов. Разрыв между тем, какими эти инструменты могли быть, и тем, какими они были, показался нам достойным того, чтобы его закрыть.

Правила, от которых мы отталкиваемся

Это скорее ограничения, чем функции. Это то, чему мы говорим нет.

Ноль сторонних скриптов

Ни рекламных сетей, ни аналитических SDK, ни записи сессий, ни менеджеров тегов. Если нам когда-нибудь понадобятся цифры по использованию, они придут из серверных журналов без персональных данных.

Никаких платных базовых функций

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

Ни аккаунтов, ни истории

Если нечего регистрировать, то нечему и утекать. Здесь нет таблицы пользователей, потому что пользователей нет — есть только посетители.

Метаданные не опция

Загрузка, которая приходит без тегов, — это работа, сделанная наполовину. Каждый файл получает полные теги и обложку на каждой странице и в каждом формате.

Каждый язык получает настоящий сайт

Все 21 язык получают полное содержимое с корректной разметкой hreflang, а не переведённую строку меню поверх английского текста.

Поддерживается, и это видно

Журнал изменений на главной странице существует, чтобы вы могли понять, работает ли над этим ещё кто-нибудь. Инструменты такого рода быстро приходят в негодность, когда над ними никто не работает.

Чем мы не являемся

Мы никак не связаны со Spotify AB, и ничто здесь ею не одобрено. Spotify — их товарный знак, и мы используем это название только для описания того, с чем работает инструмент.

Мы не музыкальная библиотека. Здесь ничего не размещается, не хранится и не индексируется. Нет ни каталога для просмотра, ни поиска по песням, ни архива чего-либо, что кто-то когда-либо конвертировал. Файлы существуют на наших серверах в течение одной задачи, а затем удаляются.

Мы не нейтральны в вопросе того, как это используется. Хотеть личную копию — разумно. Распространять её дальше — нет, и условия использования говорят об этом прямо.

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

Каждая страница этого сайта — заранее сгенерированный статический HTML. Нет фреймворка, который оживает в фоне, нет клиентского маршрутизатора и нет рендеринга во время выполнения. Именно поэтому страницы быстро приходят на медленном соединении, и во многом поэтому сайт достаточно дёшев, чтобы работать без рекламы.

Единственный отправляемый JavaScript — небольшой файл, который отвечает за переключение темы, меню и сам конвертер. У него нет зависимостей. Таблица стилей написана вручную, а не сгенерирована утилитарным фреймворком, и потому остаётся достаточно компактной, чтобы её критическую часть можно было встроить прямо в страницу.

Служба конвертации работает отдельно от сайта. Она получает идентификатор Spotify, извлекает метаданные, создаёт аудио, записывает теги и возвращает ссылку на загрузку с ограниченным сроком действия. Никакого постоянного хранилища задач она не ведёт.

Как с нами связаться

Сообщения об ошибках, битые ссылки, исправления переводов и уведомления правообладателей идут через страницу контактов. Особенно приветствуются исправления переводов. Двадцать один язык — очень большая площадь, и когда носитель языка замечает неуклюжую фразу, это ценнее любого объёма внутренней вычитки.