Giannis
Giannis

Reputation: 173

Writing ID3 tags using EasyID3

I am writing a script that uses mutagen to update metadata information in .mp3 files.
There seems to be an issue with the comment tag.

This is my code so far

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)

This works fines for me, but when I add

tag['comment'] = 'mycomment'

I get the following error

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

Upvotes: 8

Views: 9598

Answers (1)

sxn
sxn

Reputation: 508

>>> 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']

It seems that, indeed, comment is not a valid key. No fear, it seems that you can define your own! Combining that with this document, it seems that the frameid we need is called COMM. Thus, adding a EasyID3.RegisterTextKey('comment', 'COMM') should (might) let you do what you need. :)

Upvotes: 12

Related Questions