Toplu dönüştürme ve .ape ile .ape için terminalden çeşitli klasörlerde .flac bölme


9

.apeCD dosyaları 44GB (evet, kırk dört) bir klasör var . Her .apebiri tam bir CD'dir ve genellikle .cueher biri ile birlikte bir dosya vardır .ape. Ben dönüştürmek gerekiyor ama bu ayrılmak değil, çünkü gitmek için hiçbir ipucu veri yoktur. Ayrıca umursamadığım bazı .jpgs ve .logs de var. Bir treekomut çıkışı bunu görselleştirmeye yardımcı olursa , işte başlıyoruz:

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

vb ... 180 CD'ye kadar.

Temel olarak, tüm .apedosyaları birden çok .flacdosyaya bölmek .cueve dizin yapısını (tercihen tamamen yeni ve farklı bir dizinde) tutarak, etiket bilgilerinin üzerine kopyalamak istiyorum . Mümkünse bir komut dosyasına tek satırlık bir komut tercih ederim. Bunu nasıl yapardım? Bunu nasıl yapacağını bilen herkese teşekkürler!

Ve herkes bu soruyu burada bir kopya olarak işaretlemeden önce: Tüm .ape dosyalarını farklı alt klasörlerde .flac'a dönüştürün , bu kullanıcının .ape'yi birden çok .flacs'a bölmesi gerekmediğini belirtmek isterim.


Merhaba, lütfen cümle hakkında daha fazla bilgi verir misin "... ve .cue ..." etiket bilgisini kopyala. Dönüştürülen .flac dosya adının .cue dosyasından alınması gerektiği anlamına mı geliyor? O zaman lütfen bunun örnek içeriğini paylaşır mısın? Başka birden fazla dosya nasıl oluşturulmalı ve bu dosyaların maksimum sayısı nedir? Thanks
αғsнιη

> Bunları bir şekilde atlamam gerekiyor, çünkü geçecek hiçbir veri yok. Bununla ne demek istiyorsun? İşaret verileri olmadan, parçaların başlayıp bittiği yerle ilgili bilgiler ipucunda olduğu için dönüştürebilirsiniz, ancak bölünemezsiniz.
emk2203

@ Afshin.Hamadi Evet, dosya adı parça adıyla eşleşir. .Cue dosyasında sanatçı, albüm vb. Bilgiler bulunur. Bu bilgiler yeni flac dosyalarına kopyalanmalıdır.
willem.hill

@ emk2203 Güzel bir nokta, soruyu güncelledim.
willem.hill

Kendinizle daha fazla çelişiyorsunuz. "Dönüştürmem gerekiyor ama bunları bölmemeliyim çünkü geçecek ipucu verisi yok." - "Temel olarak, tüm .ape dosyalarını birden çok .flac dosyasına bölmek ve .cue'dan etiket bilgilerinin üzerine kopyalamak istiyorum ..." . Öyleyse nedir? Standart ".ape ve .cue dosyalarına sahibim ve bunları .flac olarak yerinde dönüştürülmesini ve bölünmesini istiyorum" ise, soru 24 saat önce iki iyi yanıtla kapatılmış olabilir.
emk2203

Yanıtlar:


6

Bunu birkaç adımda yapardım, çünkü bunu nadiren yaparsınız. Şeffaflık burada otomasyondan daha önemlidir. Ancak tek bir satır da mümkündür. Her adımda tüm dosyalar için sadece bir komut kullanırsanız, amaçladığınız şey budur.

Yüklemeniz ffmpeg(veya avconv) shntoolve cuetoolsyüklemeniz gerekir.

Tüm öğelerinizi .apeyerine dönüştürmek için .flac:

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

APE dosyaları için yamalı MAC kodlayıcı ve kod çözücüyü http://www.etree.org/shnutils/shntool/ adresinden yüklerseniz , bu ilk adım gerekli değildir. Ama bunu derlemek gerekir g++ve yasmkendinizi. Aynı şey .tta, genellikle yerine kullanılan dosyalar için de geçerlidir .ape.

Dosyaları ayırın ve adlandırın .flac :

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

Eğer shnsplitaynı zamanda dönüşüm için kullanılır, yerine .flacde "${1%.cue}.flac"sen dönüştürüyorsanız formatının uzantılı.

  • %n - parça numarası
  • %p - icracı
  • %t - parça adı

dosya adları için .cuedosyadan alınır .flac. Ortaya çıkan bölünmüş .flacdosyaları etiketlemek için :

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

Kalan çıkarın CDImage.ape.cue, CDImage.flacve CDImage.apeboş dosyaları. İsimler benzersizdir, bu yüzden find . -name "CDImage*" -deleteMozart'ın CDImagefarkında olmadığım bir kompozisyon oluşturması dışında basit bir yeterlidir .

İçin shnsplitçalışmalarına gerekli tüm kodlayıcı / kod çözücüleri bu okuma ve yazma dosyaları böylece yüklü olması gerekmektedir. APE (ve TTA formatı) için modüller kaynaktan, diğerleri ise paket (yani FLAC) kurularak derlenmelidir.

Bu, .cueve .tta/ .flac/ .apedosyalarının uzantı dışında aynı ada sahip olduğu tüm standart durumlar için geçerlidir .


Diğerleri için yan açıklama : Bu dönüşümle ilgilenirseniz, kaynak dosyalarınız APE ve TTA'nın başka yerlerden daha popüler olduğu Japon kökenli olabilir. Eğer .cuedosyalar başlangıçta SHIFT-JIS kodlu ve şimdi UTF-8 olarak açılmış, shnsplitadım kıracak . .cueDosyaları şu şekilde yeniden adlandırmanız gerekir:

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

ve ara dosyaları UTF-8'e dönüştürerek

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

yukarıdaki adımları uygulamadan önce. İşiniz .cuxbittiğinde dosyalardan kurtulmayı unutmayın :

find . -name "*.cux" -delete

shnsplit'in manpage , maymunu desteklenen bir biçim olarak listeler, böylece ffmpeg -o flacile flac'a dönüştürmeyi atlayabilir ve bunun yerine shnsplit ile kullanabilirsiniz . Codec / container diğer kayıpsız codec'ler de kullanıldığından standart bir taban adı ve maymun bulmayı beklemeyin, bu nedenle sabit kod olmamak daha iyidir ve tüm adımları find komutunun bir çalıştırmasına dahil etmek daha iyi olur. metaflac --add-replay-gainiyi bir fikir olurdu.
LiveWireBT

@LiveWireBT: Teknik olarak haklısınız. Bu yüzden yorumumdan birinde "iki çözüm mevcut" dedim. Ancak, maymun ve tta desteği için eklentilerin kaynağını indirmeniz, g ++ ve yasm'yi yüklemeniz ve bunları kendiniz derlemeniz ve yüklemeniz gerekir. Daha kolay olduğu için ffmpeg çözümü ile gittim.
emk2203

2
Tek 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"' _ {} \:
komutlu bir

1
Evet. Her zaman amaçlandığı gibi çalıştığından emin olmak için önce silme anahtarı olmadan bir kez çalışırdım.
emk2203

1
Lütfen biraz revize edilmiş talimatları kullanın. Onları denedim, çalışıyorlar.
emk2203
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.