/Player

Primary LanguagePython

Проект: МП3 плеер

ФИО автора/авторов:

Typing SVG

Введение:

Идея проекта состоит в создании МП3 плеера, который позволяет воспроизводить аудиофайлы различных форматов и управлять ими. Плеер разработан для решения задач прослушивания музыки, создания плейлистов, а также экспорта информации о композициях.

А как пользоваться то?

Запускаем exe-файл программы и видим перед собой подобное меню: image
Рассмотрим повнимательнее:

  • Тут мы видим toolbar-меню с различными заголовками:File, Playlists, Export. image
    • File. Нажав, видим кнопку Open_file, которая добавляет трек в db с playlist_id = 1 и в QWidgetListWidget для удобного переключения между вашими недавно-добавленными треками
    • Playlist. Нажав, видим кнопку Create_playlist, которая создает плейлист в db в таблицу playlists; создаёт плейлист с указанным пользователем именем. Элемент добавляется в QTreeWidget, где находятся все плейлисты, которые создал пользователь
    • Export.
      • as txt. Позволяет переместить ваши треки из выбранного плейлиста в выпадающем QWidget в txt файл
      • as file. Позволяет переместить ваши треки из выбранного плейлиста в выпадающем QWidget в отдельную папку, которую легко можно перенести на другие ваши устройства:)
      • info. Подробная информация о функции export.
  • А тут... Тут же меню управлением воспроизведением вашего трека!
    image
    • play. Воспроизводить трек.
    • stop. Перейти в начало трека.
    • pause. Остановить воспроизведение трека.
    • exit. Закрыть трек.
    • Переключатель громкости воспроизводимой музыки(dial) с показом текущего значения громкости(label)
  • Ну и наконец: окно плейлистов.
    image
    • В "Недавние треки" попадают все треки, которые вы импортировали в программу нажав на File->Open... Попробуйте нажать на добавленный трек и воспроизведите его. Наслаждайтесь музыкой
    • В "Плейлисты" попадают все плейлисты, которые вы импортировали в программу нажав на Playlists->Create Playlist... "А как ведь добавить трек в плейлист" - задаетёсь вы вопросом. Все просто. Достаточно нажать правой кнопкой мыши на плейлист и нажать на "Добавить трек".

Описание реализации:

Приложение реализовано на языке программирования Python с использованием библиотек PyQt5 и mutagen. Основная структура приложения состоит из класса MainWindow, который наследуется от класса QMainWindow. В приложении используются различные виджеты, такие как QTreeWidget, QMediaPlayer, QSlider и другие. Технологии, используемые в приложении:

  • QtPyQt5 - библиотека для создания графических интерфейсов;
  • SQLitesqlite3 - модуль для работы с базами данных SQLite;
  • Pythonmutagen - библиотека для работы с метаданными аудиофайлов.

Код приложения охватывает функции управления воспроизведением, загрузки и экспорта аудиофайлов, создания и управления плейлистами. Приложение также предоставляет графический интерфейс, включающий различные элементы управления для удобства пользователя. Описание функций по коду:

  • except_hook(cls, exception, traceback) Функция, которая перехватывает исключения и отображает их в консоли.
  • MainWindow(QMainWindow) Класс главного окна приложения. Инициализирует графический интерфейс, настраивает виджеты и подключает обработчики событий.
  • init_database(self) Заполняет QTreeWidget актуальными плейлистами из базы данных.
  • init_UI(self) Инициализирует пользовательский интерфейс, создает меню, подключает обработчики кнопок и действий.
  • Check_File(self) Проверка на присутствие файла по его директории в db
  • Open_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) Переименование плейлиста

Это основные функции в коде. Они реализуют основной функционал приложения для работы с плейлистами и воспроизведением музыки


Доработки:

  • Улучшение дизайна и пользовательского интерфейса для более удобного пользовательского опыта.
  • Реализация функционала поиска и фильтрации музыкальных композиций в базе данных.
  • Расширение возможностей управления плейлистами, такие как переименование, удаление и перемещение треков между плейлистами.

↑↑↑click on gif↑↑↑