* TODO:
* morituri/common/program.py: * morituri/rip/cd.py: Add rip cd rip --release-id as an option to select the exact release this disc is a part of. Fixes Radiohead - Pablo Honey and U2 - Achtung Baby
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
2012-01-23 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* TODO:
|
||||
* morituri/common/program.py:
|
||||
* morituri/rip/cd.py:
|
||||
Add rip cd rip --release-id as an option to select the exact
|
||||
release this disc is a part of.
|
||||
Fixes Radiohead - Pablo Honey and U2 - Achtung Baby
|
||||
|
||||
2012-01-22 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* morituri/rip/debug.py:
|
||||
|
||||
1
TODO
1
TODO
@@ -50,6 +50,5 @@ TODO:
|
||||
complain if it was, to not overwrite
|
||||
- if multiple releases with different artist match the disc id, stop and
|
||||
let user continue by choosing one
|
||||
- on multiple hits with different titles/disc numbers, ask user to choose by specifying first few letters of correct release/album id; redo radiohead - pablo honey
|
||||
- artist-credit-phrase fabricated by musicbrainzngs only looks at name, not at artist-credit->name (see e.g. Gorky)
|
||||
- getting cache results should depend on same drive/offset
|
||||
|
||||
@@ -223,7 +223,7 @@ class Program(log.Loggable):
|
||||
return None
|
||||
|
||||
|
||||
def getMusicBrainz(self, ittoc, mbdiscid):
|
||||
def getMusicBrainz(self, ittoc, mbdiscid, release=None):
|
||||
# look up disc on musicbrainz
|
||||
print 'Disc duration: %s' % common.formatTime(
|
||||
ittoc.duration() / 1000.0)
|
||||
@@ -272,6 +272,20 @@ class Program(log.Loggable):
|
||||
|
||||
# If we have multiple, make sure they match
|
||||
metadatas = deltas[lowest]
|
||||
|
||||
if release:
|
||||
metadatas = [m for m in metadatas if m.url.endswith(release)]
|
||||
self.debug('Asked for release %r, only kept %r',
|
||||
release, metadatas)
|
||||
if len(metadatas) == 1:
|
||||
print
|
||||
print 'Picked requested release id %s' % release
|
||||
print 'Artist : %s' % metadatas[0].artist.encode('utf-8')
|
||||
print 'Title : %s' % metadatas[0].title.encode('utf-8')
|
||||
elif not metadatas:
|
||||
print 'Requested release id %s but none match' % release
|
||||
return
|
||||
|
||||
if len(metadatas) > 1:
|
||||
artist = metadatas[0].artist
|
||||
releaseTitle = metadatas[0].releaseTitle
|
||||
@@ -289,8 +303,8 @@ class Program(log.Loggable):
|
||||
print
|
||||
print 'Picked closest match in duration.'
|
||||
print 'Others may be wrong in musicbrainz, please correct.'
|
||||
print 'Artist : %s' % artist
|
||||
print 'Title : %s' % metadatas[0].title
|
||||
print 'Artist : %s' % artist.encode('utf-8')
|
||||
print 'Title : %s' % metadatas[0].title.encode('utf-8')
|
||||
|
||||
# Select one of the returned releases. We just pick the first one.
|
||||
ret = metadatas[0]
|
||||
|
||||
@@ -81,6 +81,10 @@ filling in the variables and expanding the file extension. Variables are:
|
||||
action="store", dest="disc_template",
|
||||
help="template for disc file naming (default %default)",
|
||||
default=DEFAULT_DISC_TEMPLATE)
|
||||
self.parser.add_option('-R', '--release-id',
|
||||
action="store", dest="release",
|
||||
help="MusicBrainz release id to match to (if there are multiple)")
|
||||
|
||||
default = 'flac'
|
||||
|
||||
# here to avoid import gst eating our options
|
||||
@@ -95,8 +99,6 @@ filling in the variables and expanding the file extension. Variables are:
|
||||
action="store_true", dest="unknown",
|
||||
help="whether to continue ripping if the CD is unknown (%default)",
|
||||
default=False)
|
||||
default = 'flac'
|
||||
|
||||
|
||||
def handleOptions(self, options):
|
||||
options.track_template = options.track_template.decode('utf-8')
|
||||
@@ -148,7 +150,8 @@ See http://sourceforge.net/tracker/?func=detail&aid=604751&group_id=2171&atid=1
|
||||
|
||||
print "MusicBrainz lookup URL", ittoc.getMusicBrainzSubmitURL()
|
||||
|
||||
prog.metadata = prog.getMusicBrainz(ittoc, mbdiscid)
|
||||
prog.metadata = prog.getMusicBrainz(ittoc, mbdiscid,
|
||||
self.options.release)
|
||||
|
||||
if not prog.metadata:
|
||||
# fall back to FreeDB for lookup
|
||||
|
||||
Reference in New Issue
Block a user