
Tengo una carpeta de .ape
archivos de CD de 44 GB (sí, cuarenta y cuatro). Cada uno .ape
es un CD completo y normalmente hay un .cue
archivo junto con cada uno .ape
. Necesito convertirlos pero no dividirlos, ya que no hay datos de referencia para seguir. También hay algunos .jpg
s y .log
s allí, que no me importan. Si la tree
salida de un comando ayuda a visualizar esto, aquí tienes:
├── 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... hasta 180 CDS.
Básicamente, quiero dividir todos los .ape
archivos en varios .flac
archivos y copiar la información de la etiqueta del archivo .cue
, manteniendo la estructura del directorio (preferiblemente en un directorio completamente nuevo y diferente). Si es posible, prefiero un comando de una sola línea a un script. ¿Cómo haría esto? ¡Gracias a cualquiera que sepa cómo hacer esto!
Y antes de que alguien marque esta pregunta como un duplicado de esta aquí: Convierta todos los archivos .ape a .flac en diferentes subcarpetas, me gustaría señalar que ese usuario no necesitaba dividir el .ape en varios .flacs.
Respuesta1
Haría esto en varios pasos, ya que esto rara vez se hace. Aquí la transparencia es más importante que la automatización. Pero también es posible una sola línea. Supongo que si usa solo un comando para todos los archivos en cada paso, esto es lo que pretendía.
Necesitas tener ffmpeg
(o avconv
) shntool
e cuetools
instalado.
Para convertir todo en .ape
su .flac
lugar:
find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;
Si instala el codificador y decodificador MAC parcheado para archivos APE desde http://shnutils.freeshell.org/shntool/, este primer paso es innecesario. Pero necesitarías compilarlo contigo g++
mismo yasm
. Lo mismo ocurre con .tta
los archivos, que también se suelen utilizar en lugar de .ape
.
Dividiry nombre .flac
archivos:
find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;
Si shnsplit
también se usa para la conversión, reemplace .flac
in "${1%.cue}.flac"
con la extensión del formato desde el que está convirtiendo.
%n
- número de pista%p
– intérprete%t
– nombre de la pista
se toma del .cue
archivo para los .flac
nombres de archivo. Para etiquetar los archivos divididos resultantes .flac
:
find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;
Elimine los archivos CDImage.ape.cue
, CDImage.flac
, y restantes CDImage.ape
cuando lo desee. Los nombres son únicos, por lo que un simple find . -name "CDImage*" -delete
es suficiente, excepto si Mozart hizo una composición a partir de CDImage
la cual no tengo conocimiento.
Para shnsplit
que funcione, es necesario instalar todos los codificadores/decodificadores necesarios para que pueda leer y escribir archivos. Los módulos para APE (y para el formato TTA) deberían compilarse desde el código fuente, los demás instalando el paquete (es decir, FLAC).
Esto funciona para todos los casos estándar en los que los archivos .cue
y .tta
// tienen el mismo nombre, excepto la extensión..flac
.ape
Comentario al margen para otros: Si realiza esta conversión, sus archivos fuente podrían ser de origen japonés, donde APE y TTA eran más populares que en otros lugares. Si los .cue
archivos inicialmente estaban codificados con SHIFT-JIS y ahora se abrieron como UTF-8, el shnsplit
pasoromperá. Necesitas cambiar el nombre de los .cue
archivos con
find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +
y convertir los archivos intermedios a UTF-8 con
find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;
antes de intentar realizar los pasos anteriores. No olvides deshacerte de los .cux
archivos cuando hayas terminado con:
find . -name "*.cux" -delete