コマンドラインを使用してMP3ファイルからアルバムアートを削除する

コマンドラインを使用してMP3ファイルからアルバムアートを削除する

複数のMP3(何千もの)に含まれるアルバムアートを削除したいのですが、これを行うコマンドライン方法が見つかりません。 artを追加できlame、他のほとんどすべてのタグを追加または削除できますが、id3tag次の方法を見つけることができません。

for file in **/*.mp3 do <remove image command> $file; done

私がこれに何を入れることができるかを知っている人はいますか<remove image command>

答え1

良い解決策はないようです。私が思いついた最善の方法は、ffmpegを使用して新しいファイルをすばやく作成することです。 @awesome14から提供されたコマンドは私のシステムでは機能しませんでした(ほとんど動作しましたが、エラーがたくさんあり、曲がコピーされませんでした)。これが私が思いついた命令です。

for song in **/*.mp3
   do NAME=$(echo ${song%/*} | sed -e 's|[/ ]|-|g’)
      ffmpeg -y -i $song -vn -c copy /path/NOART/"$NAME-"${song##*/}; 
done

これはbash5またはzshシェルで動作します。

  1. **/*.mp3現在のディレクトリの下のすべてのディレクトリで.mp3に一致するすべてのファイル

  2. echo ${song%/*} | sed -e 's|[/ ]|-|g’ファイル名ではなくパス部分のすべてのスラッシュとスペースをダッシュ​​に変換します。

  3. —vn -c copy映像(映像番号)はコピーしないで、修正されていないファイルをコピーしてください。

  4. /path/NOART/"$NAME-"${song##*/}NAME変数に設定されているファイル名と$ songのデフォルト名を使用してパスに保存します。

  5. 出力ファイル名は「10Cc-Look-Hear-Dressed To Kill.mp3」と似ています。

この作業のもう1つの利点は、曲からすべてのメタデータを削除せずに「ビデオ」(この場合はアルバムカバーアート)のみを削除することです。

答え2

@BowlOfRedが正しく指摘しました。簡単な答え 使用eyeD3パッケージ存在する彼らの意見。ただファイルの場合

eyeD3 - すべての画像を削除ファイル名.mp3

元の問題に合わせてカスタマイズしてから

for file in **/*.mp3; do eyeD3 --remove-all-images "$file"; done

でも

eyeD3 --remove-all-images **/*.mp3

もちろん、この例のように機能するには、globstar""に" "シェルオプションを設定する必要があります。**

答え3

これをインストールkid-cliし、CLIでメタデータタグを変更するために使用できます。この質問を見る前に、アルバムアートを削除するためにこの方法を使用したことはありませんでしたが、次の方法を見つけたようです。

for file in **/*.mp3 do (sleep 2; printf %s\\n 'set "Picture:" ""' save exit) | kid3-cli $file; done

cliプログラムですが、kid3-cliはインタラクティブな使用のために作成されました。したがって、コマンドは対話形式で入力する必要があります。また、何らかの理由で遅延がなければ、上記のコマンドは機能しません。処理するファイルが多い場合は、複数のファイルに対してコマンドを並列に実行してこの問題を軽減できます。

for file in **/*.mp3 do (:; (sleep 2; printf %s\\n 'set "Picture:" ""' save exit) | kid3-cli $file)&; done; wait

または:

(sleep 2; printf %s\\n 'set "Picture:" ""' save exit; sleep 2) | kid3-cli *.mp3; done

後者の場合、kid3-cliを遅らせる必要があります。後ろにコマンドもパイプに渡されました。理由はわかりませんが、少なくともすべてのファイルを一度に処理できます。

PS:これをテストするmp3ファイルがなく、ogg / vorbisファイルを使用しました。 oggはmp3(id3)とは異なるタグ付けシステム(vorbisアノテーション)を使用しているため、両方のフォーマットに同じ効果を与えることができます。しかしこれはとにかくmp3で*働かなければなりません*。

答え4

インストールする子供3

$ pacman -Ss kid3
community/kid3 3.9.1-2 [installed]
    An MP3, Ogg/Vorbis and FLAC tag editor, KDE version

スクリプトを実行します。

#!/bin/bash

for filename in ./*.mp3; do
    echo $filename
    kid3-cli -c 'set Picture ""' $filename
done

関連情報