@@ -311,16 +311,18 @@ class AccurateRipChecksumTask(ChecksumTask):
|
||||
self.debug('skipping frame %d', self._discFrameCounter)
|
||||
return checksum
|
||||
|
||||
# self._bytes is updated after do_checksum_buffer
|
||||
factor = self._bytes / 4 + 1
|
||||
values = struct.unpack("<%dI" % (len(buf) / 4), buf)
|
||||
for i, value in enumerate(values):
|
||||
# self._bytes is updated after do_checksum_buffer
|
||||
checksum += (self._bytes / 4 + i + 1) * value
|
||||
checksum &= 0xFFFFFFFF
|
||||
for value in values:
|
||||
checksum += factor * value
|
||||
factor += 1
|
||||
# offset = self._bytes / 4 + i + 1
|
||||
# if offset % common.SAMPLES_PER_FRAME == 0:
|
||||
# print 'frame %d, ends before %d, last value %08x, CRC %08x' % (
|
||||
# offset / common.SAMPLES_PER_FRAME, offset, value, sum)
|
||||
|
||||
checksum &= 0xFFFFFFFF
|
||||
return checksum
|
||||
|
||||
|
||||
|
||||
@@ -479,7 +479,7 @@ class Program(log.Loggable):
|
||||
# gst-python 0.10.15.1 does not handle unicode -> utf8 string
|
||||
# conversion
|
||||
# see http://bugzilla.gnome.org/show_bug.cgi?id=584445
|
||||
if self.metadata and self.metadata.various:
|
||||
if self.metadata and not self.metadata.various:
|
||||
ret["album-artist"] = albumArtist.encode('utf-8')
|
||||
ret[gst.TAG_ARTIST] = trackArtist.encode('utf-8')
|
||||
ret[gst.TAG_TITLE] = title.encode('utf-8')
|
||||
|
||||
@@ -79,7 +79,10 @@ class Image(object, log.Loggable):
|
||||
|
||||
# CD's have a standard lead-in time of 2 seconds;
|
||||
# checksums that use it should add it there
|
||||
offset = self.cue.table.tracks[0].getIndex(1).relative
|
||||
if verify.lengths.has_key(0):
|
||||
offset = verify.lengths[0]
|
||||
else:
|
||||
offset = self.cue.table.tracks[0].getIndex(1).relative
|
||||
|
||||
tracks = []
|
||||
|
||||
@@ -211,6 +214,18 @@ class ImageVerifyTask(log.Loggable, task.MultiSeparateTask):
|
||||
self._tasks = []
|
||||
self.lengths = {}
|
||||
|
||||
try:
|
||||
htoa = cue.table.tracks[0].indexes[0]
|
||||
track = cue.table.tracks[0]
|
||||
path = image.getRealPath(htoa.path)
|
||||
assert type(path) is unicode, "%r is not unicode" % path
|
||||
self.debug('schedule scan of audio length of %r', path)
|
||||
taskk = AudioLengthTask(path)
|
||||
self.addTask(taskk)
|
||||
self._tasks.append((0, track, taskk))
|
||||
except (KeyError, IndexError):
|
||||
self.debug('no htoa track')
|
||||
|
||||
for trackIndex, track in enumerate(cue.table.tracks):
|
||||
self.debug('verifying track %d', trackIndex + 1)
|
||||
index = track.indexes[1]
|
||||
|
||||
@@ -134,6 +134,8 @@ class Retag(logcommand.LogCommand):
|
||||
print 'Not in MusicBrainz database, skipping'
|
||||
continue
|
||||
|
||||
prog.metadata.discid = mbdiscid
|
||||
|
||||
# FIXME: this feels like we're poking at internals.
|
||||
prog.cuePath = arg
|
||||
prog.result = result.RipResult()
|
||||
|
||||
Reference in New Issue
Block a user