Eu tenho uma pasta de 44 GB (sim, quarenta e quatro) de .ape
arquivos de CD. Cada .ape
um é um CD completo e geralmente há um .cue
arquivo junto com cada um .ape
. Preciso converter, mas não dividi-las, pois não há dados de sugestão para serem utilizados. Também existem alguns " .jpg
es" .log
também, dos 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 .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 iria fazer isso? Obrigado a quem sabe como fazer isso!
E antes que alguém sinalize essa pergunta como duplicada para esta aqui: Converta todos os arquivos .ape em .flac em diferentes subpastas , gostaria de salientar que esse usuário não precisou dividir o .ape em vários .flacs.
fonte
Respostas:
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. Presumo que, se você usar apenas um comando para todos os arquivos a cada etapa, é isso que você pretende.
Você precisa ter
ffmpeg
(ouavconv
)shntool
ecuetools
instalado.Para converter todos os seus
.ape
arquivos.flac
no local:Se você instalar o codificador e decodificador MAC corrigidos para arquivos APE em http://www.etree.org/shnutils/shntool/ , essa primeira etapa será desnecessária. Mas você precisa compilar com
g++
eyasm
si mesmo. O mesmo vale para.tta
arquivos, que também são frequentemente usados em vez de.ape
.Dividir e nomear
.flac
arquivos: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 de rastreio%p
- artista%t
- nome da faixaé retirado do
.cue
arquivo para os.flac
nomes dos arquivos. Para marcar os.flac
arquivos resultantes, divididos :Retire os restantes
CDImage.ape.cue
,CDImage.flac
eCDImage.ape
arquivos em seu lazer. Os nomes são únicos, portanto,find . -name "CDImage*" -delete
basta um simples , exceto se Mozart fez uma composição começando com aCDImage
qual não estou ciente.Para
shnsplit
funcionar, todos os codificadores / decodificadores necessários precisam ser instalados para que ele possa ler e gravar arquivos. Módulos para APE (e para o formato TTA) precisariam ser compilados a partir da fonte, os outros instalando o pacote (isto é, FLAC).Isso funciona para todos os casos padrão em que
.cue
e.tta
/.flac
/.ape
arquivos têm o mesmo nome, exceto a extensão.Observação adicional para outras pessoas : se você lida 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
.cue
arquivos foram inicialmente codificados em SHIFT-JIS e agora abertos como UTF-8, ashnsplit
etapa será interrompida . Você precisa renomear os.cue
arquivos come converta os arquivos intermediários em UTF-8 com
antes de tentar executar as etapas acima. Não se esqueça de se livrar dos
.cux
arquivos quando terminar:fonte
-o flac
com o shnsplit. Não espere encontrar um nome de base e um macaco padrão, pois o codec / contêiner também é usado por outros codecs sem perdas, por isso é melhor não codificar e seria melhor incluir todas as etapas em uma execução do comando find.metaflac --add-replay-gain
também seria uma boa ideia.find -name '*.ape' -execdir sh -c 'flac="${1%.ape}.flac"; ffmpeg -i "$1" "$flac" && shnsplit -f CDImage.ape.cue "$flac" && cuetag CDImage.ape.cue "$flac"' _ {} \: