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