class beets.mediafile.MediaFile(path, id3v23=False)

Represents a multimedia file on disk and provides access to its metadata.

__init__(path, id3v23=False)

Constructs a new MediaFile reflecting the file at path. May throw UnreadableFileError.

By default, MP3 files are saved with ID3v2.4 tags. You can use the older ID3v2.3 standard by specifying the id3v23 option.

classmethod fields()

Get the names of all writable properties that reflect metadata tags (i.e., those that are instances of MediaField).

classmethod readable_fields()

Get all metadata fields: the writable ones from fields() and also other audio properties.


Write the object’s tags back to the file. May throw UnreadableFileError.


Set all field values from a dictionary.

For any key in dict that is also a field to store tags the method retrieves the corresponding value from dict and updates the MediaFile. If a key has the value None, the corresponding property is deleted from the MediaFile.

class beets.mediafile.MediaField(*styles, **kwargs)

A descriptor providing access to a particular (abstract) metadata field.

__init__(*styles, **kwargs)

Creates a new MediaField.

  • stylesStorageStyle instances that describe the strategy for reading and writing the field in particular formats. There must be at least one style for each possible file format.
  • out_type – the type of the value that should be returned when getting this property.
class beets.mediafile.StorageStyle(key, as_type=<type 'unicode'>, suffix=None, float_places=2)

A strategy for storing a value for a certain tag format (or set of tag formats). This basic StorageStyle describes simple 1:1 mapping from raw values to keys in a Mutagen file object; subclasses describe more sophisticated translations or format-specific access strategies.

MediaFile uses a StorageStyle via three methods: get(), set(), and delete(). It passes a Mutagen file object to each.

Internally, the StorageStyle implements get() and set() using two steps that may be overridden by subtypes. To get a value, the StorageStyle first calls fetch() to retrieve the value corresponding to a key and then deserialize() to convert the raw Mutagen value to a consumable Python value. Similarly, to set a field, we call serialize() to encode the value and then store() to assign the result into the Mutagen object.

Each StorageStyle type has a class-level formats attribute that is a list of strings indicating the formats that the style applies to. MediaFile only uses StorageStyles that apply to the correct type for a given audio file.


Remove the tag from the file.


Given a raw value stored on a Mutagen object, decode and return the represented value.


Retrieve the raw value of for this tag from the Mutagen file object.

formats = ['FLAC', 'OggOpus', 'OggTheora', 'OggSpeex', 'OggVorbis', 'OggFlac', 'APEv2File', 'WavPack', 'Musepack', 'MonkeysAudio']

List of mutagen classes the StorageStyle can handle.


Get the value for the field using this style.


Convert the external Python value to a type that is suitable for storing in a Mutagen file object.

set(mutagen_file, value)

Assign the value for the field using this style.

store(mutagen_file, value)

Store a serialized value in the Mutagen file object.