From 0d7e0d686403af48de273e2d4252a9155b5be5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Wei=C3=9Fl?= Date: Sat, 11 Aug 2012 13:56:36 +0200 Subject: [PATCH] Only store one identical language (PICARD-242). Can happen if a recording is linked to >=2 works with the same language. Fixup 835fa46. --- picard/mbxml.py | 2 +- picard/metadata.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/picard/mbxml.py b/picard/mbxml.py index 2dbe5caeb..185ba5fb1 100644 --- a/picard/mbxml.py +++ b/picard/mbxml.py @@ -252,7 +252,7 @@ def recording_to_metadata(node, track, config): def work_to_metadata(work, m, config): m.add("musicbrainz_workid", work.attribs['id']) if 'language' in work.children: - m.add("language", work.language[0].text) + m.add_unique("language", work.language[0].text) if 'relation_list' in work.children: _relations_to_metadata(work.relation_list, m, config) diff --git a/picard/metadata.py b/picard/metadata.py index db46361b5..0fce6c07c 100644 --- a/picard/metadata.py +++ b/picard/metadata.py @@ -199,6 +199,10 @@ class Metadata(object): if value or value == 0: self._items.setdefault(name, []).append(value) + def add_unique(self, name, value): + if value not in self.getall(name): + self.add(name, value) + def keys(self): return self._items.keys()