def test_freedb_disc_id(self): disc = Disc() self.assertEqual( freedb.freedb_disc_id(disc), "0003e800" ) tracks = [Track() for i in range(5)] for i, tobj in enumerate(tracks): tobj.offset = i*1001+801 disc.tracks = tracks self.assertEqual( freedb.freedb_disc_id(disc), "2003e805" )
def _read_discid(self, devname=DEVICE, fps=DEF_FPS): """Perform a cd-discid call""" info, is_musicbrainz = call_cd_discid(devname) if info is None: return False if is_musicbrainz: num_tracks = int(info[0]) offsets = [int(x) for x in info[1:-1]] disc_len = int(info[-1]) else: ### TO REMOVE, A cross-check disc_id = info[0] try: import rip_lib.freedb as freedb assert disc_id == freedb.freedb_disc_id(self) except ImportError: pass ### num_tracks = int(info[1]) offsets = [int(x) for x in info[2:-1]] disc_len = fps * int(info[-1]) assert num_tracks == len(offsets) lengths = [offsets[i+1] - offsets[i] \ for i in range(num_tracks-1) ] lengths.append(disc_len - offsets[-1]) self.lead_in = offsets[0] for i, offset in enumerate(offsets): track = self.add_track(i+1, offset) track.length = lengths[i] logger.debug("Length=%i", lengths[i]) assert disc_len == self.calc_disc_len() return True