Any good donothing?

Dialtone Dialtone.NOSPAM.ME at aruba.it
Tue Apr 15 18:47:11 EDT 2003


Hi all. I'm working on a kind of all-in-one cd2mp3 encoder based on lame
and cdda2wav and pygame.

A little code snippet is the following (it is already indented once
because it is part of a bigger class, not so bigger, named cd2mp3).
My problem is to sync the 2 processes which are launched with the
os.system() call but without having the main program locked.
I initially thought that a wait inside a cicle would have got me an easy
solution but it didn't since it locks the main program anyway... Is
there any other way to make a do_nothing_for_some_time(n) function? Or
otherwise... is there another good way to sync those 2 processes without
having the main program locked (and also without having the encoder to
finish ecoding before the ripper has finished).  thanks a lot.

    def start(self, cdda=1, input_file=None, output_file=None, path="./library/audio/", bitrate=128):
#        mkdir_cmd = "mkdir %s%s" % (path, self.artist)
 #       os.system(mkdir_cmd)
  #      path = path + self.artist + "/"
        
        for i in xrange(self.start_track, self.num_tracks):
            try:
                self.infos = "Ripping: %s" % (self.tracks[i])
                self.infos2 = "Encoding: %s" % (self.tracks[i])
            except:
                self.infos = "Ripping track num %d" % (i)
                self.infos2 = "Encoding track num %d" % (i)
                
            self.surface.blit(self.text_bg, self.text_rect)
            pygame.display.flip()
            self.rendered_text = pygame.font.Font(None, 20).render(self.infos, 1, [255, 255, 255])
            self.text_surf.blit(self.rendered_text, (0,0))
            pygame.display.flip()
           
            # If tracks' names found
            if self.succeded:
                output_file = 1
                
            self.cdda2wav_string, self.wav2mp3_string = self.prefs(i, input_file, output_file, path, bitrate)
            if cdda:
                self.wav = os.system(self.cdda2wav_string)
                self.lose_time(20)
                self.progress_bar.inc(self.perc_incr)
                self.text_surf.blit(self.rendered_text, (0,0))
                pygame.display.flip()
            
            self.surface.blit(self.text_bg, self.text_rect)
            pygame.display.flip()
            self.rendered_text = pygame.font.Font(None, 20).render(self.infos2, 1, [255,255,255])
            self.text_surf.blit(self.rendered_text, (0,0))
            pygame.display.flip()
            
            self.mp3 = os.system(self.wav2mp3_string)
            self.lose_time(40)
            self.progress_bar.inc(self.perc_incr)
            self.clean = os.system('rm -rf *.inf && rm -rf *.wav')
        text = "%d track(s) successfully encoded" % (self.num_tracks-self.start_track)
        self.progress_bar.stop(text)
        
    def prefs(self, cur_track, input_file, output_file, path, bitrate=128, dev='/dev/cdrom'):
        """
        settare le preferenze tipo 
        bitrate della conversione etc..
        """
        if not output_file:
            output_file = "audio_%d.mp3" % (cur_track)
        else: output_file = "%s.mp3" % (self.__prepare(self.tracks[cur_track]))

        if not input_file:
            input_file = "audio.wav"
        
        cdda2wav_string = "cdda2wav -D %s -t %d+%d &" % (dev, cur_track, cur_track)
        wav2mp3_string = "lame -b %d %s %s%s &" % (bitrate, input_file, path, output_file)

        return cdda2wav_string, wav2mp3_string

    def lose_time(self, seconds):
        for i in xrange(seconds):
            pygame.time.wait(1000)


-- 
try: troll.uses(Brain)
except TypeError, data: 
   troll.plonk()
Co-Responsabile Hardware Information & Technology http://hit.edengames.net




More information about the Python-list mailing list