|
|
@ -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']) |
|
|
|