示例#1
0
    def get_distinct(self, field, query=None):
        if field == 'track':
            def distinct(track):
                return {track.name}
        elif field == 'artist':
            def distinct(track):
                return {a.name for a in track.artists}
        elif field == 'albumartist':
            def distinct(track):
                album = track.album or models.Album()
                return {a.name for a in album.artists}
        elif field == 'album':
            def distinct(track):
                album = track.album or models.Album()
                return {album.name}
        elif field == 'composer':
            def distinct(track):
                return {a.name for a in track.composers}
        elif field == 'performer':
            def distinct(track):
                return {a.name for a in track.performers}
        elif field == 'date':
            def distinct(track):
                return {track.date}
        elif field == 'genre':
            def distinct(track):
                return {track.genre}
        else:
            return set()

        distinct_result = set()
        search_result = search.search(self._tracks.values(), query, limit=None)
        for track in search_result.tracks:
            distinct_result.update(distinct(track))
        return distinct_result - {None}
示例#2
0
 def search(self, query=None, limit=100, offset=0, uris=None, exact=False):
     tracks = self._tracks.values()
     # TODO: pass limit and offset into search helpers
     if exact:
         return search.find_exact(tracks, query=query, uris=uris)
     else:
         return search.search(tracks, query=query, uris=uris)
示例#3
0
文件: json.py 项目: icecast/mopidy
 def search(self, query=None, limit=100, offset=0, uris=None, exact=False):
     tracks = self._tracks.values()
     # TODO: pass limit and offset into search helpers
     if exact:
         return search.find_exact(tracks, query=query, uris=uris)
     else:
         return search.search(tracks, query=query, uris=uris)
示例#4
0
文件: json.py 项目: CarnosOS/Peridot
    def get_distinct(self, field, query=None):
        if field == 'artist':
            def distinct(track):
                return {a.name for a in track.artists}
        elif field == 'albumartist':
            def distinct(track):
                album = track.album or models.Album()
                return {a.name for a in album.artists}
        elif field == 'album':
            def distinct(track):
                album = track.album or models.Album()
                return {album.name}
        elif field == 'composer':
            def distinct(track):
                return {a.name for a in track.composers}
        elif field == 'performer':
            def distinct(track):
                return {a.name for a in track.performers}
        elif field == 'date':
            def distinct(track):
                return {track.date}
        elif field == 'genre':
            def distinct(track):
                return {track.genre}
        else:
            return set()

        distinct_result = set()
        search_result = search.search(self._tracks.values(), query, limit=None)
        for track in search_result.tracks:
            distinct_result.update(distinct(track))
        return distinct_result
示例#5
0
 def search(self, query=None, limit=100, offset=0, uris=None, exact=False):
     tracks = self._tracks.values()
     if exact:
         return search.find_exact(
             tracks, query=query, limit=limit, offset=offset, uris=uris)
     else:
         return search.search(
             tracks, query=query, limit=limit, offset=offset, uris=uris)
示例#6
0
文件: json.py 项目: CarnosOS/Peridot
 def search(self, query=None, limit=100, offset=0, uris=None, exact=False):
     tracks = self._tracks.values()
     if exact:
         return search.find_exact(
             tracks, query=query, limit=limit, offset=offset, uris=uris)
     else:
         return search.search(
             tracks, query=query, limit=limit, offset=offset, uris=uris)