ID3タイトルタグをMP3ファイル名と等しくなるように設定する


14

メディアライブラリを通過し、各MP3ファイルのid3タイトルタグをファイル名に等しく設定するbashスクリプトを持っている人はいますか?

私は他の自動化された方法も受け入れています。GUIアプリケーション、またはジョブを自動的に実行するものであれば何でもかまいません。

EasyTagメソッドについては、次のとおりです。mp3ID3 ファイルの一括タイトルタグの名前を変更する方法 —残念ながら、手順がわかりません。


あなた自身の質問に答えることができます。見つけた手順をリストし、ubuntuforums.orgソースを引用します。:)これは、ubuntuforums.orgリンクが使用できなくなった場合に、スーパーユーザーを将来訪問するユーザーを支援します。
iglvzx

3
以下にいくつかのヒントを示します。1)「編集1」、「編集2」などで質問散らかさないでください。コメントを使用して問題を解決します。2)解決策を見つけたら、それを答えとして投稿します。他の人の質問に答えようとしているかのように。答えを質問に入れないでください。それは人々がそれを探す場所ではありません:)また、他の場所から引用するものにはブロック引用符を使用してください(フォーマットのヘルプを参照)。
-slhck

:「Track.mp3」にファイル名を変更し、その後と-私は「Track.mp3アーティスト」形式で正しくタグMP3ファイルにスクリプトを作っgist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0使用してeyed3
ザックSaucier

回答:


17

EasyTAGは確かにこの問題に最適なツールです。ここで答えを見つけまし。使用方法に関しては、EasyTAG自身のドキュメントが最良のリファレンスです。

EasyTagを開き、音楽ファイルが含まれるフォルダーに移動し、フォルダー内のすべてのファイル、またはタグ付けするすべてのファイルを選択し、「ファイルのスキャン」ボタンをクリックしますどちらかです)。

次に、スキャナーのドロップダウンが「タグの入力」に設定されていることを確認し、「タグの入力」フィールドで、フィールドの下の例が探しているものになるまで適切に編集します。[タグの入力]フィールドに何を入力するかについてさらにサポートが必要な場合は、[?]をクリックします。凡例のボタン(さまざまなコードの翻訳対象のリスト)およびマスクボタンを押して、いくつかの開始点をリストします。

結果に満足したら、[ファイルのスキャン]ボタンをクリックします([ファイルのスキャン]ダイアログボックスで、現在の場所を取得するために最初にクリックしたものではなく...アイコンは同じに見えます)。変更が適用されます。 。アーティスト名またはアルバム名を取得していない場合は、変更するすべてを選択してデータを入力し、そのフィールドの横にある小さなボタンをクリックするだけで、選択されたすべてのファイルがそのアーティストまたはアルバムに入力または変更されます。これはほとんどの分野で機能します。

完了したら、保存ボタンをクリックして完了です。

PS:CDDBスキャナーは、タグ付けしようとしている完全なアルバム、または少なくとも市販の曲ファイルがある場合、非常によく機能します。

PPS:まだ半目覚めているようです。元の投稿で書いた内容に従って、Fill Tagフィールドでこれを試してください。

%n. %a - %t

この質問に関連するセクションは次のとおりです。


1.2.2。「Fill Tag」スキャナーで自動的に:

このモードを使用するためのいくつかの条件:

  • アルバムでソートされたファイル
  • ファイル名または親ディレクトリにタグ情報(アーティスト、アルバム、タイトルなど)が含まれています
  • 空のタグまたは正しくないタグ

「Fill Tag」スキャナは、パターンを使用して、ファイル名とディレクトリ内の単語をタグエントリに関連付けます。この方法で、スキャナーウィンドウまたはツールバーの「緑」ボタンを押すと、タグフィールドに自動的に入力できます。タグの一部が完成している場合は、[設定]ウィンドウの[スキャナー]タブにある[タグのスキャン時にフィールドを上書きする]オプションを使用して、すべてのフィールドを新しい値に置き換えます。

各コードは、次のルールに従ってフィールドに対応します。

Strings associated with code    Will fill the field
%a
  Artist
%b
  Album
%c
  Comment
%p
  Composer
%r
  Copyright
%e
  Encoded by
%g
  Genre
%i
  None! (used to ignore a string)
%l
  Number of tracks
%o
  Original artist
%n
  Track
%t
  Title
%u
  URL
%y
  Year

注:ミスを避けるために、パターン内でコードを1回だけ使用することをお勧めします。もちろん、手動でタグ付けする場合のように、選択したファイルのみがスキャナーによって処理されます。リスト内の定義済みパターンを使用するか、ファイル名とディレクトリの形式に対応する独自のパターンを作成できます。適切なパターンを選択するとき、または書き込むときにミスを避けるため、パターンを適用する前にプレビューに結果がすぐに表示されます。さまざまなコードに関するヘルプが必要な場合は、「ヘルプ」ボタン(救命浮環)を押して各コードの凡例を表示します。また、独自のパターンを保存する場合は、[マスク]ボタンを押すと、スキャナーウィンドウに小さなエディターが表示されます。

以下はパターンの使用例です。

a)次のファイル名:

“/mnt/MP3/EVANESCENCE  Fallen (2003)  Rock/01. Going Under.mp3

b) with the pattern :

“%a - %b (%y) - %g/%n. %t

c) you will fill the tag with theses strings :

    Artist (%a) => EVANESCENCE
    Album (%b) => Fallen
    Year (%y) => 2003
    Genre (%g) => Rock
    Track (%n) => 01
    Title (%t) => Going Under


3

さまざまなコマンドラインツールが役立つことがわかりました。

id3v2

id3v2は、コマンドラインid3v2タグエディターです。id3v2タグを追加/変更/削除し、id3v1タグをid3v2タグに変換できます。id3libを使用しています。共同メンテナンスを探しています。興味がある場合は、myers_carpenterにメールしてください。

eyeD3

eyeD3は、ID3タグを処理するためのPythonモジュールおよびプログラムです。mp3ファイルに関する情報(ビットレート、サンプル周波数、再生時間など)も提供されます。サポートされている形式はID3 v1.0 / v1.1およびv2.3 / v2.4です。

これらは、ディレクトリをスキャンするスクリプトを作成するときに理想的です。


2

これは必ずしも完全に正確になるとは限りませんが、一般的なUnixツール(busyboxバージョンを含む)のみを使用してmp3ファイルの名前を取得するために使用しました。

for x in *.mp3; do
  TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
  #mv "$x" "$TITLE.mp3"
  echo $x" "$TITLE.mp3" #just echo for now, until further tested
done

編集:私は質問を読み違えましたが、これを知っているので、sedを使用して$ TITLEをファイル名「$ x」に置き換えることができます。

sed -i "s/$TITLE/$x/" "$x"

これはID3のすべての仕様を満たしていないことはほぼ100%確信していますが、最初にバックアップを作成する限り、基本的な個人使用には十分かもしれません。


ありがとう。EasyTAGを使用して目標を達成する方法を見つけましたが、実際に返事は私の元の質問に最もよく答えます。文字列は知っておくと便利なユーティリティです。(これまで使用したことがありません。)提案された変更を確実に理解できるように、編集に基づいて完全なソリューションを投稿していただけますか?
MountainX

2

Ubuntu 18.04 LTSの場合(すべてのDebianフレーバーがこれで問題なく実行されると思います):

  • eyeD3をインストールします sudo apt install eyeD3

  • bashスクリプト用のファイルを作成します(「タッチ」を使用しました。好きなテキストエディターを使用できます)

  • これをコピーしてファイルに貼り付けます:

    ファイル名をコピーして、Titleタグに書き込みます

    for x in *; do
        eyeD3 --title="${x%.*}" "$x"
        echo $a
    done

    進行状況を表示する必要がない場合は、echo $a 「完了」という単語の上の行を省略します。

  • ファイルを実行可能にします。

    chmod +x filename
  • スクリプトを実行するディレクトリ(メディアファイルを含むディレクトリ)にスクリプトをコピーします。例えば:

    cp filename /music/directory
  • スクリプトをコピーしたディレクトリに移動します:

    cd /music/directory
  • スクリプトを実行します。

    ./filename

    完了

Ubuntu 18.04 LTSで機能しました。妻がこれを約3分で書いてくれたので、機能しない場合は質問に答えられません。私はプログラマーに精通していない、私はこのweb、dns、ssh、sftp、ftp、AD / Domain、file、firewall、router / serverなどをセットアップしています。スクリプティング、プログラミングなどを利用するのが大好きです:-)


1

ffmpegまたはを使用して最も簡単な解決策を提案した人がいないことに驚いていavconvます:

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;

0

python virtualenvにeyeD3をインストールして、pip install eyeD3最新のリリースバージョンを取得します。その実行後:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.