Создаём свой облачный музыкальный стриминг через WebDAV (без Яндекс Музыки и ограничений)
Всем привет!
В какой-то момент я понял: музыка у меня есть – а контроля над ней нет...
В текущих условиях (цензура треков, отсутствие релизов, качество звука на стриминговых платформах) внезапно вышли из тени наши старые подходы: загрузка и прослушивание музыки локально. Лично у меня в шкафу до сих пор валяется старый Sony Ericsson K550i с флешкой Memory Stick Micro, где хранится капсула времени в виде низкокачественных MP3 файлов времён школы из нулевых. Конечно, мы не будем с вами слушать подобное сейчас, так как у нас имеется возможность достать почти любой релиз в формате без потерь или в более-менее приемлемом качестве. Именно такую собственноручно собранную коллекцию я и хочу слушать, прогуливаясь в наушниках по улицам в прекрасный весенний день.
Не долго думая, волевым решением я принялся собирать максимально простую схему:
свой стриминг музыки из облака;
без серверов, без сложной инфраструктуры;
с нормальным качеством (вплоть до lossless).
Что ж… Разберёмся, как это работает и как это собрать по-быстрому.
Архитектура решения
Схема придумана донельзя простая!

Берём Яндекс Диск, заливаем на него музыку, подключаемся через WebDAV в плеере – стриминг личной медиатеки готов!
Ключевой элемент здесь – WebDAV.
Что такое WebDAV и почему это стриминг
WebDAV – это расширение HTTP, которое позволяет работать с файлами на удалённом сервере как с локальной файловой системой.
Но самое интересное – плеер не скачивает файл целиком.
Он делает HTTP-запросы с заголовком:
...
Range: bytes=...
...То есть:
загружает только нужные куски файла;
фактически реализует потоковое воспроизведение.
Поэтому:
старт воспроизведения быстрый;
трафик расходуется экономно;
можно перематывать без полной загрузки трека.
Обзаводимся всем необходимым
Итак! Что нам нужно иметь перед тем как сделать свой личный музыкальный стриминг?
Пространство на Яндекс диске (желательно > 1 TB для lossless);
Локальная медиатека с FLAC/ALAC/MP3/AAC...;
Плеер с поддержкой сетевых музыкальных источников: WebDAV (я использую Neutron).
Всё на месте? Можем приступать.
Загружаем музыку на Диск
Для начала создадим отдельную директорию на Диске для размещения в ней музыкальных файлов.

После чего заливаем свою музыку.
Так как у подопытного аккаунта установлен бесплатный тариф, на диске имеется всего 10 Гб доступного пространства. Для этого я сделал компромиссный вариант по качеству: сжал исходники lossless до lossy AAC 256 kbit/s через MediaHuman Audio Converter (бесплатный конвертер аудио) с сохранением всех тегов, после чего залил на Диск.



Получение токена для WebDAV доступа к Диску
Чтобы наш плеер мог подключиться к Диску, нам нужно создать специальный пароль.
Создание пароля для доступа к Диску
Переходим в на страницу «Пароли приложений» под своим аккаунтом Яндекса, на диск которого мы залили нашу медиатеку, и выбираем «Файлы — WebDAV»
Будет предложено задать имя для пароля. Тут вводим любое. Главное, не забыть, для чего именно он создан. Я назвал просто Neutron — сразу понятно, что использоваться он будет в плеере.


Сохраняем полученную комбинацию в надёжное место. Её мы и скормим Neutron'у для доступа к своей медиатеке на Диске.
Подключение к Диску в плеере (на примере Neutron)
Открываем Neutron и сразу идём по пути Настройки – Медиатека – Источники. Здесь как раз и подключим наш Диск с музыкой.
Выбираем источник WebDAV и заполняем необходимые поля:
Адрес: https://webdav.yandex.ru/
Описание: любое
Логин: email адрес аккаунта с Яндекс Диском
Пароль: тот самый пароль, который мы получили на предыдущем шаге.

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

Далее, остаётся только дождаться, когда плеер сформирует медиатеку.
Процесс, к сожалению, не самый быстрый... Но как только он завершится, у нас появляется возможность слушать свою музыку "по облаку" без всяких стриминговых сервисов с их правилами.

Подводные камни
Вот тут начинается самое интересное. Нет идеальных схем. Недостатки не обошли стороной и моё решение.
1. Индексация
Может быть оооочень медленной.
Причин немного, но они всё-таки есть:
WebDAV не самый быстрый протокол;
много мелких файлов.
2. Задержки при воспроизведении
Особенно, если
слабый интернет;
большой FLAC.
3. Потенциальные ограничения облака
Сам я с таким не сталкивался, но Яндекс в любой момент может вставить палки в колёса:
порезать скорость;
ограничить количество запросов.
Будем надеятся, что этого не случится!
4. Нет "моей волны"
Да, больше никаких рекомендаций и новых случайных открытий новых исполнителей. Только своя музыка, только хардкор!
Когда это решение идеально?
Эта схемка подойдёт вам, если
вы собираете личную медиатеку;
у вас есть Яндекс Диск и много пространства на нём;
надоели стриминговые платформы;
хочется полный контроль над своей музыкой.
Заключение
Лично для меня вышеописанная схема стала идеальным вариантом.
Всё делается максимально просто:
загружаю музыку в облако;
открываю плеер;
обновляю медиатеку;
слушаю.
И больше не думаю о том:
удалят ли трек;
испортят ли качество;
исчезнет ли альбом;
и об остальных прихотях платформ.
Теперь у меня свой личный стриминг с блэкджеком и личной медиатекой и Neutron'ом!