Pygame как получить предыдущую песню - PullRequest
0 голосов
/ 08 мая 2018

Я хочу заставить программу перейти к предыдущей песне, если пользователь решит нажать кнопку (учтите, я делаю это на малиновом пи). Проблема в том, что я не могу понять, как заставить программу перейти к предыдущей песне. Я дошел до того, что могу перейти к следующей песне, я также попробовал «pygame.mixer.music.rewind ()», но это касается только начала текущей песни.

def prevSong():
    print("musiclist is ",musiclist)
    print('Playing previous song')
    pygame.mixer.music.rewind()

def nextSong():
    pygame.mixer.init()
    print("musiclist is ",musiclist)
    print('                      ')
    random_song = random.choice(musiclist)
    randSong = pygame.mixer.music.load(random_song)
    print('Playing next song: {}'.format(random_song))
    pygame.mixer.music.play()
    musiclist.remove(random_song)

Я хочу, чтобы изменения были внесены в prevSong (). Функция nextSong () является примером для продолжения. Какие-либо предложения? Спасибо

Редактировать 1: Хорошо, поэтому я создал новый список под названием «prevSongList», но я не могу понять, как мне добавить песню

def playMusic():
    pygame.mixer.init()
    print("musiclist is ",musiclist)
    print('                      ')
    random_song = random.choice(musiclist)
    randSong = pygame.mixer.music.load(random_song)
    prev = prevSongList.append(randSong)
    print('Playing song: {}'.format(random_song))
    pygame.mixer.music.play()

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Договорились, что вы должны сохранить песни в списке, вы также можете создать класс dj, чтобы вы могли расширить его за пределы этого

class DJSongify:

    def __init__(self):
        self.previous = location.music
        self.songlist = []   
    def songlist_continue(self,song)
        self.previous = song
        self.songlist.append(song)

Это позволит вам отслеживать, а также выполнять другие операции на вашемКласс DJ, например, сбор мусора в списке песен, если он становится слишком большим для Rasberry Pi.Вы даже можете установить предел списка песен и обработать его таким образом.

0 голосов
/ 08 мая 2018

Как вы добавили, вы должны создать массив, который будет содержать все проигрываемые песни. Чтобы иметь возможность правильно получить доступ к предыдущему, у вас также должна быть переменная, которая сообщит вам, где вы в данный момент находитесь в списке.

В вашей функции prevSong вы можете просто получить доступ к песне, прежде чем индексировать ее в списке. Что-то вроде:

def prevSong():
    print("musiclist is ",musiclist)
    print('Playing previous song')
    #you should add a if there in case there is no previous song
    currentIndex-- #remove 1 to the current index 
    lastSong = prevSongList[currentIndex]
    #play the song
    pygame.mixer.music.load(lastSong)

А внутри вашей функции nextSong перед добавлением случайной песни проверьте, не существует ли уже песни для currentIndex+1.

О вас ошибка, я думаю, это из-за строки

prev = prevSongList.append(randSong)

Я не уверен, что возвращает pygame.mixer.music.load(random_song), но это может быть не строка, вместо этого следует использовать название песни:

prev = prevSongList.append(random_song)
...