Sobre o projeto
O PlaylistPillar é um motor de catálogo de música auto-hospedado distribuído como uma aplicação baseada em Docker. Seu objetivo declarado é transformar listas de reprodução de plataformas de streaming em arquivos locais duradouros e navegáveis, preservando o contexto de uma lista de reprodução em vez de tratar as faixas como arquivos descartáveis.
Abordagem principal
- Arquivamento com prioridade em metadados: as exportações são descritas como incluindo tags ID3 incorporadas, arte de álbum (JPEG/PNG) e informações de ano de lançamento, com referências cruzadas em bancos de dados públicos de discografia como MusicBrainz e Discogs.
- Preservação da estrutura: a ordem original da lista de reprodução, os metadados das faixas e as artes são mantidos, de modo que uma cópia local ainda exibe capa, artista, álbum e número da faixa, mesmo que uma faixa desapareça posteriormente de um serviço de streaming.
- Motor de diff de listas de reprodução: uma lista de reprodução previamente arquivada pode ser reescaneada para ver quais faixas foram removidas, adicionadas ou alteradas desde a última exportação.
Implantação e interface
- Nativo do Docker: executa em qualquer ambiente Docker através de uma única configuração compose.yaml, sem dependências em nível de sistema descritas.
- Painel web responsivo: gerencie arquivos, visualize o uso de armazenamento e navegue pelas listas de reprodução importadas de qualquer dispositivo.
- Interface multilíngue: o painel e os logs de exportação são listados como disponíveis em inglês, espanhol, francês, alemão, japonês e português.
- Worker em segundo plano: as listas de reprodução em fila são processadas com limitação de taxa, novas tentativas e rastreamento de progresso sem bloquear a sessão do navegador.
Detalhes de exportação e armazenamento
- Formatos de exportação: pastas estruturadas (Artista / Álbum / Faixa.mp3) ou um único pacote .pillar compactado com metadados incorporados.
- Estimativas de armazenamento fornecidas no README: aproximadamente 80-120 MB por hora de música a 320 kbps, mais 1-3 MB por álbum para arte; uma lista de reprodução de 50 faixas normalmente usa 300-450 MB.
- Notas técnicas: enfileiramento de requisições com token-bucket, SQLite por padrão com PostgreSQL opcional, capas de álbuns comprimidas para WebP com fallback em PNG, e checksums SHA-256 registrados em um manifesto sidecar para verificação de integridade.
Primeiros passos
1. Configure o ambiente: forneça um token de API opcional da plataforma de streaming para enriquecimento de metadados mais rápido e defina o volume de armazenamento no compose.yaml.
2. Inicie o painel, depois cole um link de lista de reprodução ou carregue um arquivo .txt contendo URLs.
3. O sistema processa as faixas em segundo plano, preservando arte e metadados, e notifica pelo painel quando o arquivo estiver pronto.
Estrutura do repositório
O README descreve um backend (Python, Flask + Celery) com workers, modelos e um enriquecedor de metadados; um frontend em Vue.js com componentes e arquivos de localização; arquivos Docker; documentação; testes; e uma licença MIT.
Itens de roadmap mencionados para 2026 incluem assistentes de importação em lote, marcação por IA offline para sugestões de gênero e humor, espelhamento automático semanal de listas de reprodução e um aplicativo complementar para celular.
Suporte e conformidade
O README anuncia um módulo de diagnóstico que gera um snapshot pronto para suporte de configuração, logs, saúde do contêiner e status da rede, com um tempo de resposta típico declarado inferior a duas horas e chat ao vivo durante o horário comercial. Também afirma que os tokens de API são criptografados em repouso com AES-256 e nunca registrados, e que consultas anônimas de metadados públicos são uma opção. Um aviso de isenção de responsabilidade observa que o projeto é destinado ao uso pessoal de arquivamento e não contorna restrições geográficas, DRM ou níveis de assinatura, sendo os usuários responsáveis por cumprir os termos de serviço das plataformas integradas.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.