Swap 'title' and 'releaseTitle' meaning

- Trasparent change: now it makes more sense.
- Updated tests to reflect 'title', 'releaseTitle' meaning swap.
- Improved documentation.

Signed-off-by: JoeLametta <JoeLametta@users.noreply.github.com>
This commit is contained in:
JoeLametta
2021-05-15 14:03:28 +00:00
parent e6d9838148
commit e4645dfdd3
6 changed files with 32 additions and 26 deletions

View File

@@ -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

View File

@@ -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 = \

View File

@@ -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))

View File

@@ -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(

View File

@@ -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

View File

@@ -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,