У меня есть несколько песен, загружаемых и помещенных в очередь в моем проигрывателе, однако проигрыватель останавливается после первой песни, и мне приходится вручную принудительно запускать следующую песню, используя next_source (), хотя из документации я считаю, что она должна быть автоматической.
Я использую Python 3.7.1 и Pyglet 1.3.2, я изучил документацию и попробовал различные методы постановки данных в очередь.Я пытался убедиться, что файл воспроизводится полностью, хотя я не уверен, что воспроизведение первой песни когда-либо заканчивается.
chosenDirectory = ""
cSong = ""
cSongIndex = 0
player = pyglet.media.Player()
songList = []
def chooseDirectory():
global chosenDirectory
chosenDirectory = tk.filedialog.askdirectory(initialdir="/")
lbl.configure(text=chosenDirectory)
listBox.delete("0", "end")
def listFiles(dir):
global songList
songList = []
files = os.listdir(dir)
for x, file in enumerate(files):
filePath = chosenDirectory + "/" + file
if not os.path.isdir(filePath):
fileExt = file.split(".")[1]
if fileExt == "mp3" or fileExt == "wav":
listBox.insert(x, file)
songList.append(filePath)
listFiles(chosenDirectory)
class mediaControls:
def curSelect(self, info):
global cSong
if listBox.curselection() != ():
selected = listBox.get(listBox.curselection())
if selected != cSong:
cSong = selected
cSongIndex = listBox.curselection()[0]
self.playList()
def playSong(self):
if not player.playing:
player.play()
elif player.playing:
player.pause()
def playList(self):
for song in songList:
music = pyglet.media.load(song)
print(music.duration)
player.queue(music)
self.playSong()
def playNextSong(self):
player.next_source()
def playNewSong(self):
global cSong
global cSongIndex
cSongIndex = cSongIndex + 1
cSong = listBox.get(cSongIndex)
self.playSong()
Мой ожидаемый результат от этого - циклическое повторение всех песен.отказавшись от них перед переходом к следующему, и не требуя вмешательства с моей стороны.