Exemplo n.º 1
0
 def keyword_search(self, s):
     if s.startswith(':a'):
         artist_id = s[len(':a'):].strip()
         try:
             url = search_album('arid:' + solr_escape(artist_id),
                                limit=100,
                                own=True)
             return parse_album_search(urlopen(url))
         except RetrievalError as e:
             msg = translate("MusicBrainz",
                             '<b>Error:</b> While retrieving %1: %2')
             write_log(msg.arg(artist_id).arg(escape(e)))
             raise
     elif s.startswith(':b'):
         r_id = s[len(':b'):].strip()
         try:
             return [self.retrieve(r_id)]
         except RetrievalError as e:
             msg = translate(
                 "MusicBrainz",
                 "<b>Error:</b> While retrieving Album ID %1 (%2)")
             write_log(msg.arg(r_id).arg(escape(e)))
             raise
     else:
         try:
             params = parse_searchstring(s)
         except RetrievalError as e:
             return parse_album_search(urlopen(search_album(s, limit=100)))
         if not params:
             return
         artist = params[0][0]
         album = params[0][1]
         return self.search(album, [artist], 100)
Exemplo n.º 2
0
 def keyword_search(self, text):
     """Searches for albums by keywords, text."""
     #Should search for the keywords in text.
     #This method is optional, but recommended.
     
     #The format artist1;album1|artist2;album2 should be accepted.
     #Use the parse_searchstring method to separate text
     #into a list of artist album pairs as in:
     # [(artist1, album1), (artist2, album2)]
     try:
         params = parse_searchstring(text)
         artists = [params[0][0]]
         album = params[0][1]
     except RetrievalError:
         album = text
         artists = None
     return self.search(album, artists)
Exemplo n.º 3
0
    def keyword_search(self, text):
        """Searches for albums by keywords, text."""
        # Should search for the keywords in text.
        # This method is optional, but recommended.

        # The format artist1;album1|artist2;album2 should be accepted.
        # Use the parse_searchstring method to separate text
        # into a list of artist album pairs as in:
        # [(artist1, album1), (artist2, album2)]
        try:
            params = parse_searchstring(text)
            artists = [params[0][0]]
            album = params[0][1]
        except RetrievalError:
            album = text
            artists = None
        return self.search(album, artists)
Exemplo n.º 4
0
 def keyword_search(self, text):
     if text.startswith(':id'):
         sql = text[len(':id'):].strip().replace(' ', '').lower()
         if sql.startswith('mr'):
             url = album_url + 'release/' + sql
         else:
             url = album_url + sql
         info, tracks, cover = retrieve_album(url, self._getcover)
         if cover:
             info.update(cover)
         return [(info, tracks)]
     else:
         try:
             params = parse_searchstring(text)
         except RetrievalError:
             return self.search(text, [''])
         artists = [params[0][0]]
         album = params[0][1]
         return self.search(album, artists)
Exemplo n.º 5
0
 def keyword_search(self, text):
     if text.startswith(u':id'):
         sql = text[len(':id'):].strip().replace(u' ', u'').lower()
         if sql.startswith('mr'):
             url = album_url + 'release/' + sql
         else:
             url = album_url + sql
         info, tracks, cover = retrieve_album(url, self._getcover)
         if cover:
             info.update(cover)
         return [(info, tracks)]
     else:
         try:
             params = parse_searchstring(text)
         except RetrievalError:
             return self.search(text, [u''])
         artists = [params[0][0]]
         album = params[0][1]
         return self.search(album, artists)
Exemplo n.º 6
0
                msg = translate("MusicBrainz",
                    '<b>Error:</b> While retrieving %1: %2')
                write_log(msg.arg(artist_id).arg(escape(e)))
                raise
        elif s.startswith(u':b'):
            r_id = s[len(u':b'):].strip()
            try:
                return [self.retrieve(r_id)]
            except RetrievalError, e:
                msg = translate("MusicBrainz",
                    "<b>Error:</b> While retrieving Album ID %1 (%2)")
                write_log(msg.arg(r_id).arg(escape(e)))
                raise 
        else:
            try:
                params = parse_searchstring(s)
            except RetrievalError, e:
                return parse_album_search(urlopen(search_album(s, limit=100)))
            if not params:
                return
            artist = params[0][0]
            album = params[0][1]
            return self.search(album, [artist], 100)

    def search(self, album, artists=u'', limit=40):
        if time.time() - self.__lasttime < 1000:
            time.sleep(1)

        ret = []
        check_matches = False
        if isempty(artists):
Exemplo n.º 7
0
                                '<b>Error:</b> While retrieving %1: %2')
                write_log(msg.arg(artist_id).arg(escape(e)))
                raise
        elif s.startswith(u':b'):
            r_id = s[len(u':b'):].strip()
            try:
                return [self.retrieve(r_id)]
            except RetrievalError, e:
                msg = translate(
                    "MusicBrainz",
                    "<b>Error:</b> While retrieving Album ID %1 (%2)")
                write_log(msg.arg(r_id).arg(escape(e)))
                raise
        else:
            try:
                params = parse_searchstring(s)
            except RetrievalError, e:
                return parse_album_search(urlopen(search_album(s, limit=100)))
            if not params:
                return
            artist = params[0][0]
            album = params[0][1]
            return self.search(album, [artist], 100)

    def search(self, album, artists=u'', limit=40):
        if time.time() - self.__lasttime < 1000:
            time.sleep(1)

        ret = []
        check_matches = False
        if isempty(artists):