
Eu tenho uma pasta de .ape
arquivos de CD de 44 GB (sim, quarenta e quatro). Cada um .ape
é um CD completo e geralmente há um .cue
arquivo junto com cada um .ape
. Preciso converter, mas não dividi-los, já que não há dados de sinalização para serem usados. Há também alguns .jpg
s e .log
s lá, com os quais não me importo. Se uma tree
saída de comando ajudar a visualizar isso, aqui está:
├── Philips Mozart Collection - 180 CD
│ │ ├── box01-Symphonies
│ │ │ ├── 1B.jpg
│ │ │ ├── 1F.jpg
│ │ │ ├── cd01
│ │ │ │ ├── CDImage.ape
│ │ │ │ ├── CDImage.ape.cue
│ │ │ │ ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 1) - Neville Mariner, Academy of St. Martin in the Fields.log
│ │ │ │ ├── img421.jpg
│ │ │ │ └── img422.jpg
│ │ │ ├── cd02
│ │ │ │ └── CDImage.ape
│ │ │ ├── cd03
│ │ │ │ ├── CDImage.ape
│ │ │ │ ├── CDImage.ape.cue
│ │ │ │ ├── Complete Mozart Edition, Vol. 01, Early Symphonies (Disc 2) - Sir Neville Marinner - Acadamy of St Martin in the Fields.log
│ │ │ │ ├── img426.jpg
│ │ │ │ └── img427.jpg
│ │ │ ├── cd04
etc... até 180 CDS.
Basicamente, quero dividir todos os .ape
arquivos em vários .flac
arquivos e copiar as informações da tag do .cue
, mantendo a estrutura de diretórios (de preferência em um diretório completamente novo e diferente). Prefiro um comando de linha única a um script, se possível. Como eu faria isso? Obrigado a quem sabe fazer isso!
E antes que alguém sinalize esta questão como uma duplicata desta aqui: Converta todos os arquivos .ape para .flac em diferentes subpastas, gostaria de salientar que esse usuário não precisou dividir o .ape em vários .flacs.
Responder1
Eu faria isso em várias etapas, já que você raramente faz isso. A transparência é mais importante que a automação aqui. Mas uma única linha também é possível. Presumo que se você usar apenas um comando para todos os arquivos em cada etapa, é isso que você pretendia.
Você precisa ter ffmpeg
(ou avconv
) shntool
e cuetools
instalado.
Para converter todos os seus .ape
no .flac
lugar:
find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;
Se você instalar o codificador e decodificador MAC corrigido para arquivos APE de http://shnutils.freeshell.org/shntool/, este primeiro passo é desnecessário. Mas você precisaria compilá-lo com g++
você yasm
mesmo. O mesmo vale para .tta
arquivos, que também são frequentemente usados em vez de .ape
.
Dividire nome .flac
arquivos:
find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;
Se shnsplit
também for usado para a conversão, substitua .flac
in "${1%.cue}.flac"
pela extensão do formato do qual você está convertendo.
%n
- número de rastreio%p
- artista%t
– nome da faixa
é retirado do .cue
arquivo para os .flac
nomes dos arquivos. Para marcar os arquivos divididos resultantes .flac
:
find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;
Remova os arquivos , e restantes CDImage.ape.cue
quando CDImage.flac
quiser CDImage.ape
. Os nomes são únicos, então um simples find . -name "CDImage*" -delete
é suficiente, exceto se Mozart fez uma composição a partir da CDImage
qual não tenho conhecimento.
Para shnsplit
funcionar, todos os codificadores/decodificadores necessários precisam estar instalados para que ele possa ler e gravar arquivos. Módulos para APE (e para o formato TTA) precisariam ser compilados a partir do código-fonte, os demais instalando o pacote (ou seja, FLAC).
Isso funciona para todos os casos padrão em que os arquivos .cue
e .tta
/ .flac
/ .ape
têm o mesmo nome, exceto para a extensão.
Observação lateral para outros: Se você lidar com essa conversão, seus arquivos de origem poderão ser de origem japonesa, onde APE e TTA eram mais populares do que em outros lugares. Se os .cue
arquivos foram inicialmente codificados em SHIFT-JIS e agora abertos como UTF-8, a shnsplit
etapaquebrará. Você precisa renomear os .cue
arquivos com
find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +
e converta os arquivos intermediários para UTF-8 com
find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;
antes de tentar executar as etapas acima. Não se esqueça de se livrar dos .cux
arquivos quando terminar:
find . -name "*.cux" -delete