Pygame如何获得上一首歌

时间:2018-05-08 17:27:16

标签: python python-3.x raspberry-pi pygame raspberry-pi3

如果用户决定按下按钮,我想让程序转到上一首歌(请注意我在覆盆子pi上执行此操作)。问题是我无法弄清楚如何让程序进入上一首歌。我到了下一首歌的地步,我也试过了#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 :(得分:2)

同意你应该将歌曲保存在一个列表中,你也可以制作一个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来说太大了就在歌曲列表上进行垃圾收集。您甚至可以设置歌曲列表限制并通过该类处理它。

答案 1 :(得分:1)

就像你添加的那样,你应该创建一个包含所有播放歌曲的数组。为了能够正确访问前一个,您还应该有一个变量,告诉您当前在列表中的位置。

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)