core/mpd/local: Add title to get_distinct field types

This commit is contained in:
Thomas Adamcik 2015-05-19 22:37:35 +02:00
parent 2ae56ed8a6
commit 31509ea568
5 changed files with 19 additions and 3 deletions

View File

@ -5,6 +5,14 @@ Changelog
This changelog is used to track all major changes to Mopidy. This changelog is used to track all major changes to Mopidy.
v1.0.6 (unreleased)
===================
Bug fix release.
- Core/MPD/Local: Add support for ``title`` in
:meth:`mopidy.core.LibraryController.get_distinct`. (Fixes: :issue:`1181`)
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 ``title``, ``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 == 'title':
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': 'title',
'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',