Seite 1 von 1

mp3s shuffeln

Verfasst: Montag 16. April 2007, 22:22
von abgdf
http://www.linux-club.de/ftopic79404.html

Keyboard-input war nicht ganz leicht und ist jetzt cool.

Viele Grüße

Verfasst: Freitag 14. September 2007, 16:57
von abgdf
Update: Jetzt werden auch Unterverzeichnisse nach Dateien auf ".mp3" durchsucht. Siehe Thread dort (Link oben).

Verfasst: Freitag 14. September 2007, 20:20
von veers
man mpg321 hat geschrieben:--random or -Z Play files randomly until interrupted
--shuffle or -z Shuffle list of files before playing
;)

Verfasst: Freitag 14. September 2007, 21:34
von abgdf
@veers: Ja, "mpg321 -z/-Z" hatte ich auf der Seite ja auch erwähnt. Probier mein Skript halt mal aus (wenn Du mit Linux / xterm unterwegs bist), vielleicht merkst Du dann, warum ich das trotzdem geschrieben habe (und warum mpg321 so einen Remote-control-mode zur Verfügung stellt). Kostet ja nichts :wink:.

Andererseits macht mein Skript das halt genau so, wie ich persönlich es will, es kann gut sein, daß andere das anders wollen, und das Skript dann nicht so praktisch finden :roll:.
Das ist eben Geschmacksfrage, und die anderen Programme waren da zwar ganz gut, aber eben nicht GENAU so.

Zum Beispiel habe ich keine Lust, mit Playlists zu hantieren. Ich will einfach in ein Verzeichnis gehen und dort jeweils sofort alle mp3s angezeigt bekommen und abspielen. Auch das mit der direkten Tastaturkontrolle mit schnellem Vor- und Zurückspringen zwischen den Stücken ist mir wichtig.

Viele Grüße

Verfasst: Samstag 15. September 2007, 12:27
von HWK
Ich habe den Code nur kurz überflogen und bin dabei über ein paar Dinge gestolpert:
In der Methode getMp3List müsste a.remove(u) wohl a.remove(i) heißen; viel einfacher wäre aber doch

Code: Alles auswählen

...
a.sort(key=os.path.basename)
return a
os.path.basename kann übrigens statt Deiner cutDir-Methode verwendet werden.

Für die mehrfachen print-Anweisungen in verschiedenen Methoden böte sich

Code: Alles auswählen

print '''Mehrzeiliger
Text'''
an.

In der inneren while-Schleife von playShuffle sollten alle bis auf die ersten beiden ifs in elif geändert werden.

Code: Alles auswählen

        self.rorder = [] 
        for i in range(self.nrmp3s): 
            self.rorder.append(i) 
        random.shuffle(self.rorder) 
wäre einfacher

Code: Alles auswählen

self.rorder = random.sample(range(self.nrmp3s), self.nrmp3s)
Die Schleife

Code: Alles auswählen

        sn = "" 

        while not sn.isdigit(): 
            sn = raw_input('Song to play (q to quit) ? ') 

            if sn == "q": 
                self.newTerminalSettings() 
                self.current -= 1 
                print 
                return 

            if sn.isdigit(): 
                if sn == "0" or int(sn) > self.nrmp3s: 
                    sn = "" 
würde ich eher so formulieren:

Code: Alles auswählen

        while True: 
            sn = raw_input('Song to play (q to quit) ? ') 

            if sn == "q": 
                self.newTerminalSettings() 
                self.current -= 1 
                print 
                return 

            if sn.isdigit() and 0 < int(sn) <= self.nrmp3s: 
                break
Bei den Eingaben würde ich auch Großbuchstaben erlauben.

Nach PEP8 sollten Methoden in der Form new_terminal_settings benannt werden.

MfG
HWK