ミュータジェン (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())