使用EasyID3编写ID3标签

7
我正在编写一个脚本,使用mutagen更新.mp3文件中的元数据信息。
似乎存在评论标签的问题。

以下是我的代码

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"
1个回答

11
>>> 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不是有效的键。不用担心,似乎你可以定义自己的!结合这个文档,我们需要的frameid被称为COMM。因此,添加EasyID3.RegisterTextKey('comment', 'COMM')应该(可能)让你做你需要的事情。:)


1
要检查最新的标签(以防他们添加更多): https://github.com/quodlibet/mutagen/blob/master/mutagen/easyid3.py 支持的标签应该在文件末尾附近。 - ritiek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接