From faf5c63c141548a9aee4bbccb29dd37b2c79e8ce Mon Sep 17 00:00:00 2001 From: Uriziel Date: Tue, 10 Jul 2012 18:22:23 +0200 Subject: [PATCH] renamed run scripts mpc webapi dropped --- setup_py2exe.py | 2 +- sync_mpc.py | 13 -- sync_mpc_api.py | 22 --- sync_mplayer.py | 19 --- syncplay/players/mpc.py | 225 ++++++++++++++---------------- syncplay/players/mpc_using_api.py | 128 ----------------- 6 files changed, 102 insertions(+), 307 deletions(-) delete mode 100755 sync_mpc.py delete mode 100644 sync_mpc_api.py delete mode 100755 sync_mplayer.py delete mode 100644 syncplay/players/mpc_using_api.py diff --git a/setup_py2exe.py b/setup_py2exe.py index 6130fb9..1640cb4 100644 --- a/setup_py2exe.py +++ b/setup_py2exe.py @@ -7,7 +7,7 @@ from setup_common import common_info info = dict( common_info, - console = ['sync_mplayer.py', 'sync_mpc_api.py', 'sync_mpc.py', 'run_sync_server.py'], + console = ['syncplay_mplayer.py', 'syncplay_mpc.py', 'run_sync_server.py'], ) setup(**info) diff --git a/sync_mpc.py b/sync_mpc.py deleted file mode 100755 index 48364cc..0000000 --- a/sync_mpc.py +++ /dev/null @@ -1,13 +0,0 @@ -#coding:utf8 -import thread - -from twisted.internet import reactor -from syncplay import client -from syncplay.players import mpc - -from syncplay import utils - -if __name__ == '__main__': - args = utils.get_configuration() - manager = client.Manager(args.host, args.port, args.name, lambda m: mpc.run_mpc(m)) - manager.start() diff --git a/sync_mpc_api.py b/sync_mpc_api.py deleted file mode 100644 index 747bbd4..0000000 --- a/sync_mpc_api.py +++ /dev/null @@ -1,22 +0,0 @@ -#coding:utf8 -from twisted.internet import reactor -from syncplay import client -from syncplay.players import mpc_using_api - -from syncplay import utils - - -def prepareArguments(): - args = utils.MPCConfigurationGetter() - args.prepareClientConfiguration() - return args.getClientConfiguration() - -if __name__ == '__main__': - manager = None - try: - args = prepareArguments() - manager = client.Manager(args.host, args.port, args.name, lambda m: mpc_using_api.run_mpc(m, args.mpc_path, args.file, args._args)) - manager.start() - finally: - if(manager): manager.stop() - diff --git a/sync_mplayer.py b/sync_mplayer.py deleted file mode 100755 index 52dd668..0000000 --- a/sync_mplayer.py +++ /dev/null @@ -1,19 +0,0 @@ -#coding:utf8 -from twisted.internet import reactor -from syncplay import client -from syncplay.players import mplayer - -from syncplay import utils - -def prepareArguments(): - args = utils.ConfigurationGetter() - args.prepareClientConfiguration() - return args.getClientConfiguration() - -if __name__ == '__main__': - args = prepareArguments() - args.args.extend(('-slave', '-msglevel', 'all=1:global=4')) - if(args.file): args.args.extend((args.file,)) - manager = client.Manager(args.host, args.port, args.name, lambda m: mplayer.run_mplayer(m, 'mplayer', args.args)) - manager.start() - diff --git a/syncplay/players/mpc.py b/syncplay/players/mpc.py index d22b389..7ec86fd 100644 --- a/syncplay/players/mpc.py +++ b/syncplay/players/mpc.py @@ -1,151 +1,128 @@ #coding:utf8 -import re +from ..mpc_api import MPC_API +import time -from twisted.internet import reactor -from twisted.web.client import Agent -from twisted.web.http_headers import Headers - -from ..network_utils import ( - BodyProducer, - handle_response, - null_response_handler, -) - -#RE_MPC_STATUS = re.compile("^OnStatus\('(.+)', '(Paused|Playing)', (\d+), '\d{2}:\d{2}:\d{2}', \d+, '\d{2}:\d{2}:\d{2}', \d+, \d+, '.+'\)$") -RE_MPC_STATUS = re.compile(r"^OnStatus\('((?:[^']*(?:\\\\)*\\')*[^']*)', '(.+?)', (\d+),") - -PLAYING_STATUSES = { - 'Playing': False, - 'Reproduzindo': False, - 'Прайграванне': False, - 'Reproduint': False, - 'Přehrávání': False, - 'Spiele ab': False, - 'Reproduciendo': False, - 'Lecture': False, - 'מנגן': False, - 'Lejátszás': False, - 'Վերարատադրվում է': False, - 'Riproduzione': False, - '再生中': False, - '재생중': False, - 'Afspelen': False, - 'Odtwarzanie...': False, - 'Воспроизведение': False, - '正在播放': False, - 'Prehráva sa': False, - 'Spelar': False, - '播放中': False, - 'Oynatılıyor': False, - 'Відтворення': False, - - 'Paused': True, - 'Pausado': True, - 'Паўза': True, - 'Pausat': True, - 'Pozastaveno': True, - 'Angehalten': True, - 'Pausado': True, - 'En pause': True, - 'מושהה': True, - 'Szünet': True, - 'Դադար': True, - 'In pausa': True, - '一時停止': True, - '일시정지': True, - 'Gepauzeerd': True, - 'Wstrzymano': True, - 'Пауза': True, - '已暂停': True, - 'Pozastavené': True, - 'Pausad': True, - '已暫停': True, - 'Duraklatıldı': True, - 'Пауза': True, -} - -class MPCHCPlayer(object): - def __init__(self, manager, host = None): +class MPCHCAPIPlayer(object): + def __init__(self, manager): self.manager = manager - self.host = 'localhost:13579' - + self.mpc_api = MPC_API() + self.pinged = False self.tmp_filename = None self.tmp_position = None - self.agent = Agent(reactor) - + self.mpc_api.callbacks.on_file_ready = lambda: self.make_ping() + self.mpc_api.callbacks.on_mpc_closed = lambda: self.mpc_error("MPC closed") + + self.semaphore_filename = False + def drop(self): pass def set_speed(self, value): pass - def display_message(self, message): - pass - + def test_mpc_ready(self): + try: + self.mpc_api.ask_for_current_position() + except MPC_API.PlayerNotReadyException: + time.sleep(0.1) + self.test_mpc_ready() + return + def make_ping(self): + self.mpc_api.callbacks.on_file_ready = None + self.test_mpc_ready() + self.manager.init_player(self) + self.pinged = True self.ask_for_status() + def display_message(self, message): + try: + self.mpc_api.send_osd(message) + except Exception, err: + self.mpc_error(err) + def set_paused(self, value): - self.send_post_request('wm_command=%d' % (888 if value else 887)) + try: + if value: + self.mpc_api.pause() + else: + self.mpc_api.unpause() + except MPC_API.PlayerNotReadyException: + time.sleep(0.2) + self.set_paused(value) + return + except Exception, err: + self.mpc_error(err) def set_position(self, value): - value = int(value*1000) - seconds, mseconds = divmod(value, 1000) - minutes, seconds = divmod(seconds, 60) - hours, minutes = divmod(minutes, 60) - self.send_post_request('wm_command=-1&position=%d.%d.%d.%d' % ( - hours, minutes, seconds, mseconds - )) - - def status_response(self, status, headers, body): - m = RE_MPC_STATUS.match(body) - if m: - filename, paused, position = m.group(1), m.group(2), m.group(3) - paused = PLAYING_STATUSES.get(paused) - else: - filename, paused, position = self.tmp_filename, True, self.tmp_position - if paused is None: - paused = True #assume stopped or changing episodes! - position = self.tmp_position - else: - position = float(position)/1000 - self.tmp_position = position - if self.pinged: - self.manager.update_player_status(paused, position) - else: - self.pinged = True - self.manager.init_player(self) - if filename != self.tmp_filename: - self.tmp_filename = filename - self.manager.update_filename(filename) + try: + self.mpc_api.seek(value) + except MPC_API.PlayerNotReadyException: + self.set_position(value) + return + except Exception, err: + self.mpc_error(err) def ask_for_status(self): - request = self.agent.request( - 'GET', - 'http://localhost:13579/status.html', - Headers(), - None, - ) - request.addCallbacks(handle_response(self.status_response), self.mpc_error) + position = self.tmp_position if self.tmp_position else 0 + paused = None + try: + if(self.mpc_api.is_file_ready() and not self.semaphore_filename): + try: + position = self.mpc_api.ask_for_current_position() + except MPC_API.PlayerNotReadyException: + time.sleep(0.1) + self.ask_for_status() + return + if(self.tmp_filename <> self.mpc_api.fileplaying): + self.handle_updated_filename(self.mpc_api.fileplaying) + return + paused = self.mpc_api.is_paused() + position = float(position) + self.tmp_position = position + self.manager.update_player_status(paused, position) + else: + self.manager.update_player_status(True, self.manager.get_global_position()) + except Exception, err: + self.mpc_error(err) - def send_post_request(self, body): - request = self.agent.request( - 'POST', - 'http://%s/command.html' % self.host, - Headers({'Content-Type': ['application/x-www-form-urlencoded']}), - BodyProducer(body), - ) - request.addCallbacks(handle_response(null_response_handler), self.mpc_error) + def __force_pause(self, filename, position): + self.set_paused(True) + time.sleep(0.1) + if (not self.mpc_api.is_paused()): + self.__set_up_newly_opened_file(filename, position) - def mpc_error(self, error): + def __set_up_newly_opened_file(self, filename, position): + self.test_mpc_ready() + try: + self.mpc_api.seek(position) + except MPC_API.PlayerNotReadyException: + time.sleep(0.1) + self.__set_up_newly_opened_file(filename, position) + self.__force_pause(filename, position) + + def handle_updated_filename(self, filename): + position = self.manager.get_global_position() + if(self.semaphore_filename): + self.manager.update_player_status(True, position) + return + self.semaphore_filename = True + self.__set_up_newly_opened_file(filename, position) + self.tmp_filename = filename + self.manager.update_filename(str(self.tmp_filename)) + self.manager.update_player_status(True, position) + self.semaphore_filename = False + + def mpc_error(self, err=""): + print "ERROR:", str(err) + ',', "desu" if self.manager.running: - print 'Failed to connect to MPC-HC web interface' + print 'Failed to connect to MPC-HC API!' self.manager.stop() -def run_mpc(manager, host=None): - mpc = MPCHCPlayer(manager, host) - mpc.make_ping() - +def run_mpc(manager, mpc_path, file_path, args): + mpc = MPCHCAPIPlayer(manager) + mpc.mpc_api.callbacks.on_connected = lambda: mpc.mpc_api.open_file(file_path) if(file_path) else None + mpc.mpc_api.start_mpc(mpc_path, args) diff --git a/syncplay/players/mpc_using_api.py b/syncplay/players/mpc_using_api.py deleted file mode 100644 index 7ec86fd..0000000 --- a/syncplay/players/mpc_using_api.py +++ /dev/null @@ -1,128 +0,0 @@ -#coding:utf8 - -from ..mpc_api import MPC_API -import time - -class MPCHCAPIPlayer(object): - def __init__(self, manager): - self.manager = manager - self.mpc_api = MPC_API() - - self.pinged = False - self.tmp_filename = None - self.tmp_position = None - - self.mpc_api.callbacks.on_file_ready = lambda: self.make_ping() - self.mpc_api.callbacks.on_mpc_closed = lambda: self.mpc_error("MPC closed") - - self.semaphore_filename = False - - def drop(self): - pass - - def set_speed(self, value): - pass - - def test_mpc_ready(self): - try: - self.mpc_api.ask_for_current_position() - except MPC_API.PlayerNotReadyException: - time.sleep(0.1) - self.test_mpc_ready() - return - - def make_ping(self): - self.mpc_api.callbacks.on_file_ready = None - self.test_mpc_ready() - self.manager.init_player(self) - self.pinged = True - self.ask_for_status() - - def display_message(self, message): - try: - self.mpc_api.send_osd(message) - except Exception, err: - self.mpc_error(err) - - def set_paused(self, value): - try: - if value: - self.mpc_api.pause() - else: - self.mpc_api.unpause() - except MPC_API.PlayerNotReadyException: - time.sleep(0.2) - self.set_paused(value) - return - except Exception, err: - self.mpc_error(err) - - def set_position(self, value): - try: - self.mpc_api.seek(value) - except MPC_API.PlayerNotReadyException: - self.set_position(value) - return - except Exception, err: - self.mpc_error(err) - - def ask_for_status(self): - position = self.tmp_position if self.tmp_position else 0 - paused = None - try: - if(self.mpc_api.is_file_ready() and not self.semaphore_filename): - try: - position = self.mpc_api.ask_for_current_position() - except MPC_API.PlayerNotReadyException: - time.sleep(0.1) - self.ask_for_status() - return - if(self.tmp_filename <> self.mpc_api.fileplaying): - self.handle_updated_filename(self.mpc_api.fileplaying) - return - paused = self.mpc_api.is_paused() - position = float(position) - self.tmp_position = position - self.manager.update_player_status(paused, position) - else: - self.manager.update_player_status(True, self.manager.get_global_position()) - except Exception, err: - self.mpc_error(err) - - def __force_pause(self, filename, position): - self.set_paused(True) - time.sleep(0.1) - if (not self.mpc_api.is_paused()): - self.__set_up_newly_opened_file(filename, position) - - def __set_up_newly_opened_file(self, filename, position): - self.test_mpc_ready() - try: - self.mpc_api.seek(position) - except MPC_API.PlayerNotReadyException: - time.sleep(0.1) - self.__set_up_newly_opened_file(filename, position) - self.__force_pause(filename, position) - - def handle_updated_filename(self, filename): - position = self.manager.get_global_position() - if(self.semaphore_filename): - self.manager.update_player_status(True, position) - return - self.semaphore_filename = True - self.__set_up_newly_opened_file(filename, position) - self.tmp_filename = filename - self.manager.update_filename(str(self.tmp_filename)) - self.manager.update_player_status(True, position) - self.semaphore_filename = False - - def mpc_error(self, err=""): - print "ERROR:", str(err) + ',', "desu" - if self.manager.running: - print 'Failed to connect to MPC-HC API!' - self.manager.stop() - -def run_mpc(manager, mpc_path, file_path, args): - mpc = MPCHCAPIPlayer(manager) - mpc.mpc_api.callbacks.on_connected = lambda: mpc.mpc_api.open_file(file_path) if(file_path) else None - mpc.mpc_api.start_mpc(mpc_path, args)