Ejemplo n.º 1
0
    def on_buttonAlbumDir_pressed(self):
        self.directory = False

        search = u'*.mp3'
        self.path = QFileDialog.getExistingDirectory(self, self.tr('Choose album directory'), QDir.currentPath(), QFileDialog.ShowDirsOnly)
        directory = QDir(self.path)

        if directory.dirName() != '.': # `.` usually means cancel was pressed
            self.ui.textAlbumFolder.setText(directory.dirName())

        self.mp3s = directory.entryList(QStringList(search), QDir.Files)

        if len(self.mp3s) == 0:
            QMessageBox.information(self, self.tr('No MP3 files found'), self.tr('No MP3 files found. Select a directory with MP3 files.'))
            self.ui.textOutOfNumTracks.setText(' / 0')
            return
        else:
            display_fn = self.mp3s[0]
            self.current_file = os.path.join(unicode(self.path.toUtf8()), unicode(display_fn.toUtf8()))
            raw_path = str(self.current_file.toUtf8())

            self.ui.textSongFilename.setText(display_fn)

            # Enable buttons
            self.ui.buttonAlbumApply.setEnabled(True)
            self.ui.buttonAlbumReset.setEnabled(True)
            self.ui.buttonSongReset.setEnabled(True)
            self.ui.buttonSongNext.setEnabled(True)

            tag = eyeD3.Tag()

            if tag.link(raw_path) is not False:
                # Store initial values
                self.initial_artist = tag.getArtist()
                self.initial_album = tag.getAlbum()
                self.initial_year = tag.getYear()
                genre = tag.getGenre()

                self.ui.textAlbumArtist.setText(self.initial_artist)
                self.ui.textAlbumAlbum.setText(self.initial_album)
                self.ui.textAlbumDate.setText(self.initial_year)

                if genre is not None:
                    self.initial_genre_index = self.ui.comboAlbumGenre.findText(genre.getName(), Qt.MatchExactly)
                    end_offset = self.ui.comboAlbumGenre.count() + 1

                    if self.initial_genre_index == -1:
                        self.ui.comboAlbumGenre.insertItem(end_offset, genre.getName())
                        self.ui.comboAlbumGenre.setCurrentIndex(end_offset - 1)
                        self.initial_genre_index = end_offset - 1
                    else:
                        self.ui.comboAlbumGenre.setCurrentIndex(genre_index)
                        self.initial_genre_index = genre_index

                # Not supporting multiple comment frames so they just get joined
                join_with = '\n'
                comments = tag.getComments()

                self.initial_comment = join_with.join([unicode(x) for x in comments])
                self.ui.textAlbumComment.setText(self.initial_comment)

                # Specific to the file
                self.ui.textSongSong.setText(tag.getTitle())
                self.ui.textSongArtist.setText(tag.getArtist())
                self.ui.textSongTrackNum.setText(str(tag.getTrackNum()[0]))

        self.number_of_tracks = ' / %d' % len(self.mp3s)
        self.index = 0
        self.directory = True

        self.ui.textOutOfNumTracks.setText(self.number_of_tracks)