diff --git a/man/whipper-cd-rip.rst b/man/whipper-cd-rip.rst index af2a0b9..d85417f 100644 --- a/man/whipper-cd-rip.rst +++ b/man/whipper-cd-rip.rst @@ -96,7 +96,8 @@ Template schemes | - %S: release sort name | - %B: release barcode | - %C: release catalog number -| - %d: disc title +| - %d: release title (with disambiguation) +| - %D: disc title (without disambiguation) | - %y: release year | - %r: release type, lowercase | - %R: release type, normal case diff --git a/whipper/command/cd.py b/whipper/command/cd.py index 32f95f7..f8bd3e5 100644 --- a/whipper/command/cd.py +++ b/whipper/command/cd.py @@ -56,7 +56,8 @@ disc and track template are: - %S: release sort name - %B: release barcode - %C: release catalog number - - %d: disc title + - %d: release title (with disambiguation) + - %D: disc title (without disambiguation) - %y: release year - %r: release type, lowercase - %R: release type, normal case @@ -187,7 +188,7 @@ class _CD(BaseCommand): and self.program.metadata.artist \ or 'Unknown Artist' self.program.result.title = self.program.metadata \ - and self.program.metadata.title \ + and self.program.metadata.releaseTitle \ or 'Unknown Title' _, self.program.result.vendor, self.program.result.model, \ self.program.result.release = \ diff --git a/whipper/command/mblookup.py b/whipper/command/mblookup.py index 967a699..89d2473 100644 --- a/whipper/command/mblookup.py +++ b/whipper/command/mblookup.py @@ -26,7 +26,7 @@ Example Disc ID: KnpGsLhvH.lPrNc1PBL21lb9Bg4-""" :type md: `DiscMetadata` """ print(' Artist: %s' % md.artist.encode('utf-8')) - print(' Title: %s' % md.title.encode('utf-8')) + print(' Title: %s' % md.releaseTitle.encode('utf-8')) print(' Type: %s' % str(md.releaseType).encode('utf-8')) print(' URL: %s' % md.url) print(' Tracks: %d' % len(md.tracks)) diff --git a/whipper/common/mbngs.py b/whipper/common/mbngs.py index 507defe..850b15a 100644 --- a/whipper/common/mbngs.py +++ b/whipper/common/mbngs.py @@ -66,8 +66,10 @@ class DiscMetadata: :cvar sortName: release artist sort name :cvar release: earliest release date, in YYYY-MM-DD :vartype release: str - :cvar title: title of the disc (with disambiguation) - :cvar releaseTitle: title of the release (without disambiguation) + :cvar title: title of the disc (without disambiguation) + :vartype title: str or None + :cvar releaseTitle: title of the release (with disambiguation) + :vartype releasetitle: str or None :vartype tracks: list of :any:`TrackMetadata` :cvar countries: MusicBrainz release countries :vartype countries: list or None @@ -285,17 +287,17 @@ def _getMetadata(release, discid=None, country=None): for medium in release['medium-list']: for disc in medium['disc-list']: if discid is None or disc['id'] == discid: - title = release['title'] - discMD.releaseTitle = title + discMD.title = release['title'] + discMD.releaseTitle = releaseTitle = discMD.title if 'disambiguation' in release: - title += " (%s)" % release['disambiguation'] + releaseTitle += " (%s)" % release['disambiguation'] count = len(release['medium-list']) if count > 1: - title += ' (Disc %d of %d)' % ( + releaseTitle += ' (Disc %d of %d)' % ( int(medium['position']), count) if 'title' in medium: - title += ": %s" % medium['title'] - discMD.title = title + releaseTitle += ": %s" % medium['title'] + discMD.releaseTitle = releaseTitle for t in medium['track-list']: track = TrackMetadata() trackCredit = _Credit( diff --git a/whipper/common/program.py b/whipper/common/program.py index 60a375f..9d14d57 100644 --- a/whipper/common/program.py +++ b/whipper/common/program.py @@ -178,7 +178,8 @@ class Program: * ``%S``: release artist sort name * ``%B``: release barcode * ``%C``: release catalog number - * ``%d``: disc title + * ``%d``: release title (with disambiguation) + * ``%D``: disc title (without disambiguation) * ``%y``: release year * ``%r``: release type, lowercase * ``%R``: release type, normal case @@ -189,7 +190,7 @@ class Program: assert isinstance(template, str), "%r is not str" % template v = {} v['A'] = 'Unknown Artist' - v['d'] = mbdiscid # fallback for title + v['d'] = v['D'] = mbdiscid # fallback for title v['r'] = 'unknown' v['R'] = 'Unknown' v['B'] = '' # barcode @@ -210,7 +211,8 @@ class Program: v['y'] = release[:4] v['A'] = metadata.artist v['S'] = metadata.sortName - v['d'] = metadata.title + v['d'] = metadata.releaseTitle + v['D'] = metadata.title v['B'] = metadata.barcode v['C'] = metadata.catalogNumber if metadata.releaseType: @@ -318,7 +320,7 @@ class Program: for metadata in metadatas: print('\nArtist : %s' % metadata.artist) - print('Title : %s' % metadata.title) + print('Title : %s' % metadata.releaseTitle) print('Duration: %s' % common.formatTime( metadata.duration / 1000.0)) print('URL : %s' % metadata.url) @@ -358,7 +360,7 @@ class Program: if len(metadatas) == 1: logger.info('picked requested release id %s', release) print('Artist: %s' % metadatas[0].artist) - print('Title : %s' % metadatas[0].title) + print('Title : %s' % metadatas[0].releaseTitle) elif not metadatas: logger.warning("requested release id '%s', but none of " "the found releases match", release) @@ -370,16 +372,16 @@ class Program: # If we have multiple, make sure they match if len(metadatas) > 1: artist = metadatas[0].artist - releaseTitle = metadatas[0].releaseTitle + discTitle = metadatas[0].title for i, metadata in enumerate(metadatas): if not artist == metadata.artist: logger.warning("artist 0: %r and artist %d: %r are " "not the same", artist, i, metadata.artist) - if not releaseTitle == metadata.releaseTitle: + if not discTitle == metadata.title: logger.warning("title 0: %r and title %d: %r are " - "not the same", releaseTitle, i, - metadata.releaseTitle) + "not the same", discTitle, i, + metadata.title) if not release and len(list(deltas)) > 1: logger.warning('picked closest match in duration. ' @@ -409,13 +411,13 @@ class Program: """ trackArtist = 'Unknown Artist' releaseArtist = 'Unknown Artist' - disc = 'Unknown Disc' + album = 'Unknown Album' title = 'Unknown Track' if self.metadata: trackArtist = self.metadata.artist releaseArtist = self.metadata.artist - disc = self.metadata.title + album = self.metadata.title # No disambiguation is proper here mbidRelease = self.metadata.mbid mbidReleaseGroup = self.metadata.mbidReleaseGroup mbidReleaseArtist = self.metadata.mbidArtist @@ -447,7 +449,7 @@ class Program: tags['ALBUMARTIST'] = releaseArtist tags['ARTIST'] = trackArtist tags['TITLE'] = title - tags['ALBUM'] = disc + tags['ALBUM'] = album tags['TRACKNUMBER'] = '%s' % number diff --git a/whipper/test/test_common_program.py b/whipper/test/test_common_program.py index 7856f55..1bc07a2 100644 --- a/whipper/test/test_common_program.py +++ b/whipper/test/test_common_program.py @@ -25,7 +25,7 @@ class PathTestCase(unittest.TestCase): prog = program.Program(config.Config()) md = mbngs.DiscMetadata() md.artist = md.sortName = 'Jeff Buckley' - md.title = 'Grace' + md.releaseTitle = 'Grace' path = prog.getPath('/tmp', DEFAULT_DISC_TEMPLATE, 'mbdiscid', md, 0) @@ -36,7 +36,7 @@ class PathTestCase(unittest.TestCase): prog = program.Program(config.Config()) md = mbngs.DiscMetadata() md.artist = md.sortName = 'Jeff Buckley' - md.title = 'Grace' + md.releaseTitle = 'Grace' path = prog.getPath('/tmp', '%A/%d', 'mbdiscid', md, 0) self.assertEqual(path,