diff --git a/picard/album.py b/picard/album.py index e5441935f..e5e4dd6bb 100644 --- a/picard/album.py +++ b/picard/album.py @@ -364,9 +364,9 @@ class Album(DataObject, Item): self.status = _("[loading album information]") if self.release_group: self.release_group.loaded = False - self.release_group.folksonomy_tags.clear() + self.release_group.genres.clear() self.metadata.clear() - self.folksonomy_tags.clear() + self.genres.clear() self.update() self._new_metadata = Metadata() self._new_tracks = [] diff --git a/picard/dataobj.py b/picard/dataobj.py index e2656867f..7047449d2 100644 --- a/picard/dataobj.py +++ b/picard/dataobj.py @@ -26,11 +26,11 @@ class DataObject(LockableObject): def __init__(self, obj_id): super().__init__() self.id = obj_id - self.folksonomy_tags = {} + self.genres = {} self.item = None - def add_folksonomy_tag(self, name, count): - self.folksonomy_tags[name] = self.folksonomy_tags.get(name, 0) + count + def add_genre(self, name, count): + self.genres[name] = self.genres.get(name, 0) + count def set_genre_inc_params(self, inc): require_authentication = False @@ -44,6 +44,6 @@ class DataObject(LockableObject): return require_authentication @staticmethod - def merge_folksonomy_tags(this, that): + def merge_genres(this, that): for name, count in that.items(): this[name] = this.get(name, 0) + count diff --git a/picard/mbjson.py b/picard/mbjson.py index 581b31e4c..486d41a4a 100644 --- a/picard/mbjson.py +++ b/picard/mbjson.py @@ -496,7 +496,7 @@ def add_genres(node, obj): key = tag['name'] count = tag['count'] if key: - obj.add_folksonomy_tag(key, count) + obj.add_genre(key, count) def add_user_genres(node, obj): @@ -504,7 +504,7 @@ def add_user_genres(node, obj): for tag in node: key = tag['name'] if key: - obj.add_folksonomy_tag(key, 1) + obj.add_genre(key, 1) def add_isrcs_to_metadata(node, metadata): diff --git a/picard/track.py b/picard/track.py index a99d80a35..f81b996e9 100644 --- a/picard/track.py +++ b/picard/track.py @@ -199,18 +199,18 @@ class Track(DataObject, Item): def _convert_folksonomy_tags_to_genre(self): # Combine release and track tags - tags = dict(self.folksonomy_tags) - self.merge_folksonomy_tags(tags, self.album.folksonomy_tags) + tags = dict(self.genres) + self.merge_genres(tags, self.album.genres) if self.album.release_group: - self.merge_folksonomy_tags(tags, self.album.release_group.folksonomy_tags) + self.merge_genres(tags, self.album.release_group.genres) if not tags and config.setting['artists_genres']: # For compilations use each track's artists to look up tags if self.metadata['musicbrainz_albumartistid'] == VARIOUS_ARTISTS_ID: for artist in self._track_artists: - self.merge_folksonomy_tags(tags, artist.folksonomy_tags) + self.merge_genres(tags, artist.genres) else: for artist in self.album.get_album_artists(): - self.merge_folksonomy_tags(tags, artist.folksonomy_tags) + self.merge_genres(tags, artist.genres) # Ignore tags with zero or lower score tags = dict((name, count) for name, count in tags.items() if count > 0) if not tags: diff --git a/test/test_dataobj.py b/test/test_dataobj.py index 63c388c47..945b7738c 100644 --- a/test/test_dataobj.py +++ b/test/test_dataobj.py @@ -52,3 +52,20 @@ class DataObjectTest(PicardTestCase): require_auth = self.obj.set_genre_inc_params(inc) self.assertIn('user-tags', inc) self.assertTrue(require_auth) + + def test_add_genres(self): + self.obj.add_genre('genre1', 2) + self.assertEqual(self.obj.genres['genre1'], 2) + self.obj.add_genre('genre1', 5) + self.assertEqual(self.obj.genres['genre1'], 7) + + def test_merge_genres(self): + genres1 = {'a': 2, 'b': 7} + genres2 = {'b': 4, 'c': 3} + DataObject.merge_genres(genres1, genres2) + self.assertEqual(genres1['a'], 2) + self.assertEqual(genres1['b'], 11) + self.assertEqual(genres1['c'], 3) + self.assertNotIn('a', genres2) + self.assertEqual(genres2['b'], 4) + self.assertEqual(genres2['c'], 3) diff --git a/test/test_mbjson.py b/test/test_mbjson.py index ddcb041dc..c56f2a187 100644 --- a/test/test_mbjson.py +++ b/test/test_mbjson.py @@ -65,7 +65,7 @@ class ReleaseTest(MBJSONTest): self.assertEqual(m['~albumartists'], 'Pink Floyd') self.assertEqual(m['~albumartists_sort'], 'Pink Floyd') self.assertEqual(m['~releaselanguage'], 'eng') - self.assertEqual(a.folksonomy_tags, { + self.assertEqual(a.genres, { 'genre1': 6, 'genre2': 3, 'tag1': 6, 'tag2': 3 }) @@ -248,7 +248,7 @@ class ReleaseGroupTest(MBJSONTest): self.assertEqual(m['releasetype'], 'album') self.assertEqual(m['~primaryreleasetype'], 'album') self.assertEqual(m['~releasegroup'], 'The Dark Side of the Moon') - self.assertEqual(r.folksonomy_tags, {'test2': 3, 'test': 6}) + self.assertEqual(r.genres, {'test2': 3, 'test': 6}) class NullReleaseGroupTest(MBJSONTest):