From 9c1aff8e9ad249a3e43c12fd39185ccd513cdd09 Mon Sep 17 00:00:00 2001 From: Michael Wiencek Date: Sun, 11 Dec 2011 15:36:00 -0600 Subject: [PATCH 1/3] Refreshing albums that couldn't load causes them to vanish --- picard/album.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/picard/album.py b/picard/album.py index 1c5b62c4d..63e10bb94 100644 --- a/picard/album.py +++ b/picard/album.py @@ -20,7 +20,7 @@ import traceback from collections import deque -from PyQt4 import QtCore +from PyQt4 import QtCore, QtNetwork from picard.metadata import Metadata, run_album_metadata_processors, run_track_metadata_processors from picard.dataobj import DataObject from picard.file import File @@ -122,15 +122,19 @@ class Album(DataObject, Item): if error: self.log.error("%r", unicode(http.errorString())) # Fix for broken NAT releases - files = list(self.unmatched_files.files) - for file in files: - trackid = file.metadata["musicbrainz_trackid"] - if mbid_validate(trackid) and file.metadata["album"] == self.config.setting["nat_name"]: - self.tagger.move_file_to_nat(file, trackid) - self.tagger.nats.update() - if not self.get_num_unmatched_files(): - self.tagger.remove_album(self) - error = False + if error == QtNetwork.QNetworkReply.ContentNotFoundError: + nats = False + nat_name = self.config.setting["nat_name"] + files = list(self.unmatched_files.files) + for file in files: + trackid = file.metadata["musicbrainz_trackid"] + if mbid_validate(trackid) and file.metadata["album"] == nat_name: + nats = True + self.tagger.move_file_to_nat(file, trackid) + self.tagger.nats.update() + if nats and not self.get_num_unmatched_files(): + self.tagger.remove_album(self) + error = False else: try: parsed = self._parse_release(document) From 211150802d2b28199a669f11782cddf844a3322a Mon Sep 17 00:00:00 2001 From: Michael Wiencek Date: Sun, 11 Dec 2011 16:15:46 -0600 Subject: [PATCH 2/3] Medium formats aren't listed in order (PICARD-91) Rewrite media_formats_from_node to emulate the mbserver code. --- picard/mbxml.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/picard/mbxml.py b/picard/mbxml.py index 5f5e3cd07..873f59b9f 100644 --- a/picard/mbxml.py +++ b/picard/mbxml.py @@ -174,17 +174,26 @@ def label_info_from_node(node): def media_formats_from_node(node): - formats = {} + formats_count = {} + formats_order = [] for medium in node.medium: if "format" in medium.children: text = medium.format[0].text - formats[text] = formats.get(text, 0) + 1 - if formats: - return " + ".join([ - (str(j) + u"×" if j > 1 else "") + RELEASE_FORMATS.get(i, i) - for i, j in formats.items()]) - else: - return "" + else: + text = "(unknown)" + if text in formats_count: + formats_count[text] += 1 + else: + formats_count[text] = 1 + formats_order.append(text) + formats = [] + for format in formats_order: + format = RELEASE_FORMATS.get(format, format) + count = formats_count[format] + if count > 1: + format = str(count) + u"×" + format + formats.append(format) + return " + ".join(formats) def track_to_metadata(node, track, config): From 794154ac569188fbca1e6088e22a326271ce03df Mon Sep 17 00:00:00 2001 From: Michael Wiencek Date: Sun, 11 Dec 2011 16:27:10 -0600 Subject: [PATCH 3/3] Get the count before the translation (oops) --- picard/mbxml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/picard/mbxml.py b/picard/mbxml.py index 873f59b9f..2efcf6ff7 100644 --- a/picard/mbxml.py +++ b/picard/mbxml.py @@ -188,8 +188,8 @@ def media_formats_from_node(node): formats_order.append(text) formats = [] for format in formats_order: - format = RELEASE_FORMATS.get(format, format) count = formats_count[format] + format = RELEASE_FORMATS.get(format, format) if count > 1: format = str(count) + u"×" + format formats.append(format)