Further changes and fixes in MPC support, pushed filename to manager
This commit is contained in:
parent
8ed7f061bc
commit
423ac2252c
@ -17,6 +17,6 @@ if __name__ == '__main__':
|
||||
else:
|
||||
port = 8999
|
||||
|
||||
manager = client.Manager(host, port, name, lambda: mpc.MPCHCPlayer(manager))
|
||||
manager = client.Manager(host, port, name, lambda m: mpc.run_mpc(m))
|
||||
manager.start()
|
||||
|
||||
|
||||
@ -19,6 +19,6 @@ if __name__ == '__main__':
|
||||
|
||||
args.extend(('-slave', '-msglevel', 'all=1:global=4'))
|
||||
|
||||
manager = client.Manager(host, port, name, lambda: mplayer.run_mplayer(manager, 'mplayer', args))
|
||||
manager = client.Manager(host, port, name, lambda m: mplayer.run_mplayer(m, 'mplayer', args))
|
||||
manager.start()
|
||||
|
||||
|
||||
@ -96,6 +96,7 @@ class Manager(object):
|
||||
self.player_position = 0.0
|
||||
self.last_player_update = None
|
||||
self.player_speed_fix = False
|
||||
self.player_filename = None
|
||||
|
||||
self.make_player = make_player
|
||||
self.running = False
|
||||
@ -139,8 +140,9 @@ class Manager(object):
|
||||
return position
|
||||
|
||||
|
||||
def init_player(self, player):
|
||||
def init_player(self, player, filename=None):
|
||||
self.player = player
|
||||
self.player_filename = filename
|
||||
if self.last_global_update:
|
||||
self.player.set_position(self.get_global_position())
|
||||
self.player.set_paused(self.global_paused)
|
||||
@ -149,7 +151,7 @@ class Manager(object):
|
||||
def init_protocol(self, protocol):
|
||||
self.protocol = protocol
|
||||
self.schedule_send_status()
|
||||
self.make_player()
|
||||
self.make_player(self)
|
||||
|
||||
|
||||
def schedule_ask_player(self, when=0.2):
|
||||
|
||||
@ -70,11 +70,16 @@ class MPCHCPlayer(object):
|
||||
self.manager = manager
|
||||
self.host = 'localhost:13579'
|
||||
|
||||
self.filename = None # To be moved to Manager
|
||||
self.pinged = False
|
||||
|
||||
manager.player = self
|
||||
self.agent = Agent(reactor)
|
||||
|
||||
def drop(self):
|
||||
pass
|
||||
|
||||
def make_ping(self):
|
||||
self.ask_for_status()
|
||||
|
||||
def set_paused(self, value):
|
||||
self.send_post_request('wm_command=%d' % (888 if value else 887))
|
||||
|
||||
@ -87,8 +92,6 @@ class MPCHCPlayer(object):
|
||||
hours, minutes, seconds, mseconds
|
||||
))
|
||||
|
||||
self.send_post_request(body)
|
||||
|
||||
def status_response(self, status, headers, body):
|
||||
m = RE_MPC_STATUS.match(body)
|
||||
if not m:
|
||||
@ -98,19 +101,21 @@ class MPCHCPlayer(object):
|
||||
paused = PLAYING_STATUSES.get(paused)
|
||||
if paused is None:
|
||||
return
|
||||
if self.filename is None:
|
||||
self.filename = filename
|
||||
position = float(position)/1000
|
||||
self.manager.update_player_status(paused, position)
|
||||
if self.pinged:
|
||||
self.manager.update_player_status(paused, position)
|
||||
else:
|
||||
self.pinged = True
|
||||
self.manager.init_player(self, filename)
|
||||
|
||||
def ask_for_status(self, propertyName):
|
||||
def ask_for_status(self):
|
||||
request = self.agent.request(
|
||||
'GET',
|
||||
'http://localhost:13579/status.html',
|
||||
Headers(),
|
||||
None,
|
||||
)
|
||||
request.addCallback(handle_response(self.status_response))
|
||||
request.addCallbacks(handle_response(self.status_response), self.mpc_error)
|
||||
|
||||
def send_post_request(self, body):
|
||||
request = self.agent.request(
|
||||
@ -119,5 +124,15 @@ class MPCHCPlayer(object):
|
||||
Headers({'Content-Type': ['application/x-www-form-urlencoded']}),
|
||||
BodyProducer(body),
|
||||
)
|
||||
request.addCallback(handle_response(null_response_handler))
|
||||
request.addCallbacks(handle_response(null_response_handler), self.mpc_error)
|
||||
|
||||
def mpc_error(self, error):
|
||||
if self.manager.running:
|
||||
print 'Failed to connect to MPC-HC web interface'
|
||||
self.manager.stop()
|
||||
|
||||
|
||||
def run_mpc(manager, host=None):
|
||||
mpc = MPCHCPlayer(manager, host)
|
||||
mpc.make_ping()
|
||||
|
||||
|
||||
@ -19,7 +19,6 @@ class MplayerProtocol(LineProcessProtocol):
|
||||
self.manager = manager
|
||||
self.ignore_end = False
|
||||
self.error_lines = deque(maxlen=50)
|
||||
self.filename = None # To be moved to Manager
|
||||
self.tmp_paused = None
|
||||
|
||||
def connectionMade(self):
|
||||
@ -61,7 +60,6 @@ class MplayerProtocol(LineProcessProtocol):
|
||||
self.set_paused(True)
|
||||
self.set_position(0)
|
||||
self.send_get_filename()
|
||||
self.manager.init_player(self)
|
||||
|
||||
def ask_for_status(self):
|
||||
self.send_get_paused()
|
||||
@ -79,7 +77,7 @@ class MplayerProtocol(LineProcessProtocol):
|
||||
self.send_get_property('filename')
|
||||
|
||||
def mplayer_answer_filename(self, value):
|
||||
self.filename = value
|
||||
self.manager.init_player(self, value)
|
||||
|
||||
|
||||
def set_paused(self, value):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user