端末からさまざまなフォルダで.fueを.cueで.apeにバッチ変換して分割


9

44GB(はい、44)の.apeCDファイルのフォルダがあります。それぞれ.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に変換します。そのユーザーが.apeを複数の.flacsに分割する必要がなかったことを指摘したいと思います。


こんにちは。「...と.cue ...からタグ情報をコピーしてください」という文について詳しく説明してください。変換された.flacファイル名は.cueファイルからピックアップする必要があるという意味ですか?次に、そのサンプルコンテンツを共有してください。それ以外の場合、複数のファイルを作成する方法と、これらのファイルの最大数はいくつですか?おかげで
αғsнιη

>経由するキューデータがないため、これらをスキップする必要があります。これはどういう意味ですか?キューデータがなければ、トラックを開始および終了する場所に関する情報がキュー内にあるため、変換はできますが分割はできません。
emk2203

@ Afshin.Hamadiはい、ファイル名はトラックのタイトルと一致します。.cueファイルには、アーティスト、アルバムなどの情報があります。この情報は、新しいflacファイルにコピーする必要があります。
willem.hill 2016

@ emk2203良い点、質問を更新しました。
willem.hill

あなたは自分にもっと矛盾しています。「変換する必要がありますが、分割するのではなく、必要なキューデータがないためです。」- "基本的に、すべての.apeファイルを複数の.flacファイルに分割し、.cueからタグ情報をコピーしたい..."。それは何ですか?それが標準である場合、「。apeファイルと.cueファイルがあり、それらを変換してタグ付き.flacにインプレース分割したい」場合、質問は24時間前に2つの適切な回答で終了した可能性があります。
emk2203

回答:


6

あなたはめったにこれをしないので、私はこれを複数のステップで行います。ここでは、透明性は自動化よりも重要です。しかし、単一の行も可能です。各ステップですべてのファイルに対して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が変換にも使用される場合は、.flacin "${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

shnsplitのマンページには、サポートされている形式としてapeがリストされているため、ffmpegを使用-o flacしてflacへの変換をスキップし、代わりにshnsplit を使用できます。コーデック/コンテナの他のロスレスコーデックも使用されるため、標準のベース名と類人猿を見つけることを期待しないでください。そのため、ハードコーディングを行わず、すべてのステップをfindコマンドの1回の実行に含めることをお勧めします。metaflac --add-replay-gainまた、良いアイデアでしょう。
LiveWireBT 2016

@LiveWireBT:技術的には、あなたは正しいです。これが、私のコメントの1つで「2つのソリューションが利用可能」と言った理由です。ただし、apeおよびttaのサポート用のプラグインのソースをダウンロードし、g ++とyasmをインストールして、自分でコンパイルしてインストールする必要があります。ffmpegソリューションの方が簡単なので、私はそれに取り組みました。
emk2203

2
ワンコマンドバージョンの場合: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"' _ {} \:
David Foerster

1
はい。意図したとおりに実行されることを確認するために、最初に削除スイッチなしで常に1回実行します。
emk2203

1
少し修正された説明を使用してください。それらを試しました、彼らは働きます。
emk2203
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.