2016-04-10 4 views
1

Ich möchte mehrere Songs über eine Playlist mit Python spielen können, aber es wird nur das letzte Lied auf der Liste spielen. Bitte helfen Sie.Musik-Player für Python funktioniert nicht

from pygame import mixer # Load the required library 
from os import listdir 
k = listdir('C:/LOCAL') 
print(k) 
mixer.init() 
for x in k: 
    y = "C:/LOCAL/" + x 
    print y 
    mixer.music.queue(y) 
    mixer.music.load(y) 
    mixer.music.play() 

Antwort

2

Ihr Problem ist, dass Sie davon ausgehen, dass die Musik mit pygame spielt das Programm anhalten, bis die Musik beendet ist - was nicht der Fall ist. Als Ergebnis wird versucht, ein Lied zu starten, und dann beginnt es ein anderes und ein anderes usw.

Es gibt ein paar Möglichkeiten zu versuchen, dies zu korrigieren. Sie können entweder:

  1. Verwenden pygame Ereignisse und „tell“ pygame ein Ereignis ausgelöst, wenn der Song beendet (obwohl dies erfordert eine Anzeigefläche (Fenster) innerhalb pygame geöffnet werden) oder
  2. die Länge Detect des Songs und Schlaf für diese Zeit (die mehr kompatibel mit Ihrem aktuellen Code ist).

Ich gehe davon aus, dass Sie Option 2 tun möchten, da Ihr Code besser damit arbeitet.

Um die Länge einer MP3-Datei zu erhalten (ich habe es nicht mit anderen Typen versucht), könnten Sie die Mutagen-Bibliothek verwenden.

Einige Codebeispiel wird die Länge einer MP3-Datei (in Sekunden) erhalten:

from mutagen.mp3 import MP3 
tracklength = MP3("/path/to/song.mp3").info.length 

Dann könnte man den Weg mit y und time.sleep für die Höhe der Zeit zurück ersetzen, bevor er zum nächsten fort Iteration der Schleife.

Hoffe, dass hilft.

(auch, Sie brauchen es nicht, eine Datei in der Warteschlange vor dem Laden - nur load und play)

+0

Danke !!!!!!!! – user3570933

+0

Kein Problem, @ user3570933, aber wenn meine Antwort half, könnten Sie das bitte akzeptieren? Es ist das Häkchen direkt unter den Pfeilen und die Zahl links von meiner Antwort. – Scratso

Verwandte Themen