Merge pull request #1183 from adamcik/v1.0.x

core/mpd/local: Add title to get_distinct field types
This commit is contained in:
Stein Magnus Jodal 2015-06-24 22:57:22 +02:00
commit 9b29ccb40a
6 changed files with 19 additions and 4 deletions

View File

@ -10,10 +10,12 @@ v1.0.6 (unreleased)
Bug fix release. Bug fix release.
- Core/MPD/Local: Add support for ``title`` in
:meth:`mopidy.core.LibraryController.get_distinct`. (Fixes: :issue:`1181`)
- Core: Make sure track changes make it to audio while paused. - Core: Make sure track changes make it to audio while paused.
(Fixes: :issuse:`1177`) (Fixes: :issuse:`1177`)
v1.0.5 (2015-05-19) v1.0.5 (2015-05-19)
=================== ===================

View File

@ -97,6 +97,9 @@ class LibraryProvider(object):
*MAY be implemented by subclass.* *MAY be implemented by subclass.*
Default implementation will simply return an empty set. Default implementation will simply return an empty set.
Note that backends should always return an empty set for unexpected
field types.
""" """
return set() return set()

View File

@ -85,8 +85,8 @@ class LibraryController(object):
protocol supports in a more sane fashion. Other frontends are not protocol supports in a more sane fashion. Other frontends are not
recommended to use this method. recommended to use this method.
:param string field: One of ``artist``, ``albumartist``, ``album``, :param string field: One of ``track``, ``artist``, ``albumartist``,
``composer``, ``performer``, ``date``or ``genre``. ``album``, ``composer``, ``performer``, ``date``or ``genre``.
:param dict query: Query to use for limiting results, see :param dict query: Query to use for limiting results, see
:meth:`search` for details about the query format. :meth:`search` for details about the query format.
:rtype: set of values corresponding to the requested field type. :rtype: set of values corresponding to the requested field type.

View File

@ -141,7 +141,10 @@ class JsonLibrary(local.Library):
return [] return []
def get_distinct(self, field, query=None): def get_distinct(self, field, query=None):
if field == 'artist': if field == 'track':
def distinct(track):
return {track.name}
elif field == 'artist':
def distinct(track): def distinct(track):
return {a.name for a in track.artists} return {a.name for a in track.artists}
elif field == 'albumartist': elif field == 'albumartist':

View File

@ -22,6 +22,7 @@ _SEARCH_MAPPING = {
'track': 'track_no'} 'track': 'track_no'}
_LIST_MAPPING = { _LIST_MAPPING = {
'title': 'track',
'album': 'album', 'album': 'album',
'albumartist': 'albumartist', 'albumartist': 'albumartist',
'artist': 'artist', 'artist': 'artist',
@ -31,6 +32,7 @@ _LIST_MAPPING = {
'performer': 'performer'} 'performer': 'performer'}
_LIST_NAME_MAPPING = { _LIST_NAME_MAPPING = {
'title': 'Title',
'album': 'Album', 'album': 'Album',
'albumartist': 'AlbumArtist', 'albumartist': 'AlbumArtist',
'artist': 'Artist', 'artist': 'Artist',

View File

@ -624,6 +624,11 @@ class MusicDatabaseListTest(protocol.BaseTestCase):
self.send_request('list "foo"') self.send_request('list "foo"')
self.assertEqualResponse('ACK [2@0] {list} incorrect arguments') self.assertEqualResponse('ACK [2@0] {list} incorrect arguments')
# Track title
def test_list_title(self):
self.send_request('list "title"')
self.assertInResponse('OK')
# Artist # Artist
def test_list_artist_with_quotes(self): def test_list_artist_with_quotes(self):