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()
示例#2
0
    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