LINUX.ORG.RU

Funkwhale 1.0

 , , , ,


3

3

Проект 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.

>>> Подробности

★★★★★

Проверено: alpha ()

Ответ на: комментарий от ChekPuk

А зачем оно там?

  1. Чтобы не разорить владельца сервера внезапно нахлынувшей популярностью.

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

ugoday ★★★★★ ()

А есть что-нибудь подобное, но написанное на чистой сишечке или хотя бы плюсах — ну чтобы минимизировать ресурсы и зависимости?

// Против проекта ничего не имею, каждый пишет на чём умеет.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

Есть реализации Subsonic-совместимых серверов на Go, например, gonic и Navidrome. Но они, конечно же, без федерации по ActivityPub и с меньшей функциональностью. То есть, аналогов Funkwhale сейчас нет, увы.

commagray ★★★★★ ()
Ответ на: комментарий от hobbit

каждый пишет на чём умеет

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

dummy ()
Последнее исправление: dummy (всего исправлений: 9)
Ответ на: комментарий от dummy

есть такое понятие в софтваростроении - целесообразность

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

dummy ()
Последнее исправление: dummy (всего исправлений: 1)
Ответ на: комментарий от tolstoevsky

О, спасибо за работающий пример, я даже Ambient Symphony на телефоне запустил.

А нет возможности задать приветственную надпись в соответствующем падеже? Или там жёсткий шаблон «Добро пожаловать на $sitename$»?

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от Rinaldus

Отличия, наверное, только в том, что можно подписаться на музыку с других серверов, в Python вместо Java, и возможности анонимам слушать аудио (в Subsonic-серверах, насколько я помню, обязателен логин). Возможности у Funkwhale скромнее, и не все Subsonic-клиенты с ним адекватно работают.

Если у тебя уже собранная библиотека на Subsonic, наверное, не стоит. Хотя у Funkwhale бóльший потенциал развития.

commagray ★★★★★ ()
Ответ на: комментарий от hobbit

Так хотелось набросить, что начал разговаривать сам с собой?

лор не дает редактировать сообщение по истечении определенного периода. а вы со своими фантазимями тут как тут.

dummy ()
Ответ на: комментарий от hobbit

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

dummy ()
Последнее исправление: dummy (всего исправлений: 3)