Проект Funkwhale выпустил первую стабильную версию. В рамках инициативы развивается свободный сервер, написанный на языке Python с использованием фреймвока Django, для размещения музыки и подкастов, прослушивание которых доступно с помощью веб-интерфейса, клиентов с поддержкой Subsonic API или родного Funkwhale API, и с других экземпляров Funkwhale, используя протокол федеративной сети ActivityPub.
Взаимодействие пользователя с аудио происходит с помощью библиотек и каналов: библиотеки — это коллекции из нескольких артистов со случайно созданным UUID в качестве адреса, а канал — дискография какого-то одного исполнителя, которому задаётся человекочитаемый адрес; каналы могут быть полезны для публикации подкастов. Работа с подписками похожа на таковую в другом проекте — PeerTube: вы можете подписаться как на пользователя, так и на его отдельно созданные каналы. Так как сервер работает по протоколу ActivityPub, подписаться возможно с других популярных реализаций, вроде Mastodon и Pleroma.
После создания библиотеки или канала появляется возможность загружать музыку. Файловое хранилище для неё может быть как локальным, так и удалённым, используя встроенную поддержку файловых систем на протоколе Amazon S3. Загрузить можно любой файл популярного формата, без дополнительного перекодирования и потери качества (что, например, делает PeerTube, который тоже поддерживает загрузку аудио). Funkwhale считывает встроенные в файлы музыкальные метаданные и обложки, а в случае их отсутствия выдаёт ошибку. Поэтому пользователям рекомендуется использовать MusicBrainz Picard для записи правильных тегов перед загрузкой. Также доступен интерфейс редактирования метаданных после загрузки, работающий в виде ревизий с видимой историей изменений.
Из уже загруженной музыки в библиотеки и каналы можно составлять плейлисты, радиостанции и помечать треки избранными. Удалённые пользователи смогут запросить доступ к вашей библиотеке или каналу, просто вставив ссылку на неё в поисковую строку своего сервера. Анонимные пользователи смогут слушать музыку из веб-интерфейса, если это разрешено в настройках сервера. Зарегистрированные локальные пользователи могут получить доступ ко всей музыке сервера без использования веб-интерфейса, зайдя через любой клиент с поддержкой Subsonic API — ещё одного музыкального сервера, ныне под проприетарной лицензией, с параллельно развивающимися ответвлениями старой кодовой базы под свободной лицензией, — или родного Funkwhale API, например, Otter для Android.
Клиенты также могут запросить у сервера транскодированную версию треков (например, из FLAC в MP3 с меньшим битрейтом, требующую меньше интернет-трафика).
Возможна подписка на RSS-ленты, например, на уже упомянутые подкасты.
Из изменений в этом выпуске:
- минимально требуемая версия Python поднята до 3.6;
- ломающие совместимость изменения в клиентском API;
- прекращение поддержки JSON-токенов (JWT) в пользу OAuth;
- улучшенный алгоритм генерирования превью для обложек;
- в веб-интерфейсе добавлена кнопка для импорта музыки из файловой системы сервера;
- появилось отображение количества скачиваний треков и альбомов;
- новая страница поиска;
- кнопка «играть» на треках и альбомах теперь заменяет очередь, а не добавляет треки в неё;
- поддержка скробблинга с помощью Last.fm API v2.
>>> Подробности