J'ai un dossier de 44 Go (oui, quarante-quatre) de .ape
fichiers CD. Chacun .ape
est un CD complet, et il y a généralement un .cue
fichier avec chacun .ape
. J'ai besoin de les convertir, mais pas de les séparer, car il n'y a pas de données de repère à utiliser. Il y a aussi quelques .jpg
s et .log
s là-dedans aussi, dont je ne me soucie pas. Si une tree
sortie de commande permet de visualiser cela, vous allez ici:
├── 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 diviser tous les .ape
fichiers en plusieurs .flac
fichiers et copier les informations de balise à partir du .cue
, en conservant la structure du répertoire (de préférence dans un répertoire complètement nouveau et différent). Je préfère une commande sur une seule ligne à un script si possible. Comment pourrais-je m'y prendre? Merci à tous ceux qui savent faire ça!
Et avant que quiconque ne signale cette question en double à celle-ci ici: Convertissez tous les fichiers .ape en .flac dans différents sous - dossiers , je voudrais souligner que cet utilisateur n'avait pas besoin de diviser le .ape en plusieurs .flacs.
la source
Réponses:
Je le ferais en plusieurs étapes, car 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.
Vous devez avoir
ffmpeg
(ouavconv
)shntool
etcuetools
installé.Pour convertir tous vos
.ape
fichiers.flac
en place:Si vous installez l'encodeur et le décodeur MAC corrigés pour les fichiers APE à partir de http://www.etree.org/shnutils/shntool/ , cette première étape n'est pas nécessaire. Mais vous devrez le compiler avec vous
g++
-yasm
même. Il en va de même pour les.tta
fichiers, qui sont également souvent utilisés à la place de.ape
.Diviser et nommer les
.flac
fichiers:Si
shnsplit
est également utilisé pour la conversion, remplacez le.flac
in"${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 pisteest extrait du
.cue
fichier pour les.flac
noms de fichier. Pour marquer les.flac
fichiers divisés résultants :Supprimez les fichiers restants
CDImage.ape.cue
,CDImage.flac
etCDImage.ape
à votre guise. Les noms sont uniques, donc un simplefind . -name "CDImage*" -delete
suffit, sauf si Mozart a fait une composition à partir deCDImage
laquelle je ne suis pas au courant.Pour
shnsplit
fonctionner, tous les encodeurs / décodeurs nécessaires doivent être installés afin qu'il puisse lire et écrire des fichiers. Les modules pour APE (et pour le format TTA) devraient être compilés à partir de la source, les autres en installant le paquet (ie FLAC).Cela fonctionne pour tous les cas standard où
.cue
et.tta
/.flac
/ les.ape
fichiers 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
.cue
fichiers étaient initialement codés SHIFT-JIS et maintenant ouverts en UTF-8, l'shnsplit
étape s'arrêtera . Vous devez renommer les.cue
fichiers avecet convertir les fichiers intermédiaires en UTF-8 avec
avant d'essayer d'effectuer les étapes ci-dessus. N'oubliez pas de vous débarrasser des
.cux
fichiers lorsque vous avez terminé avec:la source
-o flac
avec shnsplit à la place. Ne vous attendez pas à trouver un nom de base et un singe standard car le codec / conteneur d'autres codecs sans perte sont également utilisés, il est donc préférable de ne pas coder en dur et il serait préférable d'inclure toutes les étapes en une seule exécution de la commande find.metaflac --add-replay-gain
serait également une bonne idée.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"' _ {} \: