Идея проекта состоит в создании МП3 плеера, который позволяет воспроизводить аудиофайлы различных форматов и управлять ими. Плеер разработан для решения задач прослушивания музыки, создания плейлистов, а также экспорта информации о композициях.
Запускаем exe-файл программы и видим перед собой подобное меню:
Рассмотрим повнимательнее:
- Тут мы видим toolbar-меню с различными заголовками:File, Playlists, Export.
- File. Нажав, видим кнопку Open_file, которая добавляет трек в db с playlist_id = 1 и в QWidgetListWidget для удобного переключения между вашими недавно-добавленными треками
- Playlist. Нажав, видим кнопку Create_playlist, которая создает плейлист в db в таблицу playlists; создаёт плейлист с указанным пользователем именем. Элемент добавляется в QTreeWidget, где находятся все плейлисты, которые создал пользователь
- Export.
- as txt. Позволяет переместить ваши треки из выбранного плейлиста в выпадающем QWidget в txt файл
- as file. Позволяет переместить ваши треки из выбранного плейлиста в выпадающем QWidget в отдельную папку, которую легко можно перенести на другие ваши устройства:)
- info. Подробная информация о функции export.
- А тут... Тут же меню управлением воспроизведением вашего трека!
- play. Воспроизводить трек.
- stop. Перейти в начало трека.
- pause. Остановить воспроизведение трека.
- exit. Закрыть трек.
- Переключатель громкости воспроизводимой музыки(dial) с показом текущего значения громкости(label)
- Ну и наконец: окно плейлистов.
- В "Недавние треки" попадают все треки, которые вы импортировали в программу нажав на File->Open... Попробуйте нажать на добавленный трек и воспроизведите его. Наслаждайтесь музыкой
- В "Плейлисты" попадают все плейлисты, которые вы импортировали в программу нажав на Playlists->Create Playlist... "А как ведь добавить трек в плейлист" - задаетёсь вы вопросом. Все просто. Достаточно нажать правой кнопкой мыши на плейлист и нажать на "Добавить трек".
Приложение реализовано на языке программирования Python с использованием библиотек PyQt5 и mutagen. Основная структура приложения состоит из класса MainWindow, который наследуется от класса QMainWindow. В приложении используются различные виджеты, такие как QTreeWidget, QMediaPlayer, QSlider и другие. Технологии, используемые в приложении:
PyQt5 - библиотека для создания графических интерфейсов;
sqlite3 - модуль для работы с базами данных SQLite;
mutagen - библиотека для работы с метаданными аудиофайлов.
Код приложения охватывает функции управления воспроизведением, загрузки и экспорта аудиофайлов, создания и управления плейлистами. Приложение также предоставляет графический интерфейс, включающий различные элементы управления для удобства пользователя. Описание функций по коду:
except_hook(cls, exception, traceback)
Функция, которая перехватывает исключения и отображает их в консоли.MainWindow(QMainWindow)
Класс главного окна приложения. Инициализирует графический интерфейс, настраивает виджеты и подключает обработчики событий.init_database(self)
Заполняет QTreeWidget актуальными плейлистами из базы данных.init_UI(self)
Инициализирует пользовательский интерфейс, создает меню, подключает обработчики кнопок и действий.Check_File(self)
Проверка на присутствие файла по его директории в dbOpen_File(self)
Обработчик события открытия файла. Открывает диалоговое окно для выбора файла и добавляет его в список предыдущих треков.load_mp3(self)
Загрузка музыкального файла в плеер, обработка изображения(при наличии)set_volume(self)
Устанавливает громкость музыки в плеере в соответствии со значением настроенного диала.play_music(self)
Запускает воспроизведение музыки.pause_music(self)
Приостанавливает воспроизведение музыки.stop_music(self)
Останавливает воспроизведение музыки и обнуляет текущую позицию трека.check_isMedia_now(self)
Проверяет, занят ли плеер в данный момент и выполняет соответствующие действия в зависимости от состояния плеера.enable_message_box_isMedia_button(self)
Включает кнопку в сообщении MessageBox.export_tracks_as_txt(self)
Выполняет экспорт треков плейлиста в текстовый файл.export_tracks_as_files(self)
Выполняет экспорт треков плейлиста в папку.infoExport(self)
Отображает информацию о функции экспорта треков в MessageBox.on_item_clicked(self, item)
Обработчик события клика на QListWidget previous_tracks. Загружает выбранный трек в плеер.create_new_playlist(self)
Создает новый плейлист с введенным пользователем названием.track_clicked(self, item, column)
Обработчик события клика на трек в плейлисте. Загружает выбранный трек в плеер.show_context_menu(self, position)
Отображает контекстное меню для добавления треков в плейлист.do_action(self)
Выполняет действие при выборе пункта контекстного меню для добавления трека в плейлист.exit_music(self)
Очищает текущий трек из плеера и обновляет информацию о времени воспроизведения.duration_ch(self)
Устанавливает максимальное значение слайдера времени в соответствии с длительностью трека.position_ch(self)
Устанавливает значение слайдера времени в соответствии с текущей позицией, также обновляет отображение текущего времени (NowTime_label).slider_triggered(self)
Устанавливает новую позицию проигрывания трека в соответствии с новым положением слайдера.rename_playlist(self)
Переименование плейлиста
Это основные функции в коде. Они реализуют основной функционал приложения для работы с плейлистами и воспроизведением музыки
Доработки:
- Улучшение дизайна и пользовательского интерфейса для более удобного пользовательского опыта.
- Реализация функционала поиска и фильтрации музыкальных композиций в базе данных.
- Расширение возможностей управления плейлистами, такие как переименование, удаление и перемещение треков между плейлистами.