From 97c83c57774f1f6fc31fe2e288d4dfd920a6afb0 Mon Sep 17 00:00:00 2001 From: Sambhav Kothari Date: Tue, 13 Dec 2016 05:39:05 +0530 Subject: [PATCH] PICARD-855: Adds errorhandler for missing meta-data When a track with a non valid total-tracks has multiple release matches on Picard, picard tries to apply a linear combination of weights to detect the best match. In the process it tried to typecast totaltracks into and int. This causes a ValueError when totaltracks is not castable into an int. --- picard/metadata.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/picard/metadata.py b/picard/metadata.py index 18464de98..7cba8246d 100644 --- a/picard/metadata.py +++ b/picard/metadata.py @@ -71,7 +71,7 @@ class Metadata(dict): if img.is_front_image(): return [img] return [] - + def remove_image(self, index): self.images.pop(index) @@ -121,13 +121,16 @@ class Metadata(dict): parts.append((similarity2(a, b), weights["albumartist"])) if "totaltracks" in self: - a = int(self["totaltracks"]) - if "title" in weights: - b = int(release.medium_list[0].medium[0].track_list[0].count) - else: - b = int(release.medium_list[0].track_count[0].text) - score = 0.0 if a > b else 0.3 if a < b else 1.0 - parts.append((score, weights["totaltracks"])) + try: + a = int(self["totaltracks"]) + if "title" in weights: + b = int(release.medium_list[0].medium[0].track_list[0].count) + else: + b = int(release.medium_list[0].track_count[0].text) + score = 0.0 if a > b else 0.3 if a < b else 1.0 + parts.append((score, weights["totaltracks"])) + except ValueError: + pass preferred_countries = config.setting["preferred_release_countries"] preferred_formats = config.setting["preferred_release_formats"]