Skip to content

Commit

Permalink
Fix error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
samj1912 committed Jul 16, 2017
1 parent d129d5b commit 4c7857d
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 30 deletions.
1 change: 1 addition & 0 deletions picard/acoustid/json_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def _make_artist_credit_node(artists):
def parse_recording(recording):
if 'title' not in recording: # we have no metadata for this recording
return

recording_mb = {
'id': recording['id'],
'title': recording['title'],
Expand Down
2 changes: 1 addition & 1 deletion picard/album.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ def _release_request_finished(self, document, http, error):
else:
try:
parsed = self._parse_release(document)
except:
except Exception as e:
error = True
self.error_append(traceback.format_exc())
finally:
Expand Down
2 changes: 1 addition & 1 deletion picard/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def _lookup_finished(self, document, http, error):

try:
releases = document['releases']
except (AttributeError, IndexError):
except (KeyError, TypeError):
releases = None

mparms = {
Expand Down
24 changes: 12 additions & 12 deletions picard/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
from picard.const import QUERY_LIMIT
from picard import PICARD_APP_NAME


class File(QtCore.QObject, Item):

metadata_images_changed = QtCore.pyqtSignal()
Expand Down Expand Up @@ -579,9 +580,8 @@ def _lookup_finished(self, lookuptype, document, http, error):
tracks = document['recordings']
elif lookuptype == "acoustid":
tracks = document['recordings']
except Exception as e:
except (KeyError, TypeError):
tracks = None
log.debug(e)

# no matches
if not tracks:
Expand All @@ -597,21 +597,21 @@ def _lookup_finished(self, lookuptype, document, http, error):
match = sorted((self.metadata.compare_to_track(
track, self.comparison_weights) for track in tracks),
reverse=True, key=itemgetter(0))[0]
if lookuptype != 'acoustid':
threshold = config.setting['file_lookup_threshold']
if match[0] < threshold:
self.tagger.window.set_statusbar_message(
N_("No matching tracks above the threshold for file '%(filename)s'"),
{'filename': self.filename},
timeout=3000
)
self.clear_pending()
return
if lookuptype != 'acoustid' and match[0] < config.setting['file_lookup_threshold']:
self.tagger.window.set_statusbar_message(
N_("No matching tracks above the threshold for file '%(filename)s'"),
{'filename': self.filename},
timeout=3000
)
self.clear_pending()
return

self.tagger.window.set_statusbar_message(
N_("File '%(filename)s' identified!"),
{'filename': self.filename},
timeout=3000
)

self.clear_pending()

rg, release, track = match[1:]
Expand Down
8 changes: 7 additions & 1 deletion picard/releasegroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,13 @@ def _parse_versions(self, document):
"catnum": N_('Cat No'),
}
extrakeys = ("packaging", "barcode", "disambiguation")
for node in document['releases']:

try:
releases = document['releases']
except (TypeError, KeyError):
releases = []

for node in releases:
labels, catnums = label_info_from_node(node['label-info'])

countries = country_list_from_node(node)
Expand Down
29 changes: 15 additions & 14 deletions picard/ui/searchdialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ def handle_reply(self, document, http, error):

try:
tracks = document['recordings']
except Exception:
except (KeyError, TypeError):
self.no_results_found()
return

Expand All @@ -393,7 +393,7 @@ def handle_reply(self, document, http, error):
tracks = [item[3] for item in sorted_results]

del self.search_results[:] # Clear existing data
self.parse_tracks_from_xml(tracks)
self.parse_tracks(tracks)
self.display_results()

def display_results(self):
Expand All @@ -410,8 +410,8 @@ def display_results(self):
self.table.setItem(row, 5, table_item(track.get("country", "")))
self.table.setItem(row, 6, table_item(track.get("releasetype", "")))

def parse_tracks_from_xml(self, tracks_xml):
for node in tracks_xml:
def parse_tracks(self, tracks):
for node in tracks:
if "releases" in node:
for rel_node in node['releases']:
track = Metadata()
Expand Down Expand Up @@ -568,12 +568,12 @@ def handle_reply(self, document, http, error):

try:
releases = document['releases']
except Exception:
except (KeyError, TypeError):
self.no_results_found()
return

del self.search_results[:]
self.parse_releases_from_xml(releases)
self.parse_releases(releases)
self.display_results()
self.fetch_coverarts()

Expand Down Expand Up @@ -645,19 +645,20 @@ def _cover_downloaded(self, row, data, http, error):
try:
pixmap.loadFromData(data)
cover_cell.update(pixmap)
except Exception:
except Exception as e:
cover_cell.not_found()
log.debug(e)

def parse_releases_from_xml(self, release_xml):
for node in release_xml:
def parse_releases(self, releases):
for node in releases:
release = Metadata()
release_to_metadata(node, release)
rg_node = node['release-group']
release_group_to_metadata(rg_node, release)
if "media" in node:
media = node['media']
release["format"] = media_formats_from_node(media)
release["tracks"] = media[0]['track-count']
release["tracks"] = node['track-count']
countries = country_list_from_node(node)
if countries:
release["country"] = ", ".join(countries)
Expand Down Expand Up @@ -762,16 +763,16 @@ def handle_reply(self, document, http, error):

try:
artists = document['artists']
except Exception:
except (KeyError, TypeError):
self.no_results()
return

del self.search_results[:]
self.parse_artists_from_xml(artists)
self.parse_artists(artists)
self.display_results()

def parse_artists_from_xml(self, artist_xml):
for node in artist_xml:
def parse_artists(self, artists):
for node in artists:
artist = Metadata()
artist_to_metadata(node, artist)
self.search_results.append(artist)
Expand Down
2 changes: 1 addition & 1 deletion picard/webservice/api_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ def _find(self, entitytype, handler, **kwargs):
value = escape_lucene_query(value).strip().lower()
if value:
query.append('%s:(%s)' % (name, value))
query = ''.join(query)
query = ' '.join(query)

if query:
filters.append(("query", query))
Expand Down

0 comments on commit 4c7857d

Please sign in to comment.