No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
caio 50fcc61c5e
All checks were successful
Testes / Build, testes e lint (push) Successful in 1m25s
Release / Build e publicacao (push) Successful in 3m23s
Merge branch 'feat/menu-tags-discogs-kopuz' into main
Menu interativo, tags, Discogs (previa da capa e reordenacao), suporte ao Kopuz.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 01:37:19 -03:00
.forgejo/workflows ci: adiciona workflow de release no Forgejo com binarios Linux e Windows 2026-09-27 17:10:17 -03:00
.github/workflows fix: corrige bugs de arquivos, modulariza o codigo e adiciona CI no Forgejo 2026-09-27 16:57:11 -03:00
src feat: previa da capa e reordenacao de faixas estilo mp3tag 2026-10-05 01:33:32 -03:00
.gitignore init: Dandelion, Um gerenciador de arquivos de música 2026-04-25 12:32:46 -03:00
Cargo.lock feat: previa da capa e reordenacao de faixas estilo mp3tag 2026-10-05 01:33:32 -03:00
Cargo.toml feat: previa da capa e reordenacao de faixas estilo mp3tag 2026-10-05 01:33:32 -03:00
README.md feat: previa da capa e reordenacao de faixas estilo mp3tag 2026-10-05 01:33:32 -03:00

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:

  1. Ver quais músicas estão na pasta
  2. Criar manualmente uma pasta <Artista> - <Album>
  3. Copiar/mover todos os arquivos
  4. 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 o dandelion.exe para uma pasta que esteja no PATH (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

  1. Atualize version no Cargo.toml e faça o merge na main.
  2. 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:

  1. Windows: %USERPROFILE%\Music
  2. WSL: /mnt/c/Users/<usuario>/Music
  3. 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

  1. Entre em https://www.discogs.com/settings/developers e clique em Generate new token.
  2. 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, como The Beatles - Something (Remastered 2009).mp3;
  • Pastas de álbum em Desconhecido/<Album>/, com <Artista> - <Titulo>.mka e uma .jpg por 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).