Example #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}
Example #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)
Example #3
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)
Example #4
0
    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
Example #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)
Example #6
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)