Об этом проекте

Audioserve — это персональный аудиосервер, написанный на Rust, который обслуживает аудиофайлы непосредственно из структур каталогов. Он предназначен в первую очередь для аудиокниг, хотя подойдёт и любая хорошо организованная коллекция папок. Дизайн делает акцент на простоте и минималистичном подходе. Медиатека: Audioserve просматривает файловую систему, а не полагается на аудиотеги, поэтому вы видите именно ту структуру папок, которую создали. Рекомендуемые схемы размещения включают author/book или author/series/book. Файлы можно упорядочивать естественным образом, поэтому числовое дополнение нулями необязательно. Изображения обложек и файлы описаний, размещённые в папках, используются для отображения, а поиск охватывает имена папок. Несколько коллекций можно передать отдельными аргументами командной строки. Кэширование: Данные коллекций кэшируются во встроенной базе данных «ключ-значение» (sled), что ускоряет поиск и загрузку папок с большим количеством файлов. Первое сканирование больших коллекций может занять время. Изменения по умолчанию отслеживаются через inotify, а полное повторное сканирование можно принудительно запустить сигналом или аргументом --force-cache-update. Отдельные коллекции могут отказаться от кэша с помощью :no-cache, ценой более медленного поиска и отсутствия обмена позициями. Однофайловые аудиокниги: Файлы .m4b и подобные с метаданными глав представляются как папки, содержащие виртуальные файлы глав. Главы также можно сгенерировать из длительности или задать через CSV-файл .chapters. Подпапки CD при желании можно свернуть в родительскую папку. Позиции воспроизведения: Клиенты в одной группе устройств могут обмениваться позициями воспроизведения через WebSocket-соединение, что позволяет продолжить на другом устройстве. Позиции можно сохранить в JSON и восстановить. Завершённые папки отмечаются на основе последней позиции прослушивания. Безопасность: Доступ контролируется общим секретом; именованных пользователей нет. Секрет передаётся в виде хеша с солью, а сервер выдаёт токены для последующих запросов. TLS поддерживается напрямую или через обратный прокси, а также доступно ограничение скорости запросов. Скрытые файлы блокируются в API. Транскодирование и производительность: Audioserve может транскодировать аудио в более низкие битрейты, с опциональным кэшем транскодирования. Поддерживаются сжатие ответов и HTTP/2. Клиенты и API: В комплект входит современный PWA-веб-клиент (TypeScript/Svelte), а также более старый веб-клиент и клиент для Android. Документированный HTTP API позволяет создавать собственные клиенты. Установка: Варианты включают образы Docker, статические сборки для Linux, локальные сборки и компиляцию с опциональными возможностями, такими как collation, tags-encoding, shared-positions, transcoding-cache и behind-proxy.