diff --git a/picard/mbxml.py b/picard/mbxml.py index e839857e6..1fbbf1525 100644 --- a/picard/mbxml.py +++ b/picard/mbxml.py @@ -205,6 +205,19 @@ def artist_credit_to_metadata(node, m, release=False): m["~artists_sort"] = artistsort +def country_list_from_node(node): + # Extracts iso_3166_1_codes for all countries in `release_event_list` + if "release_event_list" in node.children: + country = [] + for re in node.release_event_list[0].release_event: + try: + country.append( + re.area[0].iso_3166_1_code_list[0].iso_3166_1_code[0].text) + except AttributeError: + pass + return country + + def label_info_from_node(node): labels = [] catalog_numbers = [] diff --git a/picard/ui/searchdialog.py b/picard/ui/searchdialog.py index c1d837d6b..f3036bea5 100644 --- a/picard/ui/searchdialog.py +++ b/picard/ui/searchdialog.py @@ -406,18 +406,9 @@ class TrackSearchDialog(SearchDialog): release_to_metadata(rel_node, track) rg_node = rel_node.release_group[0] release_group_to_metadata(rg_node, track) - if "release_event_list" in rel_node.children: - # Extract contries list from `release_event_list` element - # Don't use `country` element as it contains information of a single release - # event and is basically for backward compatibility. - country = [] - for re in rel_node.release_event_list[0].release_event: - try: - country.append( - re.area[0].iso_3166_1_code_list[0].iso_3166_1_code[0].text) - except AttributeError: - pass - track["country"] = ", ".join(country) + countries = country_list_from_node(rel_node) + if countries: + track["country"] = ", ".join(countries) self.search_results.append((track, node)) else: # This handles the case when no release is associated with a track