def do(self, args): prog = program.Program(self.getRootCommand().config) runner = ctask.SyncRunner() device = self.options.device # if necessary, load and unmount self.stdout.write('Checking device %s\n' % device) prog.loadDevice(device) prog.unmountDevice(device) # first get the Table Of Contents of the CD t = cdrdao.ReadTOCTask(device) table = t.table self.debug("CDDB disc id: %r", table.getCDDBDiscId()) url = table.getAccurateRipURL() self.debug("AccurateRip URL: %s", url) # FIXME: download url as a task too responses = [] import urllib2 try: handle = urllib2.urlopen(url) data = handle.read() responses = accurip.getAccurateRipResponses(data) except urllib2.HTTPError, e: if e.code == 404: self.stdout.write( 'Album not found in AccurateRip database.\n') return 1 else: raise
def do(self): prog = program.Program(config.Config()) runner = ctask.SyncRunner() device = self.options.device # if necessary, load and unmount sys.stdout.write('Checking device %s\n' % device) utils.load_device(device) utils.unmount_device(device) # first get the Table Of Contents of the CD t = cdrdao.ReadTOCTask(device) table = t.table logger.debug("CDDB disc id: %r", table.getCDDBDiscId()) url = table.getAccurateRipURL() logger.debug("AccurateRip URL: %s", url) # FIXME: download url as a task too responses = [] import urllib2 try: handle = urllib2.urlopen(url) data = handle.read() responses = accurip.getAccurateRipResponses(data) except urllib2.HTTPError, e: if e.code == 404: sys.stdout.write( 'Album not found in AccurateRip database.\n') return 1 else: raise
def testVerify(self): path = os.path.join(os.path.dirname(__file__), 'dBAR-020-002e5023-029d8e49-040eaa14.bin') data = open(path, "rb").read() responses = accurip.getAccurateRipResponses(data) # these crc's were calculated from an actual rip checksums = [ 1644890007, 2945205445, 3983436658, 1528082495, 1203704270, 1163423644, 3649097244, 100524219, 1583356174, 373652058, 1842579359, 2850056507, 1329730252, 2526965856, 2525886806, 209743350, 3184062337, 2099956663, 2943874164, 2321637196 ] prog = program.Program() prog.result = result.RipResult() # fill it with empty trackresults for i, c in enumerate(checksums): r = result.TrackResult() r.number = i + 1 prog.result.tracks.append(r) prog._verifyImageWithChecksums(responses, checksums) # now check if the results were filled in properly tr = prog.result.getTrackResult(1) self.assertEquals(tr.accurip, False) self.assertEquals(tr.ARDBMaxConfidence, 0) self.assertEquals(tr.ARDBCRC, 0) self.assertEquals(tr.ARDBCRC, 0) tr = prog.result.getTrackResult(2) self.assertEquals(tr.accurip, True) self.assertEquals(tr.ARDBMaxConfidence, 2) self.assertEquals(tr.ARDBCRC, checksums[2 - 1]) tr = prog.result.getTrackResult(10) self.assertEquals(tr.accurip, False) self.assertEquals(tr.ARDBMaxConfidence, 2) # we know track 10 was ripped wrong self.assertNotEquals(tr.ARDBCRC, checksums[10 - 1]) res = prog.getAccurateRipResults() self.assertEquals( res[1 - 1], "Track 1: rip NOT accurate (not found) " "[620b0797], DB [notfound]") self.assertEquals( res[2 - 1], "Track 2: rip accurate (max confidence 2) " "[af8c44c5], DB [af8c44c5]") self.assertEquals( res[10 - 1], "Track 10: rip NOT accurate (max confidence 2) " "[16457a5a], DB [eb6e55b4]")
def main(argv): log.init() parser = optparse.OptionParser() default = 'cli' parser.add_option('-r', '--runner', action="store", dest="runner", help="runner ('cli' or 'gtk', defaults to %s)" % default, default=default) options, args = parser.parse_args(argv[1:]) path = 'test.cue' try: path = sys.argv[1] except IndexError: pass cueImage = image.Image(path) verifytask = image.ImageVerifyTask(cueImage) cuetask = image.AccurateRipChecksumTask(cueImage) if options.runner == 'cli': runner = task.SyncRunner() function = climain elif options.runner == 'gtk': runner = taskgtk.GtkProgressRunner() function = gtkmain cueImage.setup(runner) print print "CDDB disc id", cueImage.table.getCDDBDiscId() url = cueImage.table.getAccurateRipURL() print "AccurateRip URL", url # FIXME: download url as a task too responses = [] import urllib2 try: handle = urllib2.urlopen(url) data = handle.read() responses = accurip.getAccurateRipResponses(data) except urllib2.HTTPError, e: if e.code == 404: print 'Album not found in AccurateRip database' else: raise
def testVerify(self): path = os.path.join(os.path.dirname(__file__), 'dBAR-020-002e5023-029d8e49-040eaa14.bin') data = open(path, "rb").read() responses = accurip.getAccurateRipResponses(data) # these crc's were calculated from an actual rip checksums = [1644890007, 2945205445, 3983436658, 1528082495, 1203704270, 1163423644, 3649097244, 100524219, 1583356174, 373652058, 1842579359, 2850056507, 1329730252, 2526965856, 2525886806, 209743350, 3184062337, 2099956663, 2943874164, 2321637196] prog = program.Program(config.Config()) prog.result = result.RipResult() # fill it with empty trackresults for i, c in enumerate(checksums): r = result.TrackResult() r.number = i + 1 prog.result.tracks.append(r) prog._verifyImageWithChecksums(responses, checksums) # now check if the results were filled in properly tr = prog.result.getTrackResult(1) self.assertEquals(tr.accurip, False) self.assertEquals(tr.ARDBMaxConfidence, 0) self.assertEquals(tr.ARDBCRC, 0) self.assertEquals(tr.ARDBCRC, 0) tr = prog.result.getTrackResult(2) self.assertEquals(tr.accurip, True) self.assertEquals(tr.ARDBMaxConfidence, 2) self.assertEquals(tr.ARDBCRC, checksums[2 - 1]) tr = prog.result.getTrackResult(10) self.assertEquals(tr.accurip, False) self.assertEquals(tr.ARDBMaxConfidence, 2) # we know track 10 was ripped wrong self.assertNotEquals(tr.ARDBCRC, checksums[10 - 1]) res = prog.getAccurateRipResults() self.assertEquals(res[1 - 1], "Track 1: rip NOT accurate (not found) " "[620b0797], DB [notfound]") self.assertEquals(res[2 - 1], "Track 2: rip accurate (max confidence 2) " "[af8c44c5], DB [af8c44c5]") self.assertEquals(res[10 - 1], "Track 10: rip NOT accurate (max confidence 2) " "[16457a5a], DB [eb6e55b4]")
def main(argv): log.init() parser = optparse.OptionParser() default = 'cli' parser.add_option('-r', '--runner', action="store", dest="runner", help="runner ('cli' or 'gtk', defaults to %s)" % default, default=default) options, args = parser.parse_args(argv[1:]) path = 'test.cue' try: path = sys.argv[1] except IndexError: pass cueImage = image.Image(path) verifytask = image.ImageVerifyTask(cueImage) cuetask = image.AccurateRipChecksumTask(cueImage) if options.runner == 'cli': runner = task.SyncRunner() function = climain elif options.runner == 'gtk': runner = taskgtk.GtkProgressRunner() function = gtkmain cueImage.setup(runner) print print "CDDB disc id", cueImage.table.getCDDBDiscId() url = cueImage.table.getAccurateRipURL() print "AccurateRip URL", url # FIXME: download url as a task too responses = [] import urllib2 try: handle = urllib2.urlopen(url) data = handle.read() responses = accurip.getAccurateRipResponses(data) except urllib2.HTTPError, e: if e.code == 404: print 'Album not found in AccurateRip database' else: raise
def testResponse(self): path = os.path.join(os.path.dirname(__file__), 'dBAR-011-0010e284-009228a3-9809ff0b.bin') data = open(path, "rb").read() responses = accurip.getAccurateRipResponses(data) self.assertEquals(len(responses), 3) response = responses[0] self.assertEquals(response.trackCount, 11) self.assertEquals(response.discId1, "0010e284") self.assertEquals(response.discId2, "009228a3") self.assertEquals(response.cddbDiscId, "9809ff0b") for i in range(11): self.assertEquals(response.confidences[i], 35) self.assertEquals(response.checksums[0], "beea32c8") self.assertEquals(response.checksums[10], "acee98ca")
def testResponse(self): path = os.path.join(os.path.dirname(__file__), 'dBAR-011-0010e284-009228a3-9809ff0b.bin') data = open(path, "rb").read() responses = accurip.getAccurateRipResponses(data) self.assertEquals(len(responses), 3) response = responses[0] self.assertEquals(response.trackCount, 11) self.assertEquals(response.discId1, "0010e284") self.assertEquals(response.discId2, "009228a3") self.assertEquals(response.cddbDiscId, "9809ff0b") for i in range(11): self.assertEquals(response.confidences[i], 35) self.assertEquals(response.checksums[0], "beea32c8") self.assertEquals(response.checksums[10], "acee98ca")
class Find(logcommand.LogCommand): summary = "find drive read offset" description = """Find drive's read offset by ripping tracks from a CD in the AccurateRip database.""" def addOptions(self): default = OFFSETS self.parser.add_option('-o', '--offsets', action="store", dest="offsets", help="list of offsets, comma-separated, " "colon-separated for ranges (defaults to %s)" % default, default=default) self.parser.add_option('-d', '--device', action="store", dest="device", help="CD-DA device") def handleOptions(self, options): self.options = options self._offsets = [] blocks = options.offsets.split(',') for b in blocks: if ':' in b: a, b = b.split(':') self._offsets.extend(range(int(a), int(b) + 1)) else: self._offsets.append(int(b)) self.debug('Trying with offsets %r', self._offsets) if not options.device: drives = drive.getAllDevicePaths() if not drives: self.error('No CD-DA drives found!') return 3 # pick the first self.options.device = drives[0] # this can be a symlink to another device def do(self, args): prog = program.Program(self.getRootCommand().config) runner = ctask.SyncRunner() device = self.options.device # if necessary, load and unmount self.stdout.write('Checking device %s\n' % device) prog.loadDevice(device) prog.unmountDevice(device) # first get the Table Of Contents of the CD t = cdrdao.ReadTOCTask(device=device) try: runner.run(t) except cdrdao.DeviceOpenException, e: self.error(e.msg) return 3 table = t.table self.debug("CDDB disc id: %r", table.getCDDBDiscId()) url = table.getAccurateRipURL() self.debug("AccurateRip URL: %s", url) # FIXME: download url as a task too responses = [] import urllib2 try: handle = urllib2.urlopen(url) data = handle.read() responses = accurip.getAccurateRipResponses(data) except urllib2.HTTPError, e: if e.code == 404: self.stdout.write('Album not found in AccurateRip database.\n') return 1 else: raise