[SCM] morituri/master: * morituri/image/image.py: Add the 150 frames for the leadin only to the CDDB calculation. Add methods to calculate AccurateRip id's and URL. * morituri/test/test_image_image.py: Add tests for it. * examples/ARcue.py: Show AccurateRip URL.
js at users.alioth.debian.org
js at users.alioth.debian.org
Sun Oct 19 20:08:46 UTC 2014
The following commit has been merged in the master branch:
commit a8da8d8fa20bbce57b5a6fae51594d1efaddef78
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date: Mon Apr 13 17:27:52 2009 +0000
* morituri/image/image.py:
Add the 150 frames for the leadin only to the CDDB calculation.
Add methods to calculate AccurateRip id's and URL.
* morituri/test/test_image_image.py:
Add tests for it.
* examples/ARcue.py:
Show AccurateRip URL.
diff --git a/ChangeLog b/ChangeLog
index 2d1d921..d1302ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-04-13 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * morituri/image/image.py:
+ Add the 150 frames for the leadin only to the CDDB calculation.
+ Add methods to calculate AccurateRip id's and URL.
+ * morituri/test/test_image_image.py:
+ Add tests for it.
+ * examples/ARcue.py:
+ Show AccurateRip URL.
+
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
diff --git a/examples/ARcue.py b/examples/ARcue.py
index 955a7dc..f37aa82 100644
--- a/examples/ARcue.py
+++ b/examples/ARcue.py
@@ -70,13 +70,15 @@ def main(argv):
if options.runner == 'cli':
runner = task.SyncRunner()
cueImage.setup(runner)
- print "CDDB disc id", cueImage.cddbDiscId()
+ print "CDDB disc id", cueImage.getCDDBDiscId()
+ print "AccurateRip URL", cueImage.getAccurateRipURL()
climain(runner, verifytask)
climain(runner, cuetask)
elif options.runner == 'gtk':
runner = task.GtkProgressRunner()
cueImage.setup(runner)
- print "CDDB disc id", cueImage.cddbDiscId()
+ print "CDDB disc id", cueImage.getCDDBDiscId()
+ print "AccurateRip URL", cueImage.getAccurateRipURL()
gtkmain(runner, verifytask)
gtkmain(runner, cuetask)
diff --git a/morituri/image/image.py b/morituri/image/image.py
index f2545c9..45f5193 100644
--- a/morituri/image/image.py
+++ b/morituri/image/image.py
@@ -72,9 +72,9 @@ class Image:
# calculate offset and length for each track
- # CD's have a standard lead-in time of 2 seconds
- offset = 2 * crc.DISC_FRAMES_PER_SECOND \
- + self.cue.tracks[0].getIndex(1)[0]
+ # CD's have a standard lead-in time of 2 seconds;
+ # checksums that use it should add it there
+ offset = self.cue.tracks[0].getIndex(1)[0]
for i in range(len(self.cue.tracks)):
self._offsets.append(offset)
@@ -99,11 +99,13 @@ class Image:
return ret
- def cddbDiscId(self):
+ def getCDDBDiscId(self):
n = 0
for track in self.cue.tracks:
- offset = self.getTrackOffset(track)
+ # CD's have a standard lead-in time of 2 seconds
+ # which gets added for CDDB disc id's
+ offset = self.getTrackOffset(track) + 2 * crc.DISC_FRAMES_PER_SECOND
seconds = offset / crc.DISC_FRAMES_PER_SECOND
n += self._cddbSum(seconds)
@@ -116,6 +118,37 @@ class Image:
return "%08x" % value
+ def getAccurateRipIds(self):
+ """
+ @rtype: two-tuple of (str, str)
+ """
+ discId1 = 0
+ discId2 = 0
+
+ for i, track in enumerate(self.cue.tracks):
+ offset = self.getTrackOffset(track)
+ discId1 += offset
+ discId2 += (offset or 1) * (i + 1)
+
+ # also add end offsets
+ last = self.cue.tracks[-1]
+ leadout = self.getTrackOffset(last) + self.getTrackLength(last)
+ discId1 += leadout
+ discId2 += leadout * (len(self.cue.tracks) + 1)
+
+ discId1 &= 0xffffffff
+ discId2 &= 0xffffffff
+
+ return ("%08x" % discId1, "%08x" % discId2)
+
+ def getAccurateRipURL(self):
+ discId1, discId2 = self.getAccurateRipIds()
+
+ return "http://www.accuraterip.com/accuraterip/" \
+ "%s/%s/%s/dBAR-%.3d-%s-%s-%s.bin" % (
+ discId1[-1], discId1[-2], discId1[-3],
+ len(self.cue.tracks), discId1, discId2, self.getCDDBDiscId())
+
class MultiTask(task.Task):
"""
I perform multiple tasks.
diff --git a/morituri/test/test_image_image.py b/morituri/test/test_image_image.py
index 05a378e..9a872f5 100644
--- a/morituri/test/test_image_image.py
+++ b/morituri/test/test_image_image.py
@@ -38,7 +38,11 @@ class TrackSingleTestCase(unittest.TestCase):
self.assertEquals(self.image.getTrackLength(tracks[3]), 4)
def testCDDB(self):
- self.assertEquals(self.image.cddbDiscId(), "08000004")
+ self.assertEquals(self.image.getCDDBDiscId(), "08000004")
+
+ def testAccurateRip(self):
+ self.assertEquals(self.image.getAccurateRipIds(), (
+ "00000016", "0000005b"))
class TracSeparateTestCase(unittest.TestCase):
def setUp(self):
@@ -65,7 +69,11 @@ class TracSeparateTestCase(unittest.TestCase):
self.assertEquals(self.image.getTrackLength(tracks[3]), 10)
def testCDDB(self):
- self.assertEquals(self.image.cddbDiscId(), "08000004")
+ self.assertEquals(self.image.getCDDBDiscId(), "08000004")
+
+ def testAccurateRip(self):
+ self.assertEquals(self.image.getAccurateRipIds(), (
+ "00000064", "00000191"))
class AudioLengthTestCase(unittest.TestCase):
def testLength(self):
--
morituri packaging
More information about the pkg-multimedia-commits
mailing list