Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.06.2022
Сообщений: 3

МП-3 плеер

21.02.2023, 12:47. Показов 2187. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1.Нужно сделать чтобы музыка играла одна за другой если нажать кнопку плей, сейчас проигрывает только 1 песню
2.создать Метод AddSong который должен добавить новую песню в конец списка

Кому не трудно может выполнить данные 2 задачи, понимаю они простенькие но я 'перегрелся похоже' с учёбой






Сам код:

from tkinter import filedialog #библиотека для выбора папки из всплывающего окна для добавления музыки
from tkinter import * #библиотека графического пользовательного интерфейса
import pygame # библиотека для создания игр для плеера подойдёт
import os # устанавливается по умолчанию

'''root = Tk() #инициализация приложения
root.title('MP-3 Pleer') #название приложения
root.geometry("500x300") #размер окна


pygame.mixer.init() #позволит нам воспроизводить музыку


#создаём меню нашего плеера где можно будет добавлять песни и т.п.
menubar = Menu(root)
root.config(menu=menubar) #создали и добавили в корневое окно


#создаём пару переменных для загрузки песен
songs = [] #массив песен
current_song = "" #текущие песни
pause = False #пауза не включена


#создаём функцию для добавления музыки
def load_music():
global current_song #создаём глобальную текущую музыку для точного отображения её
root.directory = filedialog.askdirectory() #при нажатии будет появляться всплывающее окно в котором сможем выбрать папку

for song in os.listdir(root.directory): #перебираем файлы в каталоге который мы выбрали
name, ext = os.path.splitext(song) #разделяем файлы на имя и расширение файлов
if ext == '.mp3': #если расширение у имени файла равно .mp3
songs.append(song) # мы добавляем его в массив песен songs



2. #def add_song():




for song in songs:
songlist.insert("end",song) #музыка будет добавляться в конец

songlist.select_set(0) #выбираем первую добавленную музыку из плейлиста
current_song = songs[songlist.curselection()[0]] #текущяя песня будет выбранна самая первая в списке



#будем определять воспроизведение и остановку музыки
1. def play_music():
global current_song, paused

if not pause:
pygame.mixer.music.load(os.path.join(roo t.directory, current_song)) #можем загрузить музыку
pygame.mixer.music.play() #начнётся воспроизведение
else:
pygame.mixer.music.unpause() #отменить паузу
paused=False

def pause_music():
global pause
pygame.mixer.music.pause()
pause = True

def next_music():
global current_song, paused

try:
songlist.select_clear(0, END)
songlist.select_set(songs.index(current_ song) + 1)
current_song = songs[songlist.curselection()[0]]
play_music()
except:
pass


def prev_music():
global current_song, paused

try:
songlist.select_clear(0, END) #выделение песен от начала и до конца
songlist.select_set(songs.index(current_ song) - 1) #выбор песен , от текущего индекса текущей песни отнимаем 1 , выбирая тем самым предыдущую по списку песню
current_song = songs[songlist.curselection()[0]] #предыдущая песня становится текущей
play_music()
except:
pass


organise_menu = Menu(menubar, tearoff=False) #создаём organize_menu #tearoff отключаем отрыв меню
organise_menu.add_command(label='Add music', command=load_music) #добавляем в него команду
menubar.add_cascade(label='Menu', menu=organise_menu) #добавляем organise_menu в строку menu




#создали чёрный ящик где будут распологаться название песен
songlist = Listbox(root, bg="black", fg="white", width=100, height=15)
songlist.pack()


#загрузили фотографии(png) для управления(пауза,старт,вперёд,назад,доба вить)
play_btn_image = PhotoImage(file='play.png')
pause_btn_image = PhotoImage(file='pause.png')
next_btn_image = PhotoImage(file='next.png')
prev_btn_image = PhotoImage(file='previous.png')
#add_btn_image = PhotoImage(file='pngwing.com (2).png')


#создаём фрейм для будующих кнопок
control_frame = Frame(root)
control_frame.pack()

#создали кнопки с нашими png изображениями
play_btn = Button(control_frame, image=play_btn_image, borderwidth=0, command=play_music)
pause_btn = Button(control_frame, image=pause_btn_image, borderwidth=0, command=pause_music)
next_btn = Button(control_frame, image=next_btn_image, borderwidth=0, command=next_music)
prev_btn = Button(control_frame, image=prev_btn_image, borderwidth=0,command=prev_music)
2. #add_btn = Button(control_frame, image=add_btn_image, borderwidth=0)

#создаём сетку чтобы расположить наши кнопки в одной строке но в разных столбцах
play_btn.grid(row=0, column=1, padx=7, pady=10)
pause_btn.grid(row=0, column=2, padx=7, pady=10)
next_btn.grid(row=0, column=3, padx=7, pady=10)
prev_btn.grid(row=0, column=0, padx=7, pady=10)
2. #add_btn.grid(row=0, column=4, padx=7, pady=10)

root.mainloop() #запускаем наш плеер'''

Добавлено через 1 минуту
ребуется разработать модуль для обеспечения работы с плейлистом. Модуль должен обладать следующими возможностями:

Play - начинает воспроизведение
Pause - приостанавливает воспроизведение
AddSong - добавляет в конец плейлиста песню
Next воспроизвести след песню
Prev воспроизвести предыдущую песню
Технические требования
Должен быть описан четко определенный интерфейс для взаимодействия с плейлистом
Плейлист должен быть реализован с использованием двусвязного списка.
Каждая песня в плейлисте должна иметь свойство Duration.
Воспроизведение песни не должно блокировать методы управления.
Метод воспроизведения должен начать воспроизведение с длительностью, ограниченной свойством Duration песни. Воспроизведение должно эмулироваться длительной операцией.
Следующая песня должна воспроизводиться автоматически после окончания текущей песни.
Метод Pause должен приостановить текущее воспроизведение, и когда воспроизведение вызывается снова, оно должно продолжаться с момента паузы.
Метод AddSong должен добавить новую песню в конец списка.
Вызов метода Next должен начать воспроизведение следущей песни. Таким образом текущее
спроизведение должно быть остановлено и начато воспроизведение следущей песни
Вызов метода Prev должен остановить текущее воспроизведение и начать воспроизведение предыдущей песни.
Реализация метода AddSong должна проводиться с учетом одновременного, конкурентного доступа.
Следует учитывать, что воспроизведение может быть остановлено извне
Реализация методов Next/Prev должна проводиться с учетом одновременного, конкурентного доступа.
Примечание: Все реализации должны быть тщательно протестированы и оптимизированы с точки зрения производительности.


поясните, пожалуйста, 'зелёному' что я ещё не сделал, буду благодарен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2023, 12:47
Ответы с готовыми решениями:

Плеер на питоне
Помогите пожалуйста с плеером,мне нужно вывести треки мп3 в listbox, вот мой начальный код: from tkinter import * from...

Youtube API. Каким образом генерируется плеер? Замена другого блока на плеер
Здравствуйте. Есть такая функция. function cteateIframe(videoID, divID){ var player; player = new YT.Player(divID,...

Nokia x1-01 мр3 плеер лучше звучит, чем просто отдельный дешевенький плеер ?
Народ интерисует в Nokia x1-01 мр3 плеер лучше или так же звучит как обычный дешевенький плеер ??????

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2023, 12:47
Помогаю со студенческими работами здесь

плеер YouTube работает как мини плеер
при открытии видео в странице просмотра появляются значки мини плеера ютуба. Если оновить страницу все станет норм, но при воспоизведении...

ПЛЕЕР
Ребят, делаю музыкальный плеер.. подскажите пожалуйста как сделать полосу прокрутки, типа как в winampe или любом другом плеере. ...

Плеер
Прописал я команду s:=Sound s:=Sound.Create('Windows Balloon.wav'); // mix_46s (audio-joiner.com) s.Play; Sleep(s.Length); ...

плеер
Всем привет, загрузил видео с youtube на гл страницу, во всех браузерах отображается нормально кроме ie, в чём проблема? Раньше...

Плеер
Доброго времени суток. Пишу в свое удовольствие плеер. Столкнулся с проблемой: Плеер прекрасно работает на Windows 7 Ultimate и на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru