Skip to content

Commit 29a89df

Browse files
committed
pdbprovider: handle broken db sort column lookup
1 parent 95f88c8 commit 29a89df

1 file changed

Lines changed: 24 additions & 20 deletions

File tree

prodj/data/pdbprovider.py

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -222,26 +222,30 @@ def convert_and_sort_track_list(self, db, track_list, sort_mode):
222222
else:
223223
col2_name = sort_mode
224224
for track in track_list:
225-
if col2_name in ["title", "artist"]:
226-
col2_item = db.get_artist(track.artist_id).name if track.artist_id > 0 else ""
227-
elif col2_name == "album":
228-
col2_item = db.get_album(track.album_id).name if track.album_id > 0 else ""
229-
elif col2_name == "genre":
230-
col2_item = db.get_genre(track.genre_id).name if track.genre_id > 0 else ""
231-
elif col2_name == "label":
232-
col2_item = db.get_label(track.label_id).name if track.label_id > 0 else ""
233-
elif col2_name == "original_artist":
234-
col2_item = db.get_artist(track.original_artist_id).name if track.original_artist_id > 0 else ""
235-
elif col2_name == "remixer":
236-
col2_item = db.get_artist(track.remixer_id).name if track.remixer_id > 0 else ""
237-
elif col2_name == "key":
238-
col2_item = db.get_key(track.key_id).name if track.key_id > 0 else ""
239-
elif col2_name == "bpm":
240-
col2_item = track.bpm_100/100
241-
elif col2_name in ["rating", "comment", "duration", "bitrate", "play_count"]: # 1:1 mappings
242-
col2_item = track[col2_name]
243-
else:
244-
raise dataprovider.FatalQueryError("unknown sort mode {}".format(sort_mode))
225+
try:
226+
if col2_name in ["title", "artist"]:
227+
col2_item = db.get_artist(track.artist_id).name if track.artist_id > 0 else ""
228+
elif col2_name == "album":
229+
col2_item = db.get_album(track.album_id).name if track.album_id > 0 else ""
230+
elif col2_name == "genre":
231+
col2_item = db.get_genre(track.genre_id).name if track.genre_id > 0 else ""
232+
elif col2_name == "label":
233+
col2_item = db.get_label(track.label_id).name if track.label_id > 0 else ""
234+
elif col2_name == "original_artist":
235+
col2_item = db.get_artist(track.original_artist_id).name if track.original_artist_id > 0 else ""
236+
elif col2_name == "remixer":
237+
col2_item = db.get_artist(track.remixer_id).name if track.remixer_id > 0 else ""
238+
elif col2_name == "key":
239+
col2_item = db.get_key(track.key_id).name if track.key_id > 0 else ""
240+
elif col2_name == "bpm":
241+
col2_item = track.bpm_100/100
242+
elif col2_name in ["rating", "comment", "duration", "bitrate", "play_count"]: # 1:1 mappings
243+
col2_item = track[col2_name]
244+
else:
245+
raise dataprovider.FatalQueryError("unknown sort mode {}".format(sort_mode))
246+
except KeyError as e:
247+
logging.warning(f'Broken database: {e}')
248+
col2_item = "?"
245249
converted += [{
246250
"title": track.title,
247251
col2_name: col2_item,

0 commit comments

Comments
 (0)