Пример #1
0
 def on_btn_play_clicked(self, btn_play):
     """
     Get the seletect tracks on the tree and play them with the defined
     mp3 player (default 'totem')        
     """
     title = _("Music player")
     try:
         self.log.info("Play selected tracks")
         selected_track_list = self.mp3_tree.get_selected_mp3_files()
         selected_tracks = ''
         if len(selected_track_list) > 0:
             selected_tracks = '"' + '" "'.join(selected_track_list) + '"'        
         play_command = "%s %s" % (self.config['music']['player'],
                                     selected_tracks)
                                     
         process = subprocess.Popen(play_command,
                                    shell = True,
                                    stdout = subprocess.PIPE,
                                    stderr = subprocess.PIPE)
                                    
         # Wait a bit to kwnon if the process failed inmediatily
         time.sleep(0.2)
         returncode = process.poll()
         if returncode:                
             error_message = _("Cannot open music player:\n\n")
             stdout = ''.join(process.stdout.readlines()).replace("&","&")
             stderr = ''.join(process.stderr.readlines()).replace("&","&")
             error_message = "%s%s%s" % (error_message, stdout, stderr)
             message.error(title, error_message, self.GMusicTagger)
     except:
         self.log.exception("Error running music player")
         exception_message = _("Error running music player")
         message.exception(title, exception_message, self.GMusicTagger)
Пример #2
0
    def add_iters(self,mp3_files):
        """ Insert the new mp3 files in the Tree ListStore """
        APPLOG.info("Add new iters on the Mp3 Tree")
        
        # Initialize addition counter
        total_files_added = 0
        
        # Initialize the progressbar
        self.progressbarbox.set_property('visible',True)
        self.progressbarbox.set_new_bar(len(mp3_files))
                                     
        # Append the files in the Tree ListStore
        for mp3 in mp3_files:
            # Check if the action is not cancelled            
            if not self.progressbarbox.cancel_action:
                # Refresh the progressbar
                self.progressbarbox.next(_("Loading %s...") % mp3)
            
                # Add Mp3 File in the storage Core and read it
                added_mp3 = self.mp3_store.add_item(mp3)
                if added_mp3:
                    if added_mp3 < 2:
                        try:
                            mp3_audio_file = self.mp3_store.get_metadata(mp3)
                            mp3_tag = mp3_audio_file.getTag() 
                            
                            # Gets Filename by the path basename and without ext
                            filename = os.path.basename(mp3)
                            i = filename.rindex('.')
                            filename = filename[:i]
                            
                            # Retrieve the complex tags (Genre and Comments)
                            try:
                                genre = mp3_tag.getGenre()
                                if genre:
                                    genre_name = genre.getName()
                                else:
                                    genre_name = u''
                            except eyeD3.tag.GenreException:
                                genre_name = ''
                                                
                            comments = mp3_tag.getComments()
                            if len(comments) > 0:
                                comment_string = comments[0].comment
                            else:
                                comment_string = u''                         
                            
                            
                            # Retrieve all text fields of the MP3 tag
                            # and sets the tree fields
                            col_selec      = self.config['misc']['auto-select-when-added']
                            col_file       = filename
                            col_num        = self.getTrackNumString(mp3_tag.getTrackNum())
                            col_title      = mp3_tag.getTitle()
                            col_artist     = mp3_tag.getArtist('TPE1')
                            col_band       = mp3_tag.getArtist('TPE2')
                            col_performer  = mp3_tag.getArtist('TPE3')
                            col_remix      = mp3_tag.getArtist('TPE4')
                            col_compositor = mp3_tag.getArtist('TCOM')
                            col_album      = mp3_tag.getAlbum()
                            col_year       = mp3_tag.getYear()
                            col_genre      = genre_name
                            col_comments   = comment_string
                            col_duration   = mp3_audio_file.getPlayTimeString()
                            col_bitrate    = mp3_audio_file.getBitRateString()
                            col_path       = mp3
                            
                            iter_tuple_values = (col_selec, col_file, col_num, col_title,
                                                 col_artist, col_band, col_performer,
                                                 col_remix, col_compositor, col_album,
                                                 col_year, col_genre, self.genre_model,
                                                 col_comments, col_duration, col_bitrate,
                                                 col_path)                                     

                            self.model.append(iter_tuple_values)
                            total_files_added += 1
                        except:
                            APPLOG.exception("Reading Tag from %s" % mp3)
                            message.exception(_("Reading Mp3 tags"),
                                              _("Error reading Mp3 Tag from '%s'\n")
                                              % os.path.basename(mp3).replace("&","&amp;"),
                                              self.get_toplevel())
                            self.mp3_store.remove_items([mp3])                        
                else:          
                    message.error(_("Initialize Mp3 Tag"),
                                  _("Error adding Mp3 File '%s'.\nCheck the app log.")
                                  % os.path.basename(mp3).replace("&","&amp;"),
                                  self.get_toplevel())  
            else:
                APPLOG.warning("Load process cancelled")
                self.progressbarbox.cancel_message()
                time.sleep(CANCEL_ACTION_SLEEP)
                break
                        
        # Hide the progressbar
        self.progressbarbox.set_property('visible',False)
                                              
        return total_files_added