Core API¶
The core API is the interface that is used by frontends like
mopidy.http and mopidy.mpd. The core layer is inbetween the
frontends and the backends.
-
class
mopidy.core.Core(mixer=None, backends=None, audio=None)[source]¶ -
-
history= None¶ The playback history controller. An instance of
mopidy.core.HistoryController.
-
library= None¶ The library controller. An instance of
mopidy.core.LibraryController.
-
mixer= None¶ The mixer controller. An instance of
mopidy.core.MixerController.
-
playback= None¶ The playback controller. An instance of
mopidy.core.PlaybackController.
-
playlists= None¶ The playlists controller. An instance of
mopidy.core.PlaylistsController.
-
tracklist= None¶ The tracklist controller. An instance of
mopidy.core.TracklistController.
-
uri_schemes¶ Deprecated since version 1.0: Use
get_uri_schemes()instead.
-
version¶ Deprecated since version 1.0: Use
get_version()instead.
-
Playback controller¶
Manages playback, with actions like play, pause, stop, next, previous, seek, and volume control.
-
class
mopidy.core.PlaybackState[source]¶ Enum of playback states.
-
PAUSED= u'paused'¶ Constant representing the paused state.
-
PLAYING= u'playing'¶ Constant representing the playing state.
-
STOPPED= u'stopped'¶ Constant representing the stopped state.
-
-
class
mopidy.core.PlaybackController(backends, core)[source]¶ -
current_tl_track¶ Deprecated since version 1.0: Use
get_current_tl_track()instead.
-
current_track¶ Deprecated since version 1.0: Use
get_current_track()instead.
-
get_current_tl_track()[source]¶ Get the currently playing or selected track.
Returns a
mopidy.models.TlTrackorNone.
-
get_current_track()[source]¶ Get the currently playing or selected track.
Extracted from
get_current_tl_track()for convenience.Returns a
mopidy.models.TrackorNone.
-
get_mute()[source]¶ Deprecated since version 1.0: Use
core.mixer.get_mute()instead.
-
get_volume()[source]¶ Deprecated since version 1.0: Use
core.mixer.get_volume()instead.
-
mute¶ Deprecated since version 1.0: Use
core.mixer.get_mute()andcore.mixer.set_mute()instead.
-
next()[source]¶ Change to the next track.
The current playback state will be kept. If it was playing, playing will continue. If it was paused, it will still be paused, etc.
-
play(tl_track=None)[source]¶ Play the given track, or if the given track is
None, play the currently active track.Parameters: tl_track ( mopidy.models.TlTrackorNone) – track to play
-
previous()[source]¶ Change to the previous track.
The current playback state will be kept. If it was playing, playing will continue. If it was paused, it will still be paused, etc.
-
seek(time_position)[source]¶ Seeks to time position given in milliseconds.
Parameters: time_position (int) – time position in milliseconds Return type: Trueif successful, elseFalse
-
set_mute(mute)[source]¶ Deprecated since version 1.0: Use
core.mixer.set_mute()instead.
-
set_state(new_state)[source]¶ Set the playback state.
Must be
PLAYING,PAUSED, orSTOPPED.Possible states and transitions:
digraph state_transitions { "STOPPED" -> "PLAYING" [ label="play" ] "STOPPED" -> "PAUSED" [ label="pause" ] "PLAYING" -> "STOPPED" [ label="stop" ] "PLAYING" -> "PAUSED" [ label="pause" ] "PLAYING" -> "PLAYING" [ label="play" ] "PAUSED" -> "PLAYING" [ label="resume" ] "PAUSED" -> "STOPPED" [ label="stop" ] }
-
set_volume(volume)[source]¶ Deprecated since version 1.0: Use
core.mixer.set_volume()instead.
-
state¶ Deprecated since version 1.0: Use
get_state()andset_state()instead.
-
time_position¶ Deprecated since version 1.0: Use
get_time_position()instead.
-
volume¶ Deprecated since version 1.0: Use
core.mixer.get_volume()andcore.mixer.set_volume()instead.
-
Tracklist controller¶
Manages everything related to the tracks we are currently playing.
-
class
mopidy.core.TracklistController(core)[source]¶ -
add(tracks=None, at_position=None, uri=None, uris=None)[source]¶ Add the track or list of tracks to the tracklist.
If
uriis given instead oftracks, the URI is looked up in the library and the resulting tracks are added to the tracklist.If
urisis given instead oftracks, the URIs are looked up in the library and the resulting tracks are added to the tracklist.If
at_positionis given, the tracks placed at the given position in the tracklist. Ifat_positionis not given, the tracks are appended to the end of the tracklist.Triggers the
mopidy.core.CoreListener.tracklist_changed()event.Parameters: - tracks (list of
mopidy.models.Track) – tracks to add - at_position (int or
None) – position in tracklist to add track - uri (string) – URI for tracks to add
Return type: list of
mopidy.models.TlTrackNew in version 1.0: The
urisargument.Deprecated since version 1.0: The
tracksanduriarguments. Useuris.- tracks (list of
-
clear()[source]¶ Clear the tracklist.
Triggers the
mopidy.core.CoreListener.tracklist_changed()event.
-
consume¶ Deprecated since version 1.0: Use
get_consume()andset_consume()instead.
-
eot_track(tl_track)[source]¶ The track that will be played after the given track.
Not necessarily the same track as
next_track().Parameters: tl_track ( mopidy.models.TlTrackorNone) – the reference trackReturn type: mopidy.models.TlTrackorNone
-
filter(criteria=None, **kwargs)[source]¶ Filter the tracklist by the given criterias.
A criteria consists of a model field to check and a list of values to compare it against. If the model field matches one of the values, it may be returned.
Only tracks that matches all the given criterias are returned.
Examples:
# Returns tracks with TLIDs 1, 2, 3, or 4 (tracklist ID) filter({'tlid': [1, 2, 3, 4]}) filter(tlid=[1, 2, 3, 4]) # Returns track with IDs 1, 5, or 7 filter({'id': [1, 5, 7]}) filter(id=[1, 5, 7]) # Returns track with URIs 'xyz' or 'abc' filter({'uri': ['xyz', 'abc']}) filter(uri=['xyz', 'abc']) # Returns tracks with ID 1 and URI 'xyz' filter({'id': [1], 'uri': ['xyz']}) filter(id=[1], uri=['xyz']) # Returns track with a matching ID (1, 3 or 6) and a matching URI # ('xyz' or 'abc') filter({'id': [1, 3, 6], 'uri': ['xyz', 'abc']}) filter(id=[1, 3, 6], uri=['xyz', 'abc'])
Parameters: criteria (dict, of (string, list) pairs) – on or more criteria to match by Return type: list of mopidy.models.TlTrack
-
get_consume()[source]¶ Get consume mode.
True- Tracks are removed from the tracklist when they have been played.
False- Tracks are not removed from the tracklist.
-
get_random()[source]¶ Get random mode.
True- Tracks are selected at random from the tracklist.
False- Tracks are played in the order of the tracklist.
-
get_repeat()[source]¶ Get repeat mode.
True- The tracklist is played repeatedly.
False- The tracklist is played once.
-
get_single()[source]¶ Get single mode.
True- Playback is stopped after current song, unless in
repeatmode. False- Playback continues after current song.
-
get_tl_tracks()[source]¶ Get tracklist as list of
mopidy.models.TlTrack.
-
get_tracks()[source]¶ Get tracklist as list of
mopidy.models.Track.
-
get_version()[source]¶ Get the tracklist version.
Integer which is increased every time the tracklist is changed. Is not reset before Mopidy is restarted.
-
index(tl_track)[source]¶ The position of the given track in the tracklist.
Parameters: tl_track ( mopidy.models.TlTrack) – the track to find the index ofReturn type: intorNone
-
length¶ Deprecated since version 1.0: Use
get_length()instead.
-
move(start, end, to_position)[source]¶ Move the tracks in the slice
[start:end]toto_position.Triggers the
mopidy.core.CoreListener.tracklist_changed()event.Parameters:
-
next_track(tl_track)[source]¶ The track that will be played if calling
mopidy.core.PlaybackController.next().For normal playback this is the next track in the tracklist. If repeat is enabled the next track can loop around the tracklist. When random is enabled this should be a random track, all tracks should be played once before the tracklist repeats.
Parameters: tl_track ( mopidy.models.TlTrackorNone) – the reference trackReturn type: mopidy.models.TlTrackorNone
-
previous_track(tl_track)[source]¶ Returns the track that will be played if calling
mopidy.core.PlaybackController.previous().For normal playback this is the previous track in the tracklist. If random and/or consume is enabled it should return the current track instead.
Parameters: tl_track ( mopidy.models.TlTrackorNone) – the reference trackReturn type: mopidy.models.TlTrackorNone
-
random¶ Deprecated since version 1.0: Use
get_random()andset_random()instead.
-
remove(criteria=None, **kwargs)[source]¶ Remove the matching tracks from the tracklist.
Uses
filter()to lookup the tracks to remove.Triggers the
mopidy.core.CoreListener.tracklist_changed()event.Parameters: criteria (dict) – on or more criteria to match by Return type: list of mopidy.models.TlTrackthat was removed
-
repeat¶ Deprecated since version 1.0: Use
get_repeat()andset_repeat()instead.
-
set_consume(value)[source]¶ Set consume mode.
True- Tracks are removed from the tracklist when they have been played.
False- Tracks are not removed from the tracklist.
-
set_random(value)[source]¶ Set random mode.
True- Tracks are selected at random from the tracklist.
False- Tracks are played in the order of the tracklist.
-
set_repeat(value)[source]¶ Set repeat mode.
To repeat a single track, set both
repeatandsingle.True- The tracklist is played repeatedly.
False- The tracklist is played once.
-
set_single(value)[source]¶ Set single mode.
True- Playback is stopped after current song, unless in
repeatmode. False- Playback continues after current song.
-
shuffle(start=None, end=None)[source]¶ Shuffles the entire tracklist. If
startandendis given only shuffles the slice[start:end].Triggers the
mopidy.core.CoreListener.tracklist_changed()event.Parameters: - start (int or
None) – position of first track to shuffle - end (int or
None) – position after last track to shuffle
- start (int or
-
single¶ Deprecated since version 1.0: Use
get_single()andset_single()instead.
-
slice(start, end)[source]¶ Returns a slice of the tracklist, limited by the given start and end positions.
Parameters: Return type:
-
tl_tracks¶ Deprecated since version 1.0: Use
get_tl_tracks()instead.
-
tracks¶ Deprecated since version 1.0: Use
get_tracks()instead.
-
version¶ Deprecated since version 1.0: Use
get_version()instead.
-
History controller¶
Keeps record of what tracks have been played.
-
class
mopidy.core.HistoryController[source]¶ -
get_history()[source]¶ Get the track history.
The timestamps are milliseconds since epoch.
Returns: the track history Return type: list of (timestamp, mopidy.models.Ref) tuples
-
Playlists controller¶
Manages persistence of playlists.
-
class
mopidy.core.PlaylistsController(backends, core)[source]¶ -
as_list()[source]¶ Get a list of the currently available playlists.
Returns a list of
Refobjects referring to the playlists. In other words, no information about the playlists’ content is given.Return type: list of mopidy.models.RefNew in version 1.0.
-
create(name, uri_scheme=None)[source]¶ Create a new playlist.
If
uri_schemematches an URI scheme handled by a current backend, that backend is asked to create the playlist. Ifuri_schemeisNoneor doesn’t match a current backend, the first backend is asked to create the playlist.All new playlists must be created by calling this method, and not by creating new instances of
mopidy.models.Playlist.Parameters: Return type:
-
delete(uri)[source]¶ Delete playlist identified by the URI.
If the URI doesn’t match the URI schemes handled by the current backends, nothing happens.
Parameters: uri (string) – URI of the playlist to delete
-
filter(criteria=None, **kwargs)[source]¶ Filter playlists by the given criterias.
Examples:
# Returns track with name 'a' filter({'name': 'a'}) filter(name='a') # Returns track with URI 'xyz' filter({'uri': 'xyz'}) filter(uri='xyz') # Returns track with name 'a' and URI 'xyz' filter({'name': 'a', 'uri': 'xyz'}) filter(name='a', uri='xyz')
Parameters: criteria (dict) – one or more criteria to match by Return type: list of mopidy.models.PlaylistDeprecated since version 1.0: Use
as_list()and filter yourself.
-
get_items(uri)[source]¶ Get the items in a playlist specified by
uri.Returns a list of
Refobjects referring to the playlist’s items.If a playlist with the given
uridoesn’t exist, it returnsNone.Return type: list of mopidy.models.Ref, orNoneNew in version 1.0.
-
get_playlists(include_tracks=True)[source]¶ Get the available playlists.
Return type: list of mopidy.models.PlaylistChanged in version 1.0: If you call the method with
include_tracks=False, thelast_modifiedfield of the returned playlists is no longer set.Deprecated since version 1.0: Use
as_list()andget_items()instead.
-
lookup(uri)[source]¶ Lookup playlist with given URI in both the set of playlists and in any other playlist sources. Returns
Noneif not found.Parameters: uri (string) – playlist URI Return type: mopidy.models.PlaylistorNone
-
playlists¶ Deprecated since version 1.0: Use
as_list()andget_items()instead.
-
refresh(uri_scheme=None)[source]¶ Refresh the playlists in
playlists.If
uri_schemeisNone, all backends are asked to refresh. Ifuri_schemeis an URI scheme handled by a backend, only that backend is asked to refresh. Ifuri_schemedoesn’t match any current backend, nothing happens.Parameters: uri_scheme (string) – limit to the backend matching the URI scheme
-
save(playlist)[source]¶ Save the playlist.
For a playlist to be saveable, it must have the
uriattribute set. You must not set theuriatribute yourself, but use playlist objects returned bycreate()or retrieved fromplaylists, which will always give you saveable playlists.The method returns the saved playlist. The return playlist may differ from the saved playlist. E.g. if the playlist name was changed, the returned playlist may have a different URI. The caller of this method must throw away the playlist sent to this method, and use the returned playlist instead.
If the playlist’s URI isn’t set or doesn’t match the URI scheme of a current backend, nothing is done and
Noneis returned.Parameters: playlist ( mopidy.models.Playlist) – the playlistReturn type: mopidy.models.PlaylistorNone
-
Library controller¶
Manages the music library, e.g. searching for tracks to be added to a playlist.
-
class
mopidy.core.LibraryController(backends, core)[source]¶ -
browse(uri)[source]¶ Browse directories and tracks at the given
uri.uriis a string which represents some directory belonging to a backend. To get the intial root directories for backends pass None as the URI.Returns a list of
mopidy.models.Refobjects for the directories and tracks at the givenuri.The
Refobjects representing tracks keep the track’s original URI. A matching pair of objects can look like this:Track(uri='dummy:/foo.mp3', name='foo', artists=..., album=...) Ref.track(uri='dummy:/foo.mp3', name='foo')
The
Refobjects representing directories have backend specific URIs. These are opaque values, so no one but the backend that created them should try and derive any meaning from them. The only valid exception to this is checking the scheme, as it is used to route browse requests to the correct backend.For example, the dummy library’s
/bardirectory could be returned like this:Ref.directory(uri='dummy:directory:/bar', name='bar')
Parameters: uri (string) – URI to browse Return type: list of mopidy.models.RefNew in version 0.18.
-
find_exact(query=None, uris=None, **kwargs)[source]¶ Search the library for tracks where
fieldisvalues.Deprecated since version 1.0: Use
search()withexactset.
-
get_distinct(field, query=None)[source]¶ List distinct values for a given field from the library.
This has mainly been added to support the list commands the MPD protocol supports in a more sane fashion. Other frontends are not recommended to use this method.
Parameters: Return type: set of values corresponding to the requested field type.
New in version 1.0.
-
get_images(uris)[source]¶ Lookup the images for the given URIs
Backends can use this to return image URIs for any URI they know about be it tracks, albums, playlists... The lookup result is a dictionary mapping the provided URIs to lists of images.
Unknown URIs or URIs the corresponding backend couldn’t find anything for will simply return an empty list for that URI.
Parameters: uris (list) – list of URIs to find images for Return type: {uri: tuple of mopidy.models.Image}New in version 1.0.
-
lookup(uri=None, uris=None)[source]¶ Lookup the given URI.
If the URI expands to multiple tracks, the returned list will contain them all.
Parameters: - uri (string or
None) – track URI - uris (list of string or
None) – track URIs
Return type: list of
mopidy.models.Trackif uri was set or a {uri: list ofmopidy.models.Track} if uris was set.New in version 1.0: The
urisargument.Deprecated since version 1.0: The
uriargument. Useurisinstead.- uri (string or
-
refresh(uri=None)[source]¶ Refresh library. Limit to URI and below if an URI is given.
Parameters: uri (string) – directory or track URI
-
search(query=None, uris=None, exact=False, **kwargs)[source]¶ Search the library for tracks where
fieldcontainsvalues.Deprecated since version 1.0: Previously, if the query was empty, and the backend could support it, all available tracks were returned. This has not changed, but it is strongly discouraged. No new code should rely on this behavior.
If
urisis given, the search is limited to results from within the URI roots. For example passinguris=['file:']will limit the search to the local backend.Examples:
# Returns results matching 'a' in any backend search({'any': ['a']}) search(any=['a']) # Returns results matching artist 'xyz' in any backend search({'artist': ['xyz']}) search(artist=['xyz']) # Returns results matching 'a' and 'b' and artist 'xyz' in any # backend search({'any': ['a', 'b'], 'artist': ['xyz']}) search(any=['a', 'b'], artist=['xyz']) # Returns results matching 'a' if within the given URI roots # "file:///media/music" and "spotify:" search({'any': ['a']}, uris=['file:///media/music', 'spotify:']) search(any=['a'], uris=['file:///media/music', 'spotify:'])
Parameters: - query (dict) – one or more queries to search for
- uris (list of strings or
None) – zero or more URI roots to limit the search to
Return type: list of
mopidy.models.SearchResultNew in version 1.0: The
exactkeyword argument, which replacesfind_exact().
-
Mixer controller¶
Manages volume and muting.
Core listener¶
-
class
mopidy.core.CoreListener[source]¶ Marker interface for recipients of events sent by the core actor.
Any Pykka actor that mixes in this class will receive calls to the methods defined here when the corresponding events happen in the core actor. This interface is used both for looking up what actors to notify of the events, and for providing default implementations for those listeners that are not interested in all events.
-
mute_changed(mute)[source]¶ Called whenever the mute state is changed.
MAY be implemented by actor.
Parameters: mute (boolean) – the new mute state
-
on_event(event, **kwargs)[source]¶ Called on all events.
MAY be implemented by actor. By default, this method forwards the event to the specific event methods.
Parameters: - event (string) – the event name
- kwargs – any other arguments to the specific event handlers
-
playback_state_changed(old_state, new_state)[source]¶ Called whenever playback state is changed.
MAY be implemented by actor.
Parameters: - old_state (string from
mopidy.core.PlaybackStatefield) – the state before the change - new_state (string from
mopidy.core.PlaybackStatefield) – the state after the change
- old_state (string from
-
playlist_changed(playlist)[source]¶ Called whenever a playlist is changed.
MAY be implemented by actor.
Parameters: playlist ( mopidy.models.Playlist) – the changed playlist
-
playlists_loaded()[source]¶ Called when playlists are loaded or refreshed.
MAY be implemented by actor.
-
seeked(time_position)[source]¶ Called whenever the time position changes by an unexpected amount, e.g. at seek to a new time position.
MAY be implemented by actor.
Parameters: time_position (int) – the position that was seeked to in milliseconds
-
stream_title_changed(title)[source]¶ Called whenever the currently playing stream title changes.
MAY be implemented by actor.
-
track_playback_ended(tl_track, time_position)[source]¶ Called whenever playback of a track ends.
MAY be implemented by actor.
Parameters: - tl_track (
mopidy.models.TlTrack) – the track that was played before playback stopped - time_position (int) – the time position in milliseconds
- tl_track (
-
track_playback_paused(tl_track, time_position)[source]¶ Called whenever track playback is paused.
MAY be implemented by actor.
Parameters: - tl_track (
mopidy.models.TlTrack) – the track that was playing when playback paused - time_position (int) – the time position in milliseconds
- tl_track (
-
track_playback_resumed(tl_track, time_position)[source]¶ Called whenever track playback is resumed.
MAY be implemented by actor.
Parameters: - tl_track (
mopidy.models.TlTrack) – the track that was playing when playback resumed - time_position (int) – the time position in milliseconds
- tl_track (
-
track_playback_started(tl_track)[source]¶ Called whenever a new track starts playing.
MAY be implemented by actor.
Parameters: tl_track ( mopidy.models.TlTrack) – the track that just started playing
-