Make use of get_tags more resilient

This commit is contained in:
Keith Edmunds 2024-06-17 16:31:23 +01:00
parent fe8537c9c1
commit a4174e84ce

View File

@ -84,7 +84,12 @@ class ReplaceFilesDialog(QDialog):
continue continue
rf = TrackFileData(new_file_path=new_file_path) rf = TrackFileData(new_file_path=new_file_path)
rf.tags = get_tags(new_file_path) rf.tags = get_tags(new_file_path)
if not rf.tags["title"] or not rf.tags["artist"]: if not (
"title" in rf.tags
and "artist" in rf.tags
and rf.tags["title"]
and rf.tags["artist"]
):
show_warning( show_warning(
parent=self.main_window, parent=self.main_window,
title="Error", title="Error",
@ -177,7 +182,9 @@ class ReplaceFilesDialog(QDialog):
for cbbn in candidates_by_basename: for cbbn in candidates_by_basename:
cbbn_tags = get_tags(cbbn.path) cbbn_tags = get_tags(cbbn.path)
if ( if (
cbbn_tags["title"].lower() == new_path_title.lower() "title" in cbbn_tags
and cbbn_tags["title"].lower() == new_path_title.lower()
and "artist" in cbbn_tags
and cbbn_tags["artist"].lower() == new_path_artist.lower() and cbbn_tags["artist"].lower() == new_path_artist.lower()
): ):
match_track = cbbn match_track = cbbn
@ -197,10 +204,13 @@ class ReplaceFilesDialog(QDialog):
if candidates_by_title: if candidates_by_title:
# Check artist tag # Check artist tag
for cbt in candidates_by_title: for cbt in candidates_by_title:
try:
cbt_artist = get_tags(cbt.path)["artist"] cbt_artist = get_tags(cbt.path)["artist"]
if cbt_artist.lower() == new_path_artist.lower(): if cbt_artist.lower() == new_path_artist.lower():
match_track = cbt match_track = cbt
break break
except FileNotFoundError:
return None
return match_track return match_track