### Navigation

- index
- modules |
- next |
- previous |
- Mopidy 1.0.2 documentation »
- API reference »

# Data models

These immutable data models are used for all data transfer within the Mopidy backends and between the backends and the MPD frontend. All fields are optional and immutable. In other words, they can only be set through the class constructor during instance creation.

If you want to modify a model, use the `copy()` method. It accepts keyword arguments for the parts of the model you want to change, and copies the rest of the data from the model you call it on. Example:

    >>> from mopidy.models import Track
    >>> track1 = Track(name='Christmas Carol', length=171)
    >>> track1
    Track(artists=[], length=171, name='Christmas Carol')
    >>> track2 = track1.copy(length=37)
    >>> track2
    Track(artists=[], length=37, name='Christmas Carol')
    >>> track1
    Track(artists=[], length=171, name='Christmas Carol')

## Data model relations

digraph model_relations { Ref -> Album [ style="dotted", weight=1 ] Ref -> Artist [ style="dotted", weight=1 ] Ref -> Directory [ style="dotted", weight=1 ] Ref -> Playlist [ style="dotted", weight=1 ] Ref -> Track [ style="dotted", weight=1 ] Playlist -> Track [ label="has 0..n", weight=2 ] Track -> Album [ label="has 0..1", weight=10 ] Track -> Artist [ label="has 0..n", weight=10 ] Album -> Artist [ label="has 0..n", weight=10 ] Image SearchResult -> Artist [ label="has 0..n", weight=1 ] SearchResult -> Album [ label="has 0..n", weight=1 ] SearchResult -> Track [ label="has 0..n", weight=1 ] TlTrack -> Track [ label="has 1", weight=20 ] }

## Data model API

class `mopidy.models.``Ref`(*args, **kwargs)

  Model to represent URI references with a human friendly name and type attached. This is intended for use a lightweight object “free” of metadata that can be passed around instead of using full blown models.

  Parameters: | uri (string) – object URI name (string) – object name type (string) – object type

class `mopidy.models.``Track`(*args, **kwargs)

  Parameters: | uri (string) – track URI name (string) – track name artists (list of `Artist`) – track artists album (`Album`) – track album composers (string) – track composers performers (string) – track performers genre (string) – track genre track_no (integer or `None` if unknown) – track number in album disc_no (integer or `None` if unknown) – disc number in album date (string) – track release date (YYYY or YYYY-MM-DD) length (integer or `None` if there is no duration) – track length in milliseconds bitrate (integer) – bitrate in kbit/s comment (string) – track comment musicbrainz_id (string) – MusicBrainz ID last_modified (integer or `None` if unknown) – Represents last modification time

class `mopidy.models.``Album`(*args, **kwargs)

  Parameters: | uri (string) – album URI name (string) – album name artists (list of `Artist`) – album artists num_tracks (integer or `None` if unknown) – number of tracks in album num_discs (integer or `None` if unknown) – number of discs in album date (string) – album release date (YYYY or YYYY-MM-DD) musicbrainz_id (string) – MusicBrainz ID images (list of strings) – album image URIs

class `mopidy.models.``Artist`(*args, **kwargs)

  Parameters: | uri (string) – artist URI name (string) – artist name musicbrainz_id (string) – MusicBrainz ID

class `mopidy.models.``Playlist`(*args, **kwargs)

  Parameters: | uri (string) – playlist URI name (string) – playlist name tracks (list of `Track` elements) – playlist’s tracks last_modified (int) – playlist’s modification time in milliseconds since Unix epoch

class `mopidy.models.``Image`(*args, **kwargs)

  Parameters: | uri (string) – URI of the image width (int) – Optional width of image or `None` height (int) – Optional height of image or `None`

class `mopidy.models.``TlTrack`(*args, **kwargs)

  A tracklist track. Wraps a regular track and it’s tracklist ID.

  The use of `TlTrack` allows the same track to appear multiple times in the tracklist.

  This class also accepts it’s parameters as positional arguments. Both arguments must be provided, and they must appear in the order they are listed here.

  This class also supports iteration, so your extract its values like this:

      (tlid, track) = tl_track

  Parameters: | tlid (int) – tracklist ID track (`Track`) – the track

class `mopidy.models.``SearchResult`(*args, **kwargs)

  Parameters: | uri (string) – search result URI tracks (list of `Track` elements) – matching tracks artists (list of `Artist` elements) – matching artists albums (list of `Album` elements) – matching albums

## Data model helpers

class `mopidy.models.``ImmutableObject`(*args, **kwargs)

  Superclass for immutable objects whose fields can only be modified via the constructor.

  Parameters: | kwargs (any) – kwargs to set as fields on the object

class `mopidy.models.``ModelJSONEncoder`(skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, encoding='utf-8', default=None)

  Automatically serialize Mopidy models to JSON.

  Usage:

      >>> import json
      >>> json.dumps({'a_track': Track(name='name')}, cls=ModelJSONEncoder)
      '{"a_track": {"__model__": "Track", "name": "name"}}'

`mopidy.models.``model_json_decoder`(dct)

  Automatically deserialize Mopidy models from JSON.

  Usage:

      >>> import json
      >>> json.loads(
      ...     '{"a_track": {"__model__": "Track", "name": "name"}}',
      ...     object_hook=model_json_decoder)
      {u'a_track': Track(artists=[], name=u'name')}

### Navigation

- index
- modules |
- next |
- previous |
- Mopidy 1.0.2 documentation »
- API reference »