使用EasyID3编写ID3标签
问题描述:
我正在编写一个脚本,它使用诱变剂来更新.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"
答
>>> 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')
应该(可能)让你做你需要的。 :)
完美的作品。非常感谢你。 – multifractal
不客气,很高兴帮助! :) – sxn
要了解最新的标签(如果他们添加更多): https://github.com/quodlibet/mutagen/blob/master/mutagen/easyid3.py 支持的代码应该在的结尾某处文件。 – ritiek