From 426155e65c7805d3615a0d642ad560d712ba0e35 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 3 Jun 2014 23:34:32 +0200 Subject: [PATCH] Add extra score if size is unique. fix #3344 --- couchpotato/core/plugins/quality/main.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/couchpotato/core/plugins/quality/main.py b/couchpotato/core/plugins/quality/main.py index a055f31..4c86f6c 100644 --- a/couchpotato/core/plugins/quality/main.py +++ b/couchpotato/core/plugins/quality/main.py @@ -207,15 +207,22 @@ class QualityPlugin(Plugin): self.calcScore(score, quality, contains_score, threedscore) - # Evaluate score based on size + size_scores = [] for quality in qualities: - size_score = self.guessSizeScore(quality, size = size) - self.calcScore(score, quality, size_score, penalty = False) - # Try again with loose testing - for quality in qualities: + # Evaluate score based on size + size_score = self.guessSizeScore(quality, size = size) loose_score = self.guessLooseScore(quality, extra = extra) - self.calcScore(score, quality, loose_score, penalty = False) + + if size_score > 0: + size_scores.append(quality) + + self.calcScore(score, quality, size_score + loose_score, penalty = False) + + # Add additional size score if only 1 size validated + if len(size_scores) == 1: + self.calcScore(score, size_scores[0], 10, penalty = False) + del size_scores # Return nothing if all scores are <= 0 has_non_zero = 0 @@ -325,6 +332,8 @@ class QualityPlugin(Plugin): if tryInt(quality['size_min']) <= tryInt(size) <= tryInt(quality['size_max']): log.debug('Found %s via release size: %s MB < %s MB < %s MB', (quality['identifier'], quality['size_min'], size, quality['size_max'])) score += 5 + else: + score -= 5 return score @@ -413,6 +422,7 @@ class QualityPlugin(Plugin): 'Movie Name (2013) 2D + 3D': {'size': 49000, 'quality': 'bd50', 'is_3d': True}, 'Movie Monuments 2013 BrRip 1080p': {'size': 1800, 'quality': 'brrip'}, 'Movie Monuments 2013 BrRip 720p': {'size': 1300, 'quality': 'brrip'}, + 'The.Movie.2014.3D.1080p.BluRay.AVC.DTS-HD.MA.5.1-GroupName': {'size': 30000, 'quality': 'bd50', 'is_3d': True}, } correct = 0 @@ -420,7 +430,7 @@ class QualityPlugin(Plugin): test_quality = self.guess(files = [name], extra = tests[name].get('extra', None), size = tests[name].get('size', None)) or {} success = test_quality.get('identifier') == tests[name]['quality'] and test_quality.get('is_3d') == tests[name].get('is_3d', False) if not success: - log.error('%s failed check, thinks it\'s %s', (name, self.guess([name]).get('identifier'))) + log.error('%s failed check, thinks it\'s %s', (name, test_quality.get('identifier'))) correct += success