[python] Jukebox - InstinctHack - 25-02-2013
Salut,
Encore un script inutile, mais au combien plaisant \o/
dépendance : mplayer
beug, idée, etc, allez-y!
Pour le beug des quotes, je sais... (aussi pour l'insertion de code)
Code PYTHON :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os,random,time,sys
class Jukebox():
def __init__(self,path,number,time,extensions):
self.files=[]
self.path=""
self.number=0
self.time=0
self.extensions=[]
if path[-1]!="/":
path+="/"
if os.path.isdir(path):
self.path=path
try:
self.number=int(number)
except:
print("time incorrect")
else:
try:
time=int(time)
except:
print("time incorrect")
else:
if time>0:
self.time=time
self.extensions=extensions.split(",")
self.loop()
else:
print("c'est une blague ?")
else:
print("path incorrect")
def loop(self):
while self.number!=0:
self.maj_bdd()
self.listen()
time.sleep(5)
self.number-=1
def maj_bdd(self):
self.files=[]
self.parcours_rep(self.path)
def parcours_rep(self,rep):
for element in os.listdir(rep):
if os.path.isdir(rep+element):
self.parcours_rep(rep+element+"/")
elif os.path.isfile(rep+element):
if "." in element:
extension=element.split(".")[-1]
if extension in self.extensions:
self.files.append(rep+element)
def listen(self):
if len(self.files)>0:
os.system('mplayer "'+self.files[random.randint(0,len(self.files)-1)]+'"')
else:
print("Aucun fichier n'as était trouver...")
if len(sys.argv)==5:
Jukebox(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4])
else:
print("Lancer ce script avec 3 paramètres")
print("le premier est le path de votre bibliothèque multimédia")
print("le deuxième le nombre de média lu souhaité (-1 pour infini)")
print("le troisième le temps entre la lecture de chaque média")
print("le quatrième les extensions des médias 3 souhaités, séparées par des virgules")
RE: [python] Jukebox - gruik - 25-02-2013
(25-02-2013, 00h56)khaled a écrit : os.system(...)
oh nooees 
t'aurais moyen de faire moins inutile en utilisant un binding fait pour, m'est avis
pis si t'avais moyen de mettre quelques maigres commentaires ce serait joie
RE: [python] Jukebox - InstinctHack - 25-02-2013
J'ai test d'install le truc, mais j'ai un problème de socket...
j'ai quand même commenté mon code :
Code PYTHON :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os,random,time,sys
class Jukebox():
"""
Classe qui représente un jukebox
"""
def __init__(self,path,number,time,extensions):
"""
Function appellée à l'initialisatation de l'objet
"""
#Initialisation des variables
#uniquement pour avoir la liste des variables de l'objets et de leur types
self.files=[]
self.path=""
self.number=0
self.time=0
self.extensions=[]
if path[-1]!="/":#si il manque un / à la fin du path passé en paramètre, on lui rajoute
path+="/"
if os.path.isdir(path):#si le path existe
self.path=path#on le met de coté
#on essaye de transtyper le parametre en nombre
try:
self.number=int(number)
except:#si une erreur survient, c'est que c'était pas un nombre
print("time incorrect")
else:#sinon si tout s'est bien passé
#on fait la même avec time, mais cette fois, on vérifie en plus qu'il est positif, non nul
try:
time=int(time)
except:
print("time incorrect")
else:
#si c'est bon, on met de coté
if time>0:
self.time=time
self.extensions=extensions.split(",")#on split le paramètre extensions avec "," pour obtenir la liste des extensions autorisées
self.loop()
else:
print("c'est une blague ?")#un delai d'attente négatif ? je veut pareil au ciné :>
else:
print("path incorrect")
"""
Function qui tourne tant qu'elle n'as pas lu le nombre de média demandé
"""
def loop(self):
while self.number!=0:#on met != et pas >0 car on as pus lui passer un nombre négatif afin de faire une boucle infinie
self.maj_bdd()#on met à jour la liste des médias
self.listen()#on en écoute un
time.sleep(self.time)#on attend le temps qu'il faut
self.number-=1#on décrémente et c'est repartie \o/
"""
Function dont le but est de être à jour la liste des médias
"""
def maj_bdd(self):
self.files=[]#on supprime ce qui existe
self.parcours_rep(self.path)#on parcours récursivement le path passé en paramètre
"""
Function qui parcours un repertoire et s'appelle elle-meme si elle tombe sur un répertoire,
et ajoute tous les fichiers qui correspondent aux extensions passsés en paramètres
"""
def parcours_rep(self,rep):
for element in os.listdir(rep):#on parcours les elements du repertoire
if os.path.isdir(rep+element):#si c'est un répertoire
self.parcours_rep(rep+element+"/")#on refait un tour de petit train
elif os.path.isfile(rep+element):#sinon si c'est un fichier
if "." in element:#on vérifie qu'un point existe dans le nom du fichier
extension=element.split(".")[-1]#on récupère l'extension du fichier
if extension in self.extensions:#si elle match avec la liste
self.files.append(rep+element)#on l'ajoute avec le reste des médias
"""
Function qui choisi un média au hasard, et le lit
"""
def listen(self):
if len(self.files)>0:#car on ne fait pas un randint(0,0)
os.system('mplayer "'+self.files[random.randint(0,len(self.files)-1)]+'"')
else:
print("Aucun fichier n'as était trouver...")
if len(sys.argv)==5:#si il y a 4 arguments
Jukebox(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4]) #créer une instance, et lui passer les arguments
else:
print("Lancer ce script avec 4 paramètres")
print("le premier est le path de votre bibliothèque multimédia")
print("le deuxième le nombre de média lu souhaité (-1 pour infini)")
print("le troisième le temps entre la lecture de chaque média")
print("le quatrième les extensions des médias 3 souhaités, séparées par des virgules")
|