- Rust 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Menu interativo, tags, Discogs (previa da capa e reordenacao), suporte ao Kopuz. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .forgejo/workflows | ||
| .github/workflows | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
Dandelion
Um gerenciador de músicas para organizar seus arquivos de forma automática e eficiente.
@author: CaioSimioni
@last_update: 05/10/2026
O Problema
Quando você baixa músicas de um álbum, elas ficam todas soltas na pasta Desconhecido com apenas o título da música no nome do arquivo.
Para organizá-las você precisa:
- Ver quais músicas estão na pasta
- Criar manualmente uma pasta
<Artista> - <Album> - Copiar/mover todos os arquivos
- Decidir a ordem correta das músicas
O passo 4 era extremamente tedioso.
A Solução
Dandelion faz tudo isso automaticamente com um único comando, permitindo que você escolha a ordem das músicas de forma interativa.
Instalação
Binário pronto (Releases)
Baixe o arquivo do seu sistema na página de Releases:
- Windows:
dandelion-vX.Y.Z-windows-x86_64.zip— extraia odandelion.exepara uma pasta que esteja noPATH(ex.:%USERPROFILE%\bin). - Linux / WSL:
dandelion-vX.Y.Z-linux-x86_64.tar.gz
tar -xzf dandelion-vX.Y.Z-linux-x86_64.tar.gz -C ~/.local/bin
Compilando do código
git clone https://cosmos.simioni.dev.br/caio/dandelion.git
cd dandelion
cargo install --path .
Publicando uma versão
- Atualize
versionnoCargo.tomle faça o merge namain. - Crie e envie a tag com a mesma versão:
git tag v0.3.0
git push cosmos v0.3.0
O workflow .forgejo/workflows/release.yml roda os testes, compila para Linux e Windows e publica a Release com os binários e o SHA256SUMS.txt.
Uso
A pasta de músicas padrão é detectada automaticamente, nesta ordem:
- Windows:
%USERPROFILE%\Music - WSL:
/mnt/c/Users/<usuario>/Music - Linux:
~/Music
Ela e as outras pastas podem ser trocadas em Configurações (veja abaixo).
Menu interativo
Rodando dandelion sem nenhum subcomando (ou dando duplo clique no dandelion.exe no Windows), abre um menu no terminal:
████▄ ▄▄▄ ▄▄ ▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄▄ ▄▄ ▄▄▄ ▄▄ ▄▄
██ ██ ██▀██ ███▄██ ██▀██ ██▄▄ ██ ██ ██▀██ ███▄██
████▀ ██▀██ ██ ▀██ ████▀ ██▄▄▄ ██▄▄▄ ██ ▀███▀ ██ ▀██
Gerenciador de musicas v0.4.0
Pasta de musicas: C:\Users\caio\Music
Desconhecido: 12 musica(s) aguardando organizacao
? O que voce quer fazer?
> Listar musicas da pasta Desconhecido
Organizar um album
Renomear musicas de uma pasta
Limpar pasta Desconhecido
Editar tags (manual ou pelo Discogs)
Configuracoes
Sair
Use as setas e Enter para escolher. Cada opção pergunta o que precisa (artista, álbum, copiar/mover/simular...) e volta para o menu no final. Esc cancela a opção atual; no menu principal, Esc sai. No renomear, uma prévia é mostrada antes de alterar os arquivos.
Configurações
Pelo menu (Configuracoes) você define, e elas ficam salvas para as próximas execuções:
| Configuração | Padrão | Para que serve |
|---|---|---|
| Pasta de músicas | detectada automaticamente | Onde ficam as pastas <Artista> - <Album> |
| Pasta Desconhecido | <pasta de músicas>/Desconhecido |
De onde o organizar, listar e limpar pegam as músicas |
| Pasta de playlists | a pasta de músicas | Pasta sugerida ao abrir o editor de tags |
| Token do Discogs | — | Necessário para buscar dados no Discogs |
O arquivo fica em %APPDATA%\dandelion\config.toml (Windows) ou ~/.config/dandelion/config.toml (Linux). dandelion config mostra os valores em uso.
Editor de tags
Para ajustes manuais em qualquer arquivo (playlists, correções depois de organizar...), funciona como um mini mp3tag: escolha um arquivo, ou uma pasta e depois quais músicas dela editar.
- Edição manual: título, artista, álbum, artista do álbum, ano, gênero, faixa, total de faixas, disco, gravadora e comentário. Com vários arquivos, a alteração vale para todos (campos diferentes aparecem como
<varios valores>), e há a opção de numerar as faixas pela ordem dos arquivos. - Discogs: busca o lançamento, mostra os detalhes e deixa você marcar o que aplicar: álbum, artista, ano, gênero (ou estilos), gravadora e capa. Com vários arquivos, os títulos e números podem vir da tracklist, na ordem dos arquivos.
- Nada é gravado até você escolher Salvar alteracoes, e só os campos alterados são escritos: o resto das tags é mantido.
Formatos suportados: MP3, FLAC, M4A/AAC, OGG, Opus e WAV (.mka só depois de organizado, quando vira .opus).
dandelion tags "~/Music/Playlists/Mix de Verao.mp3"
dandelion tags "~/Music/Pink Floyd - The Wall"
dandelion tags ~/Music/Playlists # escolhe os arquivos da pasta
Token do Discogs
- Entre em https://www.discogs.com/settings/developers e clique em Generate new token.
- No dandelion: Configuracoes > Token do Discogs e cole o token.
O token fica salvo em texto no arquivo de configuração. Se preferir, defina a variável de ambiente DISCOGS_TOKEN, que tem prioridade.
Linha de comando
Todos os comandos aceitam -p/--pasta para usar outro caminho, e os que alteram arquivos aceitam -d/--dry-run para apenas mostrar o que seria feito.
listar
Mostra as músicas soltas na pasta Desconhecido.
dandelion listar
organizar
Copia (ou move, com -m) as músicas de Desconhecido para <Artista> - <Album>, no formato NN - Artista - Titulo.ext, e já grava as tags em cada arquivo: título, artista, álbum, artista do álbum, número da faixa / total, e ano e gênero quando informados. Só esses campos são escritos; o resto das tags do arquivo é mantido.
Sem -a/-l, o artista e o álbum são perguntados. No modo interativo você escolhe a ordem das faixas e pode editar os títulos.
Com o Discogs (no menu, ou --discogs na linha de comando), você escolhe o lançamento e o dandelion:
- preenche artista, álbum, ano, gênero e gravadora;
- mostra uma prévia da capa no terminal e deixa navegar pelas imagens do lançamento (frente, verso...), abrir a imagem no visualizador do sistema, usar a capa que já veio com os arquivos ou não mexer na capa;
- casa cada arquivo com uma faixa da tracklist pelo título (ignorando acentos, maiúsculas, número no início e sufixos como "Remaster") e propõe a ordem, mostrando a duração do Discogs ao lado da do arquivo (com
(!)quando diferem muito); - usa os títulos da tracklist nos nomes e nas tags, e o artista de cada faixa quando ela tiver participação.
A numeração é sempre sequencial (01, 02, 03...), mesmo quando o Discogs lista as faixas pelos lados do vinil (A1, A2, B1...): num LP duplo, os lados A, B, C e D viram 1 a N em sequência.
Para ajustar a ordem (com ou sem Discogs), use a lista no estilo do mp3tag:
| Tecla | Ação |
|---|---|
| ↑ / ↓ | Navega |
| Espaço | Pega / solta a faixa; com ela na mão, as setas a movem |
| Shift+↑ / Shift+↓ | Move a faixa direto |
| Home / End | Vai ao início / fim (leva a faixa junto, se estiver na mão) |
| Enter | Confirma a ordem |
| Esc | Solta a faixa ou volta |
A prévia da capa usa cores de 24 bits: aparece certinha no Windows Terminal e na maioria dos terminais Linux.
Como o Desconhecido pode ter músicas de vários álbuns misturadas, só entram no álbum os arquivos que casaram com a tracklist; os outros ficam no Desconhecido (no menu você pode incluir algum manualmente). As faixas da tracklist sem arquivo são listadas como aviso. Sem o Discogs, o menu pergunta quais arquivos fazem parte do álbum.
Downloads do Kopuz
O dandelion reconhece os dois formatos de saída do Kopuz:
- Músicas soltas em
Desconhecido, comoThe Beatles - Something (Remastered 2009).mp3; - Pastas de álbum em
Desconhecido/<Album>/, com<Artista> - <Titulo>.mkae uma.jpgpor faixa. No menu, escolha a pasta em Organizar um album; na linha de comando, use--origem.
O artista e o álbum são sugeridos a partir dos nomes, e o prefixo <Artista> - sai do título. A capa vai para dentro dos arquivos e também como cover.jpg na pasta do álbum (do Discogs, da imagem da pasta ou da capa já embutida no arquivo).
Os .mka são convertidos para .opus (ou o formato do áudio que estiver dentro) sem reencodar, só trocando o container, para que as tags funcionem. Isso usa o ffmpeg, que precisa estar no PATH:
winget install Gyan.FFmpeg
Sem o ffmpeg, os .mka são organizados como estão, mas sem tags.
dandelion organizar -a "Pink Floyd" -l "The Wall" --ano 1979 --genero Rock
dandelion organizar -a "Pink Floyd" -l "The Wall" --discogs # usa -a/-l como sugestão de busca
dandelion organizar --discogs-id 2498807 -n # lançamento exato, sem perguntas
dandelion organizar --origem "~/Music/Desconhecido/Abbey Road" --discogs
dandelion organizar -a "Pink Floyd" -l "The Wall" -n # ordem alfabética, sem perguntas
dandelion organizar -a "Pink Floyd" -l "The Wall" -m -d # simula mover
| Flag | Descrição |
|---|---|
-a, --artista |
Nome do artista |
-l, --album |
Nome do álbum |
-m, --mover |
Move em vez de copiar (funciona entre discos diferentes) |
-n, --no-interactive |
Usa ordem alfabética (ou a da tracklist, com --discogs), sem perguntas |
-e, --no-edit |
Não pergunta se quer editar os títulos |
--ano, --genero |
Gravados nas tags |
-o, --origem |
Pasta de onde pegar as músicas (padrão: Desconhecido) |
--discogs |
Busca o álbum no Discogs (precisa do token) |
--discogs-id |
Usa direto o lançamento discogs.com/release/<ID> |
--sem-tags |
Só copia/move e renomeia, sem gravar tags |
Caracteres inválidos em nomes de arquivo (< > : " / \ | ? *) são trocados por _. Arquivos que já existem no destino nunca são sobrescritos: eles são pulados e reportados como erro.
renomear
Renomeia as músicas de uma pasta para NN - Artista - Titulo.ext, aproveitando o número da faixa que já estiver no nome (01 - , 1. , 03_...). Rodar de novo na mesma pasta não altera nada.
dandelion renomear -p "~/Music/Pink Floyd - The Wall" -a "Pink Floyd"
limpar
O Desconhecido funciona como uma pasta de downloads: depois de organizar os álbuns, o limpar remove as músicas soltas e as pastas de álbum (com as imagens que vieram junto). Outros arquivos não são tocados. Mostra a lista e pede confirmação antes de apagar.
dandelion limpar
Desenvolvimento
cargo test
cargo clippy --all-targets -- -D warnings
cargo fmt --check
O CI roda esses mesmos passos no Forgejo (.forgejo/workflows/testes.yml) e no GitHub (.github/workflows/pr-check.yml).