0

Mutagen を使用して ID3 タグ付けを自動化しようとしていますが、Unicode 文字を挿入しようとすると、疑問符に置き換えられます。

このエラーが発生する最小のテスト コードは次のとおりです。

from mutagen.id3 import ID3, TALB

audio = ID3()
audio['TALB'] = TALB(encoding=3, text=u'test祥さtest')
audio.save('test.mp3', v1=2)

実行すると、test.mp3 のアルバム タグがtest??testファイル マネージャーと音楽プレーヤーの両方に表示されます。ファイルマネージャーを介して手動でユニコードタグを入力すると、ユニコード文字は問題なく正常に表示されます。

この問題を解決するために私がすでに試したこと:

  • u文字列プレフィックスありとなしの両方を試す
  • 代替変異原タグ構文の使用 ( audio.add(TALB(encoding=3, text=u'test祥さtest')))

v1=2関数の引数を使用しているのはsave、それを省略すると約半分のファイルにタグが書き込まれず (ユニコードがまだ疑問符として出力されている)、他の値がファイルの ID3 タグの書き込みを拒否するためです。


Windows10 64ビットを使用しています。私の Python 環境は Anaconda3 (Python3.4) と Python2.7 で、どちらも同じコードで同じ問題が発生します。

4

1 に答える 1

2

したがって、あなたの主な問題は、タグが正しいかどうかをテストする方法に問題があることだと思います。説明させてください。

私にとって、このコードは機能します:

from mutagen.id3 import ID3, TALB

audio = ID3()
audio['TALB'] = TALB(encoding=3, text=u'test祥さtest')
audio.save("test.mp3",v1=0)

テキスト エディターでファイルを確認すると、Unicode で正しく記述されたタグが表示されます。

では、なぜタグが表示されないのでしょうか。おそらく、mutagen がデフォルトで ID3v2.4 タグを書き込むため、Windows ファイル エクスプローラーも標準の Windows メディア プレーヤーも読み取ることができないためです。ただし、v1=2引数を追加すると、mutagen にID3v1 タグの書き込みも強制されます。これらファイル エクスプローラーで読み取ることができますが、残念ながら Unicode をサポートしていません。そのため、代わりに疑問符が表示されます。したがって、Unicode を使用する場合は、v1=0(私が行ったように) ID3v1 タグが書き込まれるのを防ぎ、ID3v2 タグを機能させるという主な問題から気をそらさないように追加すると便利です。

したがって、ID3v2.4 ではなく ID3v2.3 に移行して、それが役立つかどうかを確認してください。

from mutagen.id3 import ID3, TALB

audio = ID3()
audio.update_to_v23()
audio['TALB'] = TALB(encoding=3, text=u'test祥さtest')
audio.save("test.mp3",v1=0,v2_version=3)

最後に、実際にファイルに含まれているタグを確認する最善の方法は、Mp3tag など、仕様に包括的に準拠する専用のタグ エディターを使用することです。これは、問題がタグの書き方にあるのか、プレイヤーがタグを読み取る方法にあるのかを調べるのに役立ちます。

于 2016-02-27T08:25:58.527 に答える