Extend MediaFile#
MediaFile is the file tag abstraction layer that beets uses to make cross-format metadata manipulation simple. Plugins can add fields to MediaFile to extend the kinds of metadata that they can easily manage.
The MediaFile class uses MediaField descriptors to provide access to
file tags. If you have created a descriptor you can add it through your plugins
beets.plugins.BeetsPlugin.add_media_field() method.
Here's an example plugin that provides a meaningless new field "foo":
class FooPlugin(BeetsPlugin):
def __init__(self):
field = mediafile.MediaField(
mediafile.MP3DescStorageStyle("foo"), mediafile.StorageStyle("foo")
)
self.add_media_field("foo", field)
FooPlugin()
item = Item.from_path("/path/to/foo/tag.mp3")
assert item["foo"] == "spam"
item["foo"] == "ham"
item.write()
# The "foo" tag of the file is now "ham"