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)[source]¶ 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:
-
class
mopidy.models.Track(*args, **kwargs)[source]¶ 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
Noneif unknown) – track number in album - disc_no (integer or
Noneif unknown) – disc number in album - date (string) – track release date (YYYY or YYYY-MM-DD)
- length (integer or
Noneif 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
Noneif unknown) – Represents last modification time
-
class
mopidy.models.Album(*args, **kwargs)[source]¶ Parameters: - uri (string) – album URI
- name (string) – album name
- artists (list of
Artist) – album artists - num_tracks (integer or
Noneif unknown) – number of tracks in album - num_discs (integer or
Noneif 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.TlTrack(*args, **kwargs)[source]¶ A tracklist track. Wraps a regular track and it’s tracklist ID.
The use of
TlTrackallows 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:
Data model helpers¶
-
class
mopidy.models.ImmutableObject(*args, **kwargs)[source]¶ 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)[source]¶ Automatically serialize Mopidy models to JSON.
Usage:
>>> import json >>> json.dumps({'a_track': Track(name='name')}, cls=ModelJSONEncoder) '{"a_track": {"__model__": "Track", "name": "name"}}'