97 lines
2.7 KiB
Python
97 lines
2.7 KiB
Python
import logging
|
|
import random
|
|
from mpd import MPDClient
|
|
|
|
|
|
class Mpd():
|
|
|
|
def __init__(self, ip):
|
|
self.ip = ip
|
|
self.port = 6600
|
|
self.client = MPDClient() # create client object
|
|
# network timeout in seconds (floats allowed), default: None
|
|
self.client.timeout = 10
|
|
self.client.idletimeout = None
|
|
|
|
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):
|
|
res = ""
|
|
self.client.connect(self.ip, self.port)
|
|
logging.debug('Listing '+self.normalize_genre(genre))
|
|
list_album = []
|
|
try:
|
|
# todo: select only one album instead of the artist
|
|
list_album = self.client.lsinfo(
|
|
"Subsonic/Genre/"+self.normalize_genre(genre))
|
|
|
|
if (list_album):
|
|
random_album = random.choice(list_album)["directory"]
|
|
self.play_album(random_album)
|
|
res = "C'est parti !"
|
|
else:
|
|
res = "Je n\'ai rien trouvé."
|
|
except:
|
|
res = "Il y a eu une erreur durant le lancement de la musique"
|
|
finally:
|
|
self.client.close()
|
|
self.client.disconnect()
|
|
|
|
return res
|
|
|
|
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',
|
|
'francaise': 'Chanson Francaise',
|
|
'chanson anglaise': 'Chanson anglaise',
|
|
'reggae': 'Reggae',
|
|
'folk': 'Folk',
|
|
'électro': 'Electro',
|
|
'musique électronique': 'Electro',
|
|
'punk': 'Punk',
|
|
'rock': 'Rock',
|
|
'pop': 'Pop',
|
|
'latine': 'Latin',
|
|
'arabe': 'Arabic',
|
|
'corse': 'Chants Corse',
|
|
'persane': 'Chanson Persane',
|
|
'piano': 'Piano',
|
|
'rap': 'Rap',
|
|
'slam': 'Slam',
|
|
'synthpop': 'Synthpop',
|
|
'jazz classique': 'Classique Jazz',
|
|
'jazz manouche': 'Jazz Manouche',
|
|
'blues': 'Blues',
|
|
'film': 'Soundtrack',
|
|
'musique de film': 'Soundtrack',
|
|
}
|