3

ミュータジェン (Python 2.7.5 を使用) を使用して、曲へのパスが であると仮定して、曲...\Artist\Year Album\Songnumber Title.mp3のアーティスト、アルバム アーティスト、年、アルバム、曲番号、およびタイトル タグを設定し、保持するプログラムを作成しようとしています。ジャンルタグ。EasyID3でこれを実行しようとしましたが、アルバムのアーティスト タグがありません。また、通常のID3で実行しようとしましたが、いくつかの問題に遭遇しました。使用したコードは次のとおりです。

from mutagen.id3 import ID3, TIT2, TPE2, TALB, TPE1, TYER, TDAT, TRCK, TCON, TORY, TPUB
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = ID3(p)
audio.add(TIT2(encoding=3, text=u"t"))    #TITLE
audio.add(TRCK(encoding=3, text=u"1"))    #TRACK
audio.add(TPE1(encoding=3, text=u"a"))    #ARTIST
audio.add(TALB(encoding=3, text=u"al"))   #ALBUM
audio.add(TYER(encoding=3, text=u"2000")) #YEAR
audio.add(TDAT(encoding=3, text=u"2001")) #YEAR
audio.add(TORY(encoding=3, text=u"2002")) #ORIGYEAR
audio.add(TPE2(encoding=3, text=u"aa"))   #ALBUMARTIST
audio.add(TCON(encoding=3, text=u"g"))    #GENRE
audio.save()

この表を使用して、各タグの 4 文字コードを見つけました。

タイトル、トラック、アーティスト、アルバムはすべて正常に機能しました。これらの 4 つと「年」を除く mp3 ファイルのプロパティ > 詳細の下のすべてのフィールドについて、以前の値は によってクリアされsave()、新しい値を追加しようとしても何も起こりませんでした。特に、「ジャンル」と「アルバム アーティスト」のフィールドが機能しませんでした。TYER と TDAT の両方のコードを持つ「年」については、最初にフィールドが空で、次に TYER だけが空でない限り、まったく変化しません。コードTORYの「ORIGYEAR」は何もしませんでした。

「ジャンル」フィールドは、実際には完全に壊れているわけではありません。Python コード ( audio.add(etc)) で変更するか、事前に手動でプロパティ > 詳細に移動するsave()と、「テクニカル デス メタル」や「mt3jr39kf390」などの非組み込みジャンルがクリアされます。 、「クラシック ロック」や「カントリー」などの組み込みのジャンルで機能しますが、1 や 2 などの特定の整数はそれらの組み込みのジャンルに変わります。(年フィールドも同様に動作することがあります。フィールド値を手動で特定の数値に設定すると、save()別の番号に変更します。私はこれを 800 未満の値でのみ観察しましたが、すべてではありません。448 と 449 は変更されず、500 は 320 に、700 は 448 に、12 は 10 に、10 は 8 に変わります。12 を 10 に変更するとこの方法でプログラムを再度実行すると、何も起こりませんが、手動で別の値に変更してから 10 に戻すと、8 になります。)

だから、問題は、すでにそこに何かがある場合に年のタグを変更できないこと、アルバムのアーティストまたはジャンルのタグを変更できないこと、およびある場合でも「取得」コマンドを実行する方法がわからないことです。ジャンルタグを保持できるようにします。

また、EasyID3にも同じ問題があります —save()特定のフィールドをクリアし、ジャンルと年で奇妙な動作をします。唯一の違いは、フィールドが空でなくても年を変更できることです。使用したコードは次のとおりです。

from mutagen.easyid3 import EasyID3
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = EasyID3(p)
audio["title"] = u"t"
audio["artist"] = u"a"
audio["album"] = "al"
audio["date"] = u"2000"
audio["tracknumber"] = u"1"
audio["genre"] = u"g"
audio.save()
print '\n'.join(EasyID3.valid_keys.keys())
4

2 に答える 2

1

私はあなたと同じ質問があります。そして、私は試しました

from mutagen.id3 import ID3, TIT2, TIT3, TALB, TPE1, TRCK, TYER`
tags = ID3()
tags['TIT2'] = TIT2(encoding=3, text=u'just a title') #title
tags['TYER'] = TYER(encoding=3, text=u'2000')  #year
tags['TRCK'] = TRCK(encoding=3, text=u'9')  #trackno
tags.save('111.mp3')

このように、以前のタグが空であることを確認せずにタグを変更できるようですが、Python の方法でそれらのタグを確認すると、TYER フレームが TDRC に変更されていることがわかりました。理由はわかりません。

于 2013-08-07T03:32:40.070 に答える