Stapelkonvertierung und Aufteilen von .ape mit .cue in .flac in verschiedenen Ordnern vom Terminal aus

Stapelkonvertierung und Aufteilen von .ape mit .cue in .flac in verschiedenen Ordnern vom Terminal aus

Ich habe einen 44 GB (ja, vierundvierzig) großen Ordner mit .apeCD-Dateien. Jede .apeist eine vollständige CD, und normalerweise liegt .cuejeder eine Datei bei .ape. Ich muss diese konvertieren, aber nicht aufteilen, da es keine Cue-Daten gibt, nach denen ich mich richten könnte. Es sind auch einige .jpgs und .logs darin, die mir egal sind. Wenn eine treeBefehlsausgabe hilft, dies zu visualisieren, hier ist sie:

├── 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

usw. … bis hin zu 180 CDS.

Im Grunde möchte ich alle .apeDateien in mehrere .flacDateien aufteilen und die Tag-Informationen aus kopieren, .cuewobei die Verzeichnisstruktur erhalten bleibt (vorzugsweise in einem völlig neuen und anderen Verzeichnis). Wenn möglich, bevorzuge ich einen einzeiligen Befehl gegenüber einem Skript. Wie gehe ich dabei vor? Vielen Dank an alle, die wissen, wie das geht!

Und bevor jemand diese Frage als Duplikat dieser hier kennzeichnet: Konvertieren Sie alle .ape-Dateien in .flac in verschiedenen Unterordnern, möchte ich darauf hinweisen, dass dieser Benutzer die .ape-Datei nicht in mehrere .flacs aufteilen musste.

Antwort1

Ich würde das in mehreren Schritten machen, da man das selten macht. Transparenz ist hier wichtiger als Automatisierung. Aber auch eine einzelne Zeile ist möglich. Ich gehe davon aus, dass es das ist, was du beabsichtigt hast, wenn du pro Schritt nur einen Befehl für alle Dateien verwendest.

Sie müssen ffmpeg(oder avconv) shntoolund cuetoolsinstalliert haben.

So konvertieren Sie alle Ihre .apeDaten .flacdirekt vor Ort:

find . -name "*.ape" -exec sh -c 'exec ffmpeg -i "$1" "${1%.ape}.flac"' _ {} \;

Wenn Sie den gepatchten MAC-Encoder und -Decoder für APE-Dateien installieren von http://shnutils.freeshell.org/shntool/, dieser erste Schritt ist unnötig. Sie müssten es jedoch selbst mit g++und kompilieren yasm. Dasselbe gilt für .ttaDateien, die auch oft anstelle von verwendet werden .ape.

Teiltund Name .flacDateien:

find . -name "*.cue" -exec sh -c 'exec shnsplit -f "$1" -o flac -t "%n_%p-%t" "${1%.cue}.flac"' _ {} \;

Wenn shnsplitauch für die Konvertierung verwendet wird, ersetzen Sie „ .flacin“ "${1%.cue}.flac"durch die Erweiterung des Formats, aus dem Sie konvertieren.

  • %n- Titelnummer
  • %p– Darsteller
  • %t– Titelname

.cuewird für die Dateinamen aus der Datei übernommen .flac. So kennzeichnen Sie die resultierenden, aufgeteilten .flacDateien:

find . -name "*.cue" -execdir sh -c 'exec cuetag "$1" *.flac' _ {} \;

Entfernen Sie die verbleibenden CDImage.ape.cue, CDImage.flac, und CDImage.apeDateien nach Belieben. Die Namen sind eindeutig, daher find . -name "CDImage*" -deletereicht ein einfacher Name aus, es sei denn, Mozart hat eine Komposition geschrieben, die mit beginnt, CDImagewas mir nicht bekannt ist.

Damit shnsplites funktioniert, müssen alle notwendigen Encoder/Decoder installiert sein, damit es Dateien lesen und schreiben kann. Module für APE (und für das TTA-Format) müssen aus dem Quellcode kompiliert werden, die anderen durch die Installation des Pakets (z. B. FLAC).

Dies funktioniert für alle Standardfälle, in denen .cueund .tta/ .flac/ .apeDateien bis auf die Erweiterung denselben Namen haben.


Randbemerkung für Andere: Wenn Sie diese Konvertierung durchführen, könnten Ihre Quelldateien japanischen Ursprungs sein, wo APE und TTA verbreiteter waren als anderswo. Wenn die .cueDateien ursprünglich SHIFT-JIS-kodiert waren und nun als UTF-8 geöffnet werden, ist der shnsplitSchrittwird brechen. Sie müssen die .cueDateien umbenennen mit

find . -name "*.cue" -exec rename 's/\.cue$/.cux/' -- {} +

und konvertieren Sie die Zwischendateien in UTF-8 mit

find . -name "*.cux" -exec sh -c 'exec iconv -f SHIFT-JIS -t UTF-8 -o "${1%.cux}.cue" -- "$1"' _ {} \;

bevor Sie versuchen, die oben genannten Schritte auszuführen. Vergessen Sie nicht, die Dateien zu löschen, .cuxwenn Sie fertig sind mit:

find . -name "*.cux" -delete

verwandte Informationen