4

V2 ID3 タグの形式を理解するのに少し苦労しています。MP3 ファイルの「ジャンル」ID3 タグを取得したいだけですが、id3v2 ユーティリティは必要以上の情報を返し、このデータが何を表しているのかわかりません。

たとえば、次の bash コードを使用しています。

id3v2 -l "$FILE" | grep -i "content type"

次の行で何かを返します。

TCON (Content type): Jazz (8)

本当に、これが常にフォーマットであると仮定しても安全かどうかを知りたいだけなので、次のことをしても安全ですか?:

id3v2 -l "$FILE" | grep -i "content type" | sed "s/^.*: //" | sed "s/ (.*$//"

(これは "Jazz" になります。)

ID3「ジャンル」タグを取得する最良の方法を見つけようとしています。ご提案いただきありがとうございます。

4

1 に答える 1

3

行の前に TCON が付いていると想定しても安全だと思うので、それを検索したいと思います (これは i18n に対しても安全です)。

id3v2 -l "$FILE" | sed -n '/^TCON/s/^.*: //p' | sed 's/ (.*//'

(grep を実行する必要はありません)


/usr/share/doc/id3lib-3.8.3/doc/id3v2.3.0.txt から

TCON

以前は 1 バイトの数値のみとして格納されていた「コンテンツ タイプ」が、数値文字列になりました。ID3v1.1 のように 1 つまたは複数のタイプを使用するか、カテゴリ リストを正確かつ最新のカテゴリで維持することは不可能であるため、独自のカテゴリを定義します。

ID3v1 ジャンルへの参照は、最初のバイトとして「(」を入力し、その後にジャンル リスト (付録 A.) からの番号を入力し、「)」文字で終了することによって作成できます。これはオプションで、"(21)" や "(4)Eurodisco" などの絞り込みが続きます。"(51)(39)" のように、同じフレーム内で複数の参照を行うことができます。絞り込みが「(」文字で始まる場合は、「((」に置き換える必要があります。たとえば、「((私はどんなジャンルでも把握できます)」または「(55)((私は思う...)」など)。新しいコンテンツ タイプは ID3v2 で定義され、「(RX)」などの numerig コンテンツ タイプと同じ方法で実装されます。

 RX  Remix
 CR  Cover
于 2011-03-12T23:55:47.320 に答える