web-dev-qa-db-ja.com

ターミナルからさまざまなフォルダにある.cueで.apeをバッチ変換し、分割します

.ape CDファイルの44GB(はい、44)フォルダーがあります。各.apeは完全なCDであり、通常、.cueファイルと各.apeがあります。通過するキューデータがないため、これらを変換する必要がありますが、分割する必要はありません。そこにはいくつかの.jpgsと.logsもありますが、私は気にしません。 treeコマンド出力がこれを視覚化するのに役立つ場合は、次のとおりです。

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

など... 180 CDSまで。

基本的に、すべての.apeファイルを複数の.flacファイルに分割し、.cueからタグ情報をコピーして、ディレクトリ構造を保持します(できれば完全に新しい別のディレクトリに配置します) )。可能であれば、スクリプトよりも1行のコマンドを使用します。これについてどうすればいいですか?これを行う方法を知っている人に感謝します!

そして、この質問に対する重複として誰かがこの質問にフラグを立てる前に: すべての.apeファイルを異なるサブフォルダーの.flacに変換する 、そのユーザーが。複数の.flacsへの類人猿。

9
willem.hill

あなたはめったにこれをしないので、私はこれを複数のステップで行います。ここでは自動化よりも透明性が重要です。しかし、単一の行も可能です。各ステップですべてのファイルに対して1つのコマンドのみを使用する場合、これが意図したものであると思います。

ffmpeg(またはavconv)、shntool、およびcuetoolsをインストールする必要があります。

すべての.ape.flacに変換するには:

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

http://www.etree.org/shnutils/shntool/ からAPEファイル用のパッチを適用したMACエンコーダーとデコーダーをインストールする場合、この最初の手順は不要です。ただし、g++およびyasmを使用して自分でコンパイルする必要があります。同じことが.ttaファイルにも当てはまります。これらのファイルは、.apeの代わりによく使用されます。

分割および名前.flacファイル:

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

shnsplitも変換に使用される場合、.flac"${1%.cue}.flac"を変換元の形式の拡張子に置き換えます。

  • %n –トラック番号
  • %p –パフォーマー
  • %t –トラック名

.cueファイル名の.flacファイルから取得されます。結果のタグを付けるには、.flacファイルを分割します:

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

残りのCDImage.ape.cueCDImage.flac、およびCDImage.apeファイルを自由に削除してください。名前は一意なので、単純なfind . -name "CDImage*" -deleteで十分です。ただし、モーツァルトがCDImageで始まる作曲を作っていない場合は例外です。

shnsplitが機能するためには、ファイルを読み書きできるように、必要なすべてのエンコーダー/デコーダーをインストールする必要があります。 APE(およびTTA形式)用のモジュールは、パッケージ(つまりFLAC)をインストールすることにより、ソースからコンパイルする必要があります。

これは、拡張子を除き、.cueおよび.tta/.flac/.apeファイルの名前が同じであるすべての標準的なケースで機能します。


他の人への副次的な発言:この変換を扱う場合、ソースファイルは日本の起源である可能性があり、APEとTTAは他よりも人気がありました。 .cueファイルが最初にSHIFT-JISでコーディングされ、UTF-8として開かれた場合、shnsplitステップは壊れます.cueファイルの名前を変更する必要があります

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

中間ファイルをUTF-8に変換します

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

上記の手順を実行する前に。完了したら、.cuxファイルを削除することを忘れないでください。

find . -name "*.cux" -delete
6
emk2203