diff --git a/couchpotato/core/plugins/score/main.py b/couchpotato/core/plugins/score/main.py old mode 100644 new mode 100755 index 08a1855..f0e088c --- a/couchpotato/core/plugins/score/main.py +++ b/couchpotato/core/plugins/score/main.py @@ -1,4 +1,4 @@ -from couchpotato.core.event import addEvent +from couchpotato.core.event import addEvent, fireEvent from couchpotato.core.helpers.encoding import toUnicode from couchpotato.core.helpers.variable import getTitle, splitString, removeDuplicate from couchpotato.core.logger import CPLog @@ -16,17 +16,20 @@ class Score(Plugin): def __init__(self): addEvent('score.calculate', self.calculate) - def calculate(self, nzb, movie): + def calculate(self, nzb, media): """ Calculate the score of a NZB, used for sorting later """ + # Fetch root media item (movie, show) + root = fireEvent('library.root', media, single = True) + # Merge global and category preferred_words = splitString(Env.setting('preferred_words', section = 'searcher').lower()) - try: preferred_words = removeDuplicate(preferred_words + splitString(movie['category']['preferred'].lower())) + try: preferred_words = removeDuplicate(preferred_words + splitString(media['category']['preferred'].lower())) except: pass - score = nameScore(toUnicode(nzb['name']), movie['info'].get('year'), preferred_words) + score = nameScore(toUnicode(nzb['name']), root['info'].get('year'), preferred_words) - for movie_title in movie['info']['titles']: + for movie_title in root['info']['titles']: score += nameRatioScore(toUnicode(nzb['name']), toUnicode(movie_title)) score += namePositionScore(toUnicode(nzb['name']), toUnicode(movie_title)) @@ -44,15 +47,15 @@ class Score(Plugin): score += providerScore(nzb['provider']) # Duplicates in name - score += duplicateScore(nzb['name'], getTitle(movie)) + score += duplicateScore(nzb['name'], getTitle(root)) # Merge global and category ignored_words = splitString(Env.setting('ignored_words', section = 'searcher').lower()) - try: ignored_words = removeDuplicate(ignored_words + splitString(movie['category']['ignored'].lower())) + try: ignored_words = removeDuplicate(ignored_words + splitString(media['category']['ignored'].lower())) except: pass # Partial ignored words - score += partialIgnoredScore(nzb['name'], getTitle(movie), ignored_words) + score += partialIgnoredScore(nzb['name'], getTitle(root), ignored_words) # Ignore single downloads from multipart score += halfMultipartScore(nzb['name'])