beets/docs/dev/plugins/other/mediafile.rst
Sebastian Mohr 09da8a2991
- Updated git blame ignore with new hashes
- run docstrfmt
2025-09-04 12:49:47 +01:00

32 lines
1 KiB
ReStructuredText

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
:py:meth:`beets.plugins.BeetsPlugin.add_media_field` method.
.. _mediafile: https://mediafile.readthedocs.io/en/latest/
Here's an example plugin that provides a meaningless new field "foo":
.. code-block:: python
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"