def start(self, category): """ Should already have the track info. """ self.genre = str(category) self._progress_data = {} self.disc_length = 0.0 for i in range(self.count): sec = cd_logic.get_track_time_total(i) self._progress_data[i] = {'rip' : 0, 'enc' : 0, 'length' : sec} self.disc_length += sec self.rip_n_encode() text = '%s - %s' % (self.artist, self.album) self.discLabel.setText('Copying "'+text+'"...') self.button.show() self.progress.show() self.catFrame.hide()
def get_cddb(self): '''Query cddb for track and cd info''' count = artist = genre = album = year = '' tracklist = [] tracktime = [] #Note: all the nested try statements are to ensure that as much #info is processed as possible. One exception should not stop #the whole thing and return nothing. try: count = cd_logic.total_tracks() cddb_id = cd_logic.get_cddb_id() #PyCDDB wants a string delimited by spaces, go figure. cddb_id_string = '' for n in cddb_id: cddb_id_string += str(n)+' ' #print disc_id #print cddb_id, cddb_id_string for i in range(count): tracktime = cd_logic.get_track_time_total(i+1) track_time = time.strftime('%M:%S', time.gmtime(tracktime)) tracklist.append( ('Track%i' % i, track_time) ) try: db = PyCDDB.PyCDDB(CDDB_SERVER) query_info = db.query(cddb_id_string) #print query_info event = Event(FOUND_DISC_INFO) event.query_info = query_info self.ripper_event(event) #make sure we didn't get an error, then query CDDB if len(query_info) > 0: rndm = Random() index = rndm.randrange(0, len(query_info)) read_info = db.read(query_info[index]) #print read_info event = Event(FOUND_TRACK_INFO) event.tracknum = index event.read_info = read_info self.ripper_event(event) try: (artist, album) = query_info[index]['title'].split('/') artist = artist.strip() album = album.strip() genre = query_info[index]['category'] if genre in ['misc', 'data']: genre = 'Misc' print query_info['year'] print read_info['EXTD'] print read_info['YEARD'] #x = re.match(r'.*YEAR: (.+).*',read_info['EXTD']) #if x: # print x.group(1) # year = x.group(1) except: pass if len(read_info['TTITLE']) > 0: for i in range(count): try: track_name = read_info['TTITLE'][i] track_time = tracklist[i][1] #print i, track_name, track_time tracklist[i] = (track_name, track_time) except: pass except Exception, e: print e pass except Exception, e: print e pass