Se você já tem um processo que está perto de funcionar, tudo que você precisa fazer é encontrar um tagger de linha de comando que possa "copiar" tags de um arquivo para outro. id3cp
do pacote id3lib pode ser o que você precisa.
Se eu fizesse isso, copiaria o CD para arquivos WAV (em EAC
, porque nunca vi nada comparado à sua precisão com uma boa unidade), depois executei um script que faz o seguinte pseudo-código. Eu provavelmente selecionaria os clipes manualmente, porque programaticamente pegar 45 segundos úteis de uma faixa arbitrariamente longa nem sempre funcionaria. Mas aqui está o processo básico:
for each *.WAV:
1. convert <name>.wav to <name>.mp3
2. create a 45-second <name>.snippet.wav from <name>.wav
3. apply fade-out to <name>.snippet.wav
4. convert <name>.snippet.wav to <name>.snippet.mp3
5. apply id3 tags to both <name>.mp3 and <name>.snippet.mp3
As etapas 1 e 4 podem ser realizadas com o codificador de linha de comando lame
.
As etapas 2 e 3 podem ser feitas com sox
ou ecasound
(você pode combiná-las em um único comando).
A etapa 5 pode ser feita com id3v2
, mid3v2
(da excelente biblioteca de marcação python mutagen
), mp3info
(se você quiser apenas tags ID3v1) ou algum outro tagger de linha de comando - essencialmente seu script chamaria o tagger duas vezes, uma para cada MP3 criado nesta passagem do loop for.
Esse processo tem a vantagem de não criar snippets transcodificados, pois você não codificou para MP3, decodificou e recodificou durante o processo de aparar e aplicar o fadeout.