]> kaliko git repositories - mpd-sima.git/commitdiff
Deal with multi-tag for musicbrainz_albumartistid and albumartist
authorkaliko <kaliko@azylum.org>
Sat, 6 Dec 2014 13:42:27 +0000 (14:42 +0100)
committerkaliko <kaliko@azylum.org>
Sat, 6 Dec 2014 13:42:27 +0000 (14:42 +0100)
sima/lib/meta.py
sima/lib/track.py
tests/test_track.py

index 949b5562a791385c534babb097f0e1430d256e3a..9265c3cddfe6103e36eb80d3203317295fa2aae7 100644 (file)
@@ -68,6 +68,11 @@ class Meta:
         return bool(self.name)
 
 class Album(Meta):
         return bool(self.name)
 
 class Album(Meta):
+    """Info:
+    If a class that overrides __eq__() needs to retain the implementation of
+    __hash__() from a parent class, the interpreter must be told this explicitly
+    by setting __hash__ = <ParentClass>.__hash__.
+    """
     __hash__ = Meta.__hash__
 
     def __init__(self, **kwargs):
     __hash__ = Meta.__hash__
 
     def __init__(self, **kwargs):
index 3926c4d97c628541128aa7470054edcc9c9c1926..6c2835146dc9c90021c20d67e249245dee07af93 100644 (file)
@@ -46,7 +46,6 @@ class Track:
                                  'musicbrainz_artistid',
                                  'musicbrainz_albumartistid']
         #  have tags been collapsed?
                                  'musicbrainz_artistid',
                                  'musicbrainz_albumartistid']
         #  have tags been collapsed?
-        self.collapse_tags_bool = False
         self.collapsed_tags = list()
         # Needed for multiple tags which returns a list instead of a string
         self.collapse_tags()
         self.collapsed_tags = list()
         # Needed for multiple tags which returns a list instead of a string
         self.collapse_tags()
@@ -60,7 +59,6 @@ class Track:
             if tag not in self.tags_to_collapse:
                 continue
             if isinstance(value, list):
             if tag not in self.tags_to_collapse:
                 continue
             if isinstance(value, list):
-                self.collapse_tags_bool = True
                 self.collapsed_tags.append(tag)
                 self.__dict__.update({tag: ', '.join(set(value))})
 
                 self.collapsed_tags.append(tag)
                 self.__dict__.update({tag: ', '.join(set(value))})
 
@@ -133,10 +131,10 @@ class Track:
         name = self.artist
         mbid = self.musicbrainz_artistid
         if self.albumartist and self.albumartist != 'Various Artists':
         name = self.artist
         mbid = self.musicbrainz_artistid
         if self.albumartist and self.albumartist != 'Various Artists':
-            name = self.albumartist
+            name = self.albumartist.split(', ')[0]
         if (self.musicbrainz_albumartistid and
             self.musicbrainz_albumartistid != '89ad4ac3-39f7-470e-963a-56509c546377'):
         if (self.musicbrainz_albumartistid and
             self.musicbrainz_albumartistid != '89ad4ac3-39f7-470e-963a-56509c546377'):
-            mbid = self.musicbrainz_albumartistid
+            mbid = self.musicbrainz_albumartistid.split(', ')[0]
         return Artist(name=name, mbid=mbid)
 
 # VIM MODLINE
         return Artist(name=name, mbid=mbid)
 
 # VIM MODLINE
index 28487b7f12ec22fa2c851888b4c80132722a1ec9..b572221a3f2c214a42be23f6877f9ea27e80fae3 100644 (file)
@@ -11,7 +11,7 @@ DEVOLT = {
   'artist': 'Devolt',
   'date': '2011-12-01',
   'disc': '1/1',
   'artist': 'Devolt',
   'date': '2011-12-01',
   'disc': '1/1',
-  'file': 'gberret.music/Devolt/2011-Grey/03-Devolt - Crazy.mp3',
+  'file': 'music/Devolt/2011-Grey/03-Devolt - Crazy.mp3',
   'last-modified': '2012-04-02T20:48:59Z',
   'musicbrainz_albumartistid': 'd8e7e3e2-49ab-4f7c-b148-fc946d521f99',
   'musicbrainz_albumid': 'ea2ef2cf-59e1-443a-817e-9066e3e0be4b',
   'last-modified': '2012-04-02T20:48:59Z',
   'musicbrainz_albumartistid': 'd8e7e3e2-49ab-4f7c-b148-fc946d521f99',
   'musicbrainz_albumid': 'ea2ef2cf-59e1-443a-817e-9066e3e0be4b',
@@ -26,8 +26,10 @@ class TestTrackObject(unittest.TestCase):
 
     def test_tagcollapse(self):
         trk = Track(**DEVOLT)
 
     def test_tagcollapse(self):
         trk = Track(**DEVOLT)
-        self.assertTrue(trk.collapse_tags_bool, 'Should have collapsed a tag')
+        self.assertTrue(trk.collapsed_tags, 'Should have collapsed a tag')
         self.assertFalse(isinstance(trk.albumartist, list), 'Failed to collapse albumartist tag')
         self.assertFalse(isinstance(trk.albumartist, list), 'Failed to collapse albumartist tag')
+        self.assertTrue(trk.get_artist().name in DEVOLT.get('albumartist'),
+                        'Failed to split multiple tag?')
 
     def test_boolean_type(self):
         self.assertFalse(bool(Track()))
 
     def test_boolean_type(self):
         self.assertFalse(bool(Track()))