Tengo una carpeta de 44GB (sí, cuarenta y cuatro) de .ape
archivos de CD. Cada uno .ape
es un CD completo, y generalmente hay un .cue
archivo junto con cada uno .ape
. Necesito convertir pero no dividir estos, ya que no hay datos de referencia para seguir. También hay algunos .jpg
s y .log
está ahí también, que no me importa. 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 ... todo el camino hasta 180 CDS.
Básicamente, quiero dividir todos los .ape
archivos en varios .flac
archivos y copiar la información de la etiqueta desde .cue
, manteniendo la estructura del directorio (preferiblemente en un directorio completamente nuevo y diferente). Prefiero un comando de una sola línea a un script si es posible. ¿Cómo voy a hacer 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 múltiples .flacs.
fuente
Respuestas:
Haría esto en varios pasos, ya que rara vez lo haces. La transparencia es más importante que la automatización aquí. Pero una sola línea también es posible. Supongo que si usa solo un comando para todos los archivos en cada paso, esto es lo que pretendía.
Necesita tener
ffmpeg
(oavconv
)shntool
ecuetools
instalar.Para convertir todos sus
.ape
a.flac
en su lugar:Si instala el codificador y decodificador MAC parcheado para archivos APE desde http://www.etree.org/shnutils/shntool/ , este primer paso es innecesario. Pero lo que se necesita para compilar con
g++
yyasm
usted mismo. Lo mismo ocurre con los.tta
archivos, que también se usan a menudo en lugar de.ape
.Dividir y nombrar
.flac
archivos: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 pistase toma del
.cue
archivo para los.flac
nombres de archivo. Para etiquetar los.flac
archivos divididos resultantes :Elimine el resto
CDImage.ape.cue
,CDImage.flac
y losCDImage.ape
archivos a su gusto. Los nombres son únicos, por lo que un simplefind . -name "CDImage*" -delete
es suficiente, excepto si Mozart hizo una composición a partir de laCDImage
cual no estoy al tanto.Para
shnsplit
que funcione, se deben instalar todos los codificadores / decodificadores necesarios para que pueda leer y escribir archivos. Los módulos para APE (y para el formato TTA) tendrían que compilarse desde la fuente, los otros instalando el paquete (es decir, FLAC).Esto funciona para todos los casos estándar donde
.cue
y.tta
/.flac
/ los.ape
archivos tienen el mismo nombre, excepto la extensión.Comentario secundario para otros : si se ocupa de esta conversión, sus archivos de origen podrían ser de origen japonés, donde APE y TTA eran más populares que en otros lugares. Si los
.cue
archivos se codificaron inicialmente con SHIFT-JIS y ahora se abrieron como UTF-8, elshnsplit
paso se interrumpirá . Necesita cambiar el nombre de los.cue
archivos cony convertir los archivos intermedios a UTF-8 con
antes de intentar hacer los pasos anteriores. No olvide deshacerse de los
.cux
archivos cuando haya terminado con:fuente
-o flac
con shnsplit lugar. No espere encontrar un nombre de base y un ape estándar, ya que el códec / contenedor también se utilizan otros códecs sin pérdida, por lo que es mejor no codificar y sería mejor incluir todos los pasos en una ejecución del comando find.metaflac --add-replay-gain
También sería una buena idea.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"' _ {} \: