2017-02-14 84 views
1

我正在編寫一個腳本,它使用誘變劑來更新.mp3文件中的元數據信息。
評論標籤似乎存在問題。使用EasyID3編寫ID3標籤

這是到目前爲止我的代碼

import mutagen 
from mutagen.easyid3 import EasyID3 

path = 'song.mp3' 
try: 
    tag = EasyID3(path) 
except: 
    tag = mutagen.File(path, easy=True) 
    tag.add_tags() 

tag['genre'] = 'mygenre' 
tag['artist'] = 'myartist' 
tag['title'] = 'mytitle' 
tag['date'] = '1000' 
tag['album'] = 'myalbum' 
tag['albumartist'] = 'myalbumartist' 
tag['tracknumber'] = 'mytracknumber' 
tag['discnumber'] = 'mydiscnumber' 
tag.save(v2_version=3) 

這工作的罰款,對我來說,當我加

tag['comment'] = 'mycomment' 

我收到以下錯誤

mutagen.easyid3.EasyID3KeyError: "'comment' is not a valid key" 

回答

2
>>> import pprint 
>>> from mutagen.easyid3 import EasyID3 
>>> print EasyID3.valid_keys.keys() 
>>> pprint.pprint(EasyID3.valid_keys.keys()) 
['albumartistsort', 
'musicbrainz_albumstatus', 
'lyricist', 
'musicbrainz_workid', 
'releasecountry', 
'date', 
'albumartist', 
'musicbrainz_albumartistid', 
'composer', 
'catalognumber', 
'encodedby', 
'tracknumber', 
'musicbrainz_albumid', 
'album', 
'asin', 
'musicbrainz_artistid', 
'mood', 
'copyright', 
'author', 
'media', 
'performer', 
'length', 
'acoustid_fingerprint', 
'version', 
'artistsort', 
'titlesort', 
'discsubtitle', 
'website', 
'musicip_fingerprint', 
'conductor', 
'musicbrainz_releasegroupid', 
'compilation', 
'barcode', 
'performer:*', 
'composersort', 
'musicbrainz_discid', 
'musicbrainz_albumtype', 
'genre', 
'isrc', 
'discnumber', 
'musicbrainz_trmid', 
'acoustid_id', 
'replaygain_*_gain', 
'musicip_puid', 
'originaldate', 
'language', 
'artist', 
'title', 
'bpm', 
'musicbrainz_trackid', 
'arranger', 
'albumsort', 
'replaygain_*_peak', 
'organization', 
'musicbrainz_releasetrackid'] 

它似乎確實是comment是不是有效的密鑰。沒有恐懼,似乎you can define your own!相結合,與this document,我們似乎需要frameid被稱爲COMM。因此,增加一個EasyID3.RegisterTextKey('comment', 'COMM')應該(可能)讓你做你需要的。 :)

+0

完美的作品。非常感謝你。 – multifractal

+0

不客氣,很高興幫助! :) – sxn

+0

要了解最新的標籤(如果他們添加更多): https://github.com/quodlibet/mutagen/blob/master/mutagen/easyid3.py 支持的代碼應該在的結尾某處文件。 – ritiek