[SCM] morituri/master: * morituri/common/musicbrainzngs.py: Get the artist credit for a track/album; Fixes Gorky - Gorky.

js at users.alioth.debian.org js at users.alioth.debian.org
Sun Oct 19 20:09:38 UTC 2014


The following commit has been merged in the master branch:
commit 61a5d2432f195f51b5aed172a8248a02ac0d4366
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date:   Sat Jan 21 18:05:26 2012 +0000

    	* morituri/common/musicbrainzngs.py:
    	  Get the artist credit for a track/album; Fixes Gorky - Gorky.

diff --git a/ChangeLog b/ChangeLog
index 5ac296a..ec62ae5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2012-01-21  Thomas Vander Stichele  <thomas at apestaart dot org>
 
+	* morituri/common/musicbrainzngs.py:
+	  Get the artist credit for a track/album; Fixes Gorky - Gorky.
+
+2012-01-21  Thomas Vander Stichele  <thomas at apestaart dot org>
+
 	* morituri/common/checksum.py:
 	* morituri/common/program.py:
 	  Fix/add logging.
diff --git a/morituri/common/musicbrainzngs.py b/morituri/common/musicbrainzngs.py
index e596548..783ce06 100644
--- a/morituri/common/musicbrainzngs.py
+++ b/morituri/common/musicbrainzngs.py
@@ -105,7 +105,11 @@ def _getMetadata(release, discid):
         log.warning('musicbrainzngs', 'artist-credit more than 1: %r',
             release['artist-credit'])
 
-    artist = release['artist-credit'][0]['artist']
+    credit = release['artist-credit']
+
+    artist = credit[0]['artist']
+    albumArtistName = credit[0].get(
+        'name', credit[0]['artist'].get('name', None))
 
     # FIXME: is there a better way to check for VA
     metadata.various = False
@@ -114,7 +118,7 @@ def _getMetadata(release, discid):
     isSingleArtist = not metadata.various
 
     # getUniqueName gets disambiguating names like Muse (UK rock band)
-    metadata.artist = artist['name']
+    metadata.artist = albumArtistName
     metadata.sortName = artist['sort-name']
     # FIXME: is format str ?
     if not release.has_key('date'):
@@ -146,20 +150,25 @@ def _getMetadata(release, discid):
                 metadata.title = title
                 for t in medium['track-list']:
                     track = TrackMetadata()
+                    if len(t['recording']['artist-credit']) > 1:
+                        # FIXME: do something sensible for multiple artists
+                        log.warning('musicbrainzngs', 'artist-credit more than 1: %r',
+                            t['recording']['artist-credit'])
+
+
+                    credit = t['recording']['artist-credit']
+                    trackArtistName = credit[0].get(
+                        'name', credit[0]['artist'].get('name', None))
 
-                    if isSingleArtist or not t['recording'].has_key('artist-credit'):
+                    if not artist:
                         track.artist = metadata.artist
                         track.sortName = metadata.sortName
                         track.mbidArtist = metadata.mbidArtist
                     else:
                         # various artists discs can have tracks with no artist
-                        if len(t['recording']['artist-credit']) > 1:
-                            log.warning('musicbrainzngs', 'artist-credit more than 1: %r',
-                                t['recording']['artist-credit'])
-                        artist = t['recording']['artist-credit'][0]['artist']
-                        track.artist = artist and artist['name'] or metadata.artist.name
-                        track.sortName = artist and artist['sort-name'] or metadata.artist.sortName
-                        track.mbidArtist = artist and artist['id'] or metadata.artist.mbid
+                        track.artist = trackArtistName
+                        track.sortName = artist['sort-name']
+                        track.mbidArtist = artist['id']
 
                     track.title = t['recording']['title']
                     track.mbid = t['recording']['id']

-- 
morituri packaging



More information about the pkg-multimedia-commits mailing list