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)
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("&","&"), 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("&","&"), 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