mirror of
https://github.com/beetbox/beets.git
synced 2025-12-07 09:04:33 +01:00
32 lines
1 KiB
ReStructuredText
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"
|