J'ai un dossier de 44 Go (oui, quarante-quatre) de .ape
CD files. Chaque .ape
est un CD complet. Il existe généralement un fichier .cue
avec chaque .ape
. J'ai besoin de convertir mais pas de séparer ces données, car il n'y a pas de données de repère à parcourir. Il y a aussi quelques .jpg
s et .log
s dedans également, ce qui m'est égal. Si une sortie de la commande tree
permet de visualiser cela, voici ce que vous devez faire:
├── 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 ... jusqu'à 180 CDS.
Fondamentalement, je veux fractionner tous les fichiers .ape
en plusieurs fichiers .flac
et copier les informations de balise à partir du .cue
, en conservant la structure de répertoires (de préférence dans un répertoire complètement nouveau et différent). Je préfère une commande d'une seule ligne à un script si possible. Comment pourrais-je m'y prendre? Merci à tous ceux qui savent comment faire ça!
Et avant que quiconque ne signale cette question sous forme de doublon ici: Convertir tous les fichiers .ape en .flac dans différents sous-dossiers , je tiens à signaler que cet utilisateur n'avait pas besoin de scinder le fichier. singes en plusieurs .flacs.
Je le ferais en plusieurs étapes, puisque vous le faites rarement. La transparence est plus importante que l'automatisation ici. Mais une seule ligne est également possible. Je suppose que si vous utilisez une seule commande pour tous les fichiers à chaque étape, c'est ce que vous vouliez.
ffmpeg
(ou avconv
name__), shntool
et cuetools
sont installés.
Pour convertir tous vos .ape
en .flac
à la place:
find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;
Si vous installez le codeur et le décodeur MAC corrigés pour les fichiers APE de http://www.etree.org/shnutils/shntool/ , cette première étape est inutile. Mais vous devrez le compiler vous-même avec g++
et yasm
name__. Il en va de même pour les fichiers .tta
, qui sont également souvent utilisés à la place de .ape
.
Diviser et nommer .flac
fichiers:
find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;
Si shnsplit
est également utilisé pour la conversion, remplacez le .flac
dans "${1%.cue}.flac"
par l’extension du format à partir duquel vous effectuez la conversion.
%n
- numéro de piste%p
- interprète%t
- nom de la pisteprovient du fichier .cue
pour les noms de fichier .flac
. Pour baliser les fichiers scindés .flac
résultants:
find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;
Supprimez les fichiers CDImage.ape.cue
, CDImage.flac
et CDImage.ape
restants à votre guise. Les noms étant uniques, un simple find . -name "CDImage*" -delete
est suffisant, sauf si Mozart a créé une composition commençant par CDImage
dont je ne suis pas au courant.
Pour que shnsplit
fonctionne, tous les encodeurs/décodeurs nécessaires doivent être installés pour qu'il puisse lire et écrire des fichiers. Les modules pour APE (et pour le format TTA) doivent être compilés à partir des sources, les autres en installant le paquet (par exemple, FLAC).
Cela fonctionne dans tous les cas standard où les fichiers .cue
et .tta
/.flac
/.ape
ont le même nom, à l'exception de l'extension.
Remarque secondaire pour les autres : Si vous traitez avec cette conversion, vos fichiers source pourraient être d'origine japonaise, où APE et TTA étaient plus populaires qu'ailleurs. Si les fichiers .cue
étaient initialement codés SHIFT-JIS et maintenant ouverts en tant que UTF-8, l'étape shnsplit
s'interrompra . Vous devez renommer les fichiers .cue
avec
find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +
et convertir les fichiers intermédiaires en UTF-8 avec
find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;
avant de tenter de suivre les étapes ci-dessus. N'oubliez pas de vous débarrasser des fichiers .cux
lorsque vous avez terminé:
find . -name "*.cux" -delete