Batch-convert e split .ape com .cue para .flac em várias pastas do terminal

9

Eu tenho uma pasta de 44 GB (sim, quarenta e quatro) de arquivos em .ape CD. Cada .ape é um CD completo e geralmente há um arquivo .cue junto com cada .ape . Eu preciso converter, mas não dividi-los, já que não há dados de sugestão para passar. Há também alguns .jpg s e .log s, o que não me interessa. Se uma saída do comando tree ajudar a visualizar isso, aqui vai:

├── 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, eu quero dividir todos os arquivos .ape em vários arquivos .flac , e copiar as informações da tag do .cue , mantendo a estrutura de diretório (de preferência em um diretório completamente novo e diferente). Eu prefiro um comando de linha única para um script, se possível. Como eu iria sobre isso? Obrigado a quem sabe como fazer isso!

E antes que alguém sinalize essa pergunta como duplicata para esta 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.

    
por willem.hill 13.04.2016 / 04:30

1 resposta

6

Eu faria isso em várias etapas, já que você faz isso raramente. A transparência é mais importante que a automação aqui. Mas uma única linha também é possível. Eu suponho 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 para .flac no lugar:

find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "" "${1%.ape}.flac"' _ {} \;

Se você instalar o codificador MAC codificado e o decodificador para arquivos APE do link , este primeiro passo é desnecessário. Mas você precisaria compilar com g++ e yasm . O mesmo vale para os arquivos .tta , que também são usados com frequência em vez de .ape .

Divida e nomeie .flac arquivos:

find . -name "*.cue" -exec sh -c 'exec shnsplit -f "" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;

Se shnsplit também for usado para a conversão, substitua o .flac in "${1%.cue}.flac" pela extensão do formato do qual você está convertendo.

  • %n - número da faixa
  • %p - executante
  • %t - nome da faixa

é obtido do arquivo .cue para os nomes dos arquivos .flac . Para marcar os arquivos .flac divididos resultantes:

find . -name "*.cue" -execdir sh -c 'exec cuetag "" *.flac' _ {} \;

Remova os arquivos restantes CDImage.ape.cue , CDImage.flac e CDImage.ape como quiser. Os nomes são únicos, então um simples find . -name "CDImage*" -delete é suficiente, exceto se Mozart fez uma composição começando com CDImage , que eu não conheço.

Para que shnsplit funcione, todos os codificadores / decodificadores necessários precisam ser instalados para que possam ler e gravar arquivos. Módulos para APE (e para o formato TTA) precisariam ser compilados da fonte, os outros pela instalação do 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 a extensão.

Observação lateral para os outros : Se você lidar com essa conversão, seus arquivos de origem podem ser de origem japonesa, onde o APE e o TTA eram mais populares do que em outros lugares. Se os arquivos .cue foram inicialmente codificados por SHIFT-JIS e agora abertos como UTF-8, a shnsplit step quebrará . Você precisa renomear os arquivos .cue 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" -- ""' _ {} \;

antes de tentar executar as etapas acima. Não se esqueça de se livrar dos arquivos .cux quando terminar:

find . -name "*.cux" -delete
    
por emk2203 17.04.2016 / 11:36