Sobre o projeto

Audioserve é um servidor de áudio pessoal escrito em Rust que serve arquivos de áudio diretamente de estruturas de diretórios. Destina-se principalmente a audiolivros, embora qualquer coleção de pastas bem organizada funcione. O design enfatiza simplicidade e abordagem minimalista. Biblioteca de mídia: Audioserve navega pelo sistema de arquivos em vez de depender de tags de áudio, então a estrutura de pastas que você criar é o que será exibido. Layouts recomendados incluem autor/livro ou autor/série/livro. Os arquivos podem ser ordenados naturalmente, então o preenchimento numérico é opcional. Imagens de capa e arquivos de descrição colocados nas pastas são usados para exibição, e a busca cobre nomes de pastas. Várias coleções podem ser passadas como argumentos separados de linha de comando. Cache: Os dados da coleção são armazenados em cache em um banco de dados chave-valor embutido (sled), o que acelera a busca e o carregamento de pastas com muitos arquivos. A primeira varredura pode levar tempo para coleções grandes. As alterações são monitoradas via inotify por padrão, e uma nova varredura completa pode ser forçada com um sinal ou o argumento --force-cache-update. Coleções individuais podem optar por sair com :no-cache, ao custo de busca mais lenta e sem compartilhamento de posição. Audiolivros de arquivo único: Arquivos .m4b e similares com metadados de capítulos são apresentados como pastas contendo arquivos de capítulos virtuais. Capítulos também podem ser gerados a partir da duração ou fornecidos via um arquivo CSV .chapters. Subpastas de CD podem opcionalmente ser recolhidas na pasta pai. Posições de reprodução: Clientes no mesmo grupo de dispositivos podem compartilhar posições de reprodução por uma conexão WebSocket, permitindo continuação em outro dispositivo. As posições podem ser copiadas para JSON e restauradas. Pastas concluídas são marcadas com base na última posição de escuta. Segurança: O acesso é controlado por um segredo compartilhado; não há usuários nomeados. O segredo é enviado como um hash com sal, e o servidor emite tokens para solicitações subsequentes. TLS é suportado diretamente ou via proxy reverso, e a limitação de taxa está disponível. Arquivos ocultos são bloqueados na API. Transcodificação e desempenho: Audioserve pode transcodificar áudio para bitrates mais baixos, com cache de transcodificação opcional. Suporta compressão de resposta e HTTP/2. Clientes e API: Um cliente web PWA moderno (TypeScript/Svelte) está incluído, junto com um cliente web mais antigo e um cliente Android. Uma API HTTP documentada permite clientes personalizados. Instalação: As opções incluem imagens Docker, builds Linux estáticos, builds locais e compilação com recursos opcionais como collation, tags-encoding, shared-positions, transcoding-cache e behind-proxy.