platypush/platypush/plugins/music/mpd/__init__.py

73 lines
1.7 KiB
Python
Raw Normal View History

import mpd
from platypush.message.response import Response
from .. import MusicPlugin
class MusicMpdPlugin(MusicPlugin):
2017-12-18 01:10:51 +01:00
def __init__(self, host, port):
"""
Constructor
Params:
host -- MPD host
port -- MPD port
"""
self.host = host
self.port = port
self.client = mpd.MPDClient(use_unicode=True)
2017-12-18 01:10:51 +01:00
self.client.connect(self.host, self.port)
def _exec(self, method, *args, **kwargs):
getattr(self.client, method)(*args, **kwargs)
return self.status()
def play(self):
return self._exec('play')
def pause(self):
2017-12-24 13:15:37 +01:00
status = self.status().output['state']
if status == 'play': return self._exec('pause')
else: return self._exec('play')
def stop(self):
return self._exec('stop')
2017-11-03 15:06:29 +01:00
def next(self):
return self._exec('next')
2017-11-03 15:06:29 +01:00
def previous(self):
return self._exec('previous')
2017-11-03 15:06:29 +01:00
def setvol(self, vol):
return self._exec('setvol', vol)
2017-11-03 15:06:29 +01:00
2017-12-24 13:15:37 +01:00
def volup(self, delta=10):
volume = int(self.status().output['volume'])
new_volume = volume+delta
if new_volume <= 100:
self.setvol(str(new_volume))
return self.status()
def voldown(self, delta=10):
volume = int(self.status().output['volume'])
new_volume = volume-delta
if new_volume >= 0:
self.setvol(str(new_volume))
return self.status()
2017-11-03 15:06:29 +01:00
def add(self, content):
return self._exec('add', content)
2017-11-03 15:06:29 +01:00
def playlistadd(self, playlist):
return self._exec('playlistadd', playlist)
2017-11-03 15:06:29 +01:00
def clear(self):
return self._exec('clear')
2017-11-03 15:06:29 +01:00
def status(self):
return Response(output=self.client.status())
# vim:sw=4:ts=4:et: