mirror of
https://github.com/fergalmoran/picard.git
synced 2026-03-21 20:55:08 +00:00
Pass parts to weights_from_release_type_scores()
This commit is contained in:
committed by
Philipp Wolfer
parent
8f745f1a0d
commit
210e71b426
@@ -58,13 +58,14 @@ SimMatchTrack = namedtuple('SimMatchTrack', 'similarity releasegroup release tra
|
||||
SimMatchRelease = namedtuple('SimMatchRelease', 'similarity release')
|
||||
|
||||
|
||||
def weights_from_release_type_scores(release, release_type_scores,
|
||||
def weights_from_release_type_scores(parts, release, release_type_scores,
|
||||
weight_release_type=1):
|
||||
# This function generates a score that determines how likely this release will be selected in a lookup.
|
||||
# The score goes from 0 to 1 with 1 being the most likely to be chosen and 0 the least likely
|
||||
# This score is based on the preferences of release-types found in this release
|
||||
# This algorithm works by taking the scores of the primary type (and secondary if found) and averages them
|
||||
# If no types are found, it is set to the score of the 'Other' type or 0.5 if 'Other' doesnt exist
|
||||
# It appends (score, weight_release_type) to passed parts list
|
||||
|
||||
type_scores = dict(release_type_scores)
|
||||
score = 0.0
|
||||
@@ -76,7 +77,7 @@ def weights_from_release_type_scores(release, release_type_scores,
|
||||
for release_type in types_found:
|
||||
score += type_scores.get(release_type, other_score)
|
||||
score /= len(types_found)
|
||||
return (score, weight_release_type)
|
||||
parts.append((score, weight_release_type))
|
||||
|
||||
|
||||
class Metadata(MutableMapping):
|
||||
@@ -213,9 +214,9 @@ class Metadata(MutableMapping):
|
||||
parts.append((score, weights["format"]))
|
||||
|
||||
if "releasetype" in weights:
|
||||
parts.append(weights_from_release_type_scores(release,
|
||||
config.setting["release_type_scores"],
|
||||
weights["releasetype"]))
|
||||
weights_from_release_type_scores(parts, release,
|
||||
config.setting["release_type_scores"],
|
||||
weights["releasetype"])
|
||||
|
||||
rg = QObject.tagger.get_release_group_by_id(release['release-group']['id'])
|
||||
if release['id'] in rg.loaded_albums:
|
||||
|
||||
@@ -465,17 +465,21 @@ class MetadataTest(PicardTestCase):
|
||||
|
||||
def test_weights_from_release_type_scores(self):
|
||||
release = load_test_json('release.json')
|
||||
parts = []
|
||||
weights_from_release_type_scores(parts, release, {'Album': 0.75}, 666)
|
||||
self.assertEqual(
|
||||
weights_from_release_type_scores(release, {'Album': 0.75}, 666),
|
||||
parts[0],
|
||||
(0.75, 666)
|
||||
)
|
||||
weights_from_release_type_scores(parts, release, {}, 666)
|
||||
self.assertEqual(
|
||||
weights_from_release_type_scores(release, {}, 666),
|
||||
parts[1],
|
||||
(0.5, 666)
|
||||
)
|
||||
del release['release-group']
|
||||
weights_from_release_type_scores(parts, release, {}, 777)
|
||||
self.assertEqual(
|
||||
weights_from_release_type_scores(release, {}, 777),
|
||||
parts[2],
|
||||
(0.0, 777)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user