ratatouille/src/mpd.py

78 lines
2.2 KiB
Python

import logging
import random
from mpd import MPDClient
class Mpd():
def __init__(self,ip, yoda):
self.ip = ip
self.port = 6600
self.client = MPDClient() # create client object
self.client.timeout = 10 # network timeout in seconds (floats allowed), default: None
self.client.idletimeout = None
self.yoda = yoda
self.client.connect(ip, self.port)
logging.debug(self.client.mpd_version)
self.client.close()
self.client.disconnect()
def pause(self):
self.client.connect(self.ip, self.port)
logging.debug(self.client.mpd_version)
self.client.pause(1)
self.client.close()
self.client.disconnect()
def start(self):
self.client.connect(self.ip, self.port)
self.client.pause(0)
self.client.close()
self.client.disconnect()
def play_genre(self, genre):
self.client.connect(self.ip, self.port)
logging.debug('Listing '+self.normalize_genre(genre))
try:
# todo: select only one album instead of the artist
list_album = self.client.lsinfo("Files/Genres/"+self.normalize_genre(genre))
except:
list_album = []
if(list_album):
random_album = random.choice(list_album)["directory"]
self.play_album(random_album)
else:
self.yoda.say("Je n\'ai rien trouvé")
self.client.close()
self.client.disconnect()
def play_album(self,directory):
self.client.stop()
self.yoda.say("Lancement de "+directory.split('/')[-1])
logging.debug('Playing '+directory)
self.client.clear()
self.client.add(directory)
self.client.play(0)
def normalize_genre(self,genre):
return NORMALIZED_GENRE[genre.lower()]
NORMALIZED_GENRE = {
'classique': 'classique',
'musique classique': 'classique',
'jazz': 'jazz',
'chanson française': 'chanson francaise',
'chanson anglaise': 'chanson anglaise',
'musique de film': 'musique de film',
'électro': 'electro',
'musique électronique': 'electro',
'rock': 'rock',
'pop': 'pop',
'chanson latine': 'chanson latine',
}