From cecee0efb30fb1ecc4bdf1a3df2a7e0595f9b084 Mon Sep 17 00:00:00 2001 From: rembo10 Date: Sat, 19 Jan 2013 10:14:28 -0500 Subject: [PATCH] Added code for preferred words sorting --- headphones/searcher.py | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/headphones/searcher.py b/headphones/searcher.py index e269dfde..3613b19d 100644 --- a/headphones/searcher.py +++ b/headphones/searcher.py @@ -416,13 +416,27 @@ def searchNZB(albumid=None, new=False, losslessOnly=False): except Exception, e: logger.error(u"An unknown error occurred trying to parse the feed: %s" % e) - #attempt to verify that this isn't a substring result - #when looking for "Foo - Foo" we don't want "Foobar" - #this should be less of an issue when it isn't a self-titled album so we'll only check vs artist + # attempt to verify that this isn't a substring result + # when looking for "Foo - Foo" we don't want "Foobar" + # this should be less of an issue when it isn't a self-titled album so we'll only check vs artist + # + # Also will filter flac & remix albums if not specifically looking for it + # This code also checks the ignored words and required words + if len(resultlist): resultlist[:] = [result for result in resultlist if verifyresult(result[0], artistterm, term, losslessOnly)] if len(resultlist): + + # Add a priority if it has any of the preferred words + temp_list = [] + for result in resultlist: + if any(word.lower() in result[0].lower() for word in helpers.split_string(headphones.PREFERRED_WORDS)): + temp_list.append((result[0],result[1],result[2],result[3],1)) + else: + temp_list.append((result[0],result[1],result[2],result[3],0)) + + resultlist = temp_list if headphones.PREFERRED_QUALITY == 2 and headphones.PREFERRED_BITRATE: @@ -437,7 +451,7 @@ def searchNZB(albumid=None, new=False, losslessOnly=False): if not targetsize: logger.info('No track information for %s - %s. Defaulting to highest quality' % (albums[0], albums[1])) - nzblist = sorted(resultlist, key=lambda title: title[1], reverse=True) + nzblist = sorted(resultlist, key=lambda title: (-title[4] , -title[1])) else: logger.info('Target size: %s' % helpers.bytes_to_mb(targetsize)) @@ -460,7 +474,7 @@ def searchNZB(albumid=None, new=False, losslessOnly=False): # Add lossless nzbs to the "flac list" which we can use if there are no good lossy matches if 'flac' in result[0].lower(): - flac_list.append((result[0], result[1], result[2], result[3])) + flac_list.append((result[0], result[1], result[2], result[3], results[4])) continue @@ -469,24 +483,24 @@ def searchNZB(albumid=None, new=False, losslessOnly=False): continue delta = abs(targetsize - result[1]) - newlist.append((result[0], result[1], result[2], result[3], delta)) + newlist.append((result[0], result[1], result[2], result[3], results[4], delta)) - nzblist = sorted(newlist, key=lambda title: title[4]) + nzblist = sorted(newlist, key=lambda title: (-title[4], title[5])) if not len(nzblist) and len(flac_list) and headphones.PREFERRED_BITRATE_ALLOW_LOSSLESS: logger.info("Since there were no appropriate lossy matches (and at least one lossless match), going to use lossless instead") - nzblist = sorted(flac_list, key=lambda title: title[1], reverse=True) + nzblist = sorted(flac_list, key=lambda title: (-title[4], -title[1])) except Exception, e: logger.debug('Error: %s' % str(e)) logger.info('No track information for %s - %s. Defaulting to highest quality' % (albums[0], albums[1])) - nzblist = sorted(resultlist, key=lambda title: title[1], reverse=True) + nzblist = sorted(resultlist, key=lambda title: (-title[4], -title[1])) else: - nzblist = sorted(resultlist, key=lambda title: title[1], reverse=True) + nzblist = sorted(resultlist, key=lambda title: (-title[4], -title[1])) if new: