Skip to content

Commit

Permalink
Fix #50: Handle search items in bookmarks.
Browse files Browse the repository at this point in the history
  • Loading branch information
tkem committed Nov 16, 2015
1 parent 63937a6 commit a0106aa
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
8 changes: 6 additions & 2 deletions mopidy_internetarchive/library.py
Expand Up @@ -129,9 +129,13 @@ def search(self, query=None, uris=None, exact=False):
albums=map(translator.album, result)
)

def __browse_collection(self, identifier, sort=['downloads desc']):
def __browse_collection(self, identifier, q=[], sort=['downloads desc']):
if identifier:
query = _query(collection=identifier, **self.__search_filter),
else:
query = ' AND '.join(q) + ' AND ' + _query(**self.__search_filter)
return map(translator.ref, self.backend.client.search(
_query(collection=identifier, **self.__search_filter),
query,
fields=['identifier', 'title', 'mediatype', 'creator'],
rows=self.__config['browse_limit'],
sort=sort
Expand Down
29 changes: 18 additions & 11 deletions mopidy_internetarchive/translator.py
@@ -1,10 +1,13 @@
from __future__ import unicode_literals

import datetime
import functools
import logging
import re

from mopidy import models
from mopidy.models import Album, Artist, Ref, Track

import uritools

from . import Extension

Expand All @@ -22,6 +25,8 @@
(?:\-(\d{2}))?
""", flags=re.VERBOSE)

uri = functools.partial(uritools.uricompose, Extension.ext_name, None)

logger = logging.getLogger(__name__)


Expand Down Expand Up @@ -76,30 +81,32 @@ def parse_creator(obj, default=None):
if not obj or obj == 'tmp':
return default
elif isinstance(obj, basestring):
return [models.Artist(name=obj)]
return [Artist(name=obj)]
else:
return [models.Artist(name=name) for name in obj]
return [Artist(name=name) for name in obj]


def ref(obj, scheme=Extension.ext_name):
def ref(obj, uri=uri):
identifier = obj['identifier']
mediatype = obj['mediatype']
name = obj.get('title', identifier)
uri = '%s:%s' % (scheme, identifier)

if obj.get('mediatype', 'collection') != 'collection':
return models.Ref.album(uri=uri, name=name)
if mediatype == 'search':
return Ref.directory(name=name, uri=uri(query={'q': identifier}))
elif mediatype != 'collection':
return Ref.album(name=name, uri=uri(path=identifier))
elif name in obj.get('creator', []):
return models.Ref.artist(uri=uri, name=name)
return Ref.artist(name=name, uri=uri(path=identifier))
else:
return models.Ref.directory(uri=uri, name=name)
return Ref.directory(name=name, uri=uri(path=identifier))


def album(obj, images=[], scheme=Extension.ext_name):
identifier = obj['identifier']
name = obj.get('title', identifier)
uri = '%s:%s' % (scheme, identifier)

return models.Album(
return Album(
uri=uri,
name=name,
artists=parse_creator(obj.get('creator')),
Expand All @@ -114,7 +121,7 @@ def track(obj, file, album, scheme=Extension.ext_name):
name = file.get('title', filename)
uri = '%s:%s#%s' % (scheme, identifier, filename)

return models.Track(
return Track(
name=name,
uri=uri,
album=album,
Expand Down

0 comments on commit a0106aa

Please sign in to comment.