Saya memiliki folder .ape
file CD sebesar 44GB (ya, empat puluh empat) . Masing .ape
- masing adalah CD lengkap, dan biasanya ada .cue
file bersama dengan masing-masing .ape
. Saya perlu mengonversi tetapi tidak membaginya, karena tidak ada data isyarat untuk dilewati. Ada juga beberapa .jpg
dan .log
di sana juga, yang saya tidak peduli. Jika tree
output perintah membantu memvisualisasikan ini, ini dia:
├── 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
dll ... sampai 180 CDS.
Pada dasarnya, saya ingin membagi semua .ape
file menjadi beberapa .flac
file, dan menyalin info tag dari .cue
, menjaga struktur direktori (lebih disukai dalam direktori yang sama sekali baru dan berbeda). Saya lebih suka perintah baris tunggal ke skrip jika memungkinkan. Bagaimana saya melakukan ini? Terima kasih kepada siapa pun yang tahu bagaimana melakukan ini!
Dan sebelum ada yang menandai pertanyaan ini sebagai duplikat untuk yang ini di sini: Konversikan semua file .ape ke .flac di subfolder yang berbeda , saya ingin menunjukkan bahwa pengguna itu tidak perlu membagi file .ape menjadi beberapa .flacs.
sumber
Jawaban:
Saya akan melakukan ini dalam beberapa langkah, karena Anda jarang melakukannya. Transparansi lebih penting daripada otomatisasi di sini. Tetapi satu baris juga dimungkinkan. Saya berasumsi bahwa jika Anda hanya menggunakan satu perintah untuk semua file setiap langkah, inilah yang Anda maksudkan.
Anda harus memiliki
ffmpeg
(atauavconv
),shntool
dancuetools
menginstal.Untuk mengonversi semua
.ape
menjadi.flac
di tempat:Jika Anda menginstal encoder dan decoder MAC yang ditambal untuk file APE dari http://www.etree.org/shnutils/shntool/ , langkah pertama ini tidak perlu. Tapi Anda perlu compile dengan
g++
danyasm
diri sendiri. Hal yang sama berlaku untuk.tta
file, yang juga sering digunakan.ape
.Pisahkan dan beri nama
.flac
file:Jika
shnsplit
juga digunakan untuk konversi, ganti.flac
in"${1%.cue}.flac"
dengan ekstensi format yang Anda konversi.%n
- nomor pelacak%p
- penampil%t
- nama trekdiambil dari
.cue
file untuk.flac
nama file. Untuk menandai hasil, bagi.flac
file:Lepaskan tersisa
CDImage.ape.cue
,CDImage.flac
danCDImage.ape
file di waktu luang Anda. Nama-nama yang unik, jadi sederhanafind . -name "CDImage*" -delete
sudah cukup, kecuali jika Mozart membuat komposisi dimulai denganCDImage
yang saya tidak sadari.Agar
shnsplit
berfungsi, semua enkode / decoder yang diperlukan perlu diinstal sehingga dapat membaca dan menulis file. Modul untuk APE (dan untuk format TTA) perlu dikompilasi dari sumber, yang lain dengan menginstal paket (yaitu FLAC).Ini berfungsi untuk semua kasus standar di mana
.cue
dan.tta
/.flac
/.ape
file memiliki nama yang sama, kecuali untuk ekstensi.Komentar sampingan untuk orang lain : Jika Anda berurusan dengan konversi ini, file sumber Anda mungkin berasal dari Jepang, di mana APE dan TTA lebih populer daripada di tempat lain. Jika
.cue
file awalnya kode SHIFT-JIS dan sekarang dibuka sebagai UTF-8,shnsplit
langkah ini akan rusak . Anda harus mengganti nama.cue
file dengandan mengonversi file antara ke UTF-8 dengan
sebelum Anda mencoba melakukan langkah-langkah di atas. Jangan lupa untuk menyingkirkan
.cux
file ketika Anda selesai dengan:sumber
-o flac
shnsplit sebagai gantinya. Jangan berharap untuk menemukan nama standar dan kera karena codec / container codec lossless lainnya digunakan juga, jadi lebih baik untuk tidak menggunakan kode yang keras dan akan lebih baik untuk memasukkan semua langkah dalam satu menjalankan perintah find.metaflac --add-replay-gain
juga akan menjadi ide bagus.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"' _ {} \: