Dla mpc dodana obsuga config file

refaktoryzacja kodu
This commit is contained in:
Uriziel 2012-06-21 12:30:54 +02:00
parent 3a25110adf
commit 575c30bbe9
3 changed files with 33 additions and 37 deletions

View File

@ -1,32 +1,16 @@
#coding:utf8 #coding:utf8
import thread import thread
import sys, os import sys
from twisted.internet import reactor from twisted.internet import reactor
from syncplay import client from syncplay import client
from syncplay.players import mpc from syncplay.players import mpc
def stdin_thread(sock):
try: import common_functions
fd = sys.stdin.fileno()
while True:
data = os.read(fd, 1024)
if not data:
break
sock.execute_command(data.rstrip('\n\r'))
except:
pass
if __name__ == '__main__': if __name__ == '__main__':
args = sys.argv[1:] host,port, name = common_functions.get_configuration()
host = args.pop(0)
name = args.pop(0)
if ':' in host:
host, port = host.split(':', 1)
port = int(port)
else:
port = 8999
manager = client.Manager(host, port, name, lambda m: mpc.run_mpc(m)) manager = client.Manager(host, port, name, lambda m: mpc.run_mpc(m))
thread.start_new_thread(stdin_thread, (manager,)) thread.start_new_thread(common_functions.stdin_thread, (manager,))
manager.start() manager.start()

View File

@ -1,12 +1,14 @@
#coding:utf8 #coding:utf8
import thread
import sys import sys
from twisted.internet import reactor from twisted.internet import reactor
from syncplay import client from syncplay import client
from syncplay.players import mplayer from syncplay.players import mplayer
import common_functions
if __name__ == '__main__': if __name__ == '__main__':
args = sys.argv[1:] args = sys.argv[1:]
host = args.pop(0) host = args.pop(0)
@ -20,5 +22,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 m: mplayer.run_mplayer(m, 'mplayer', args)) manager = client.Manager(host, port, name, lambda m: mplayer.run_mplayer(m, 'mplayer', args))
thread.start_new_thread(common_functions.stdin_thread, (manager,))
manager.start() manager.start()

View File

@ -19,7 +19,6 @@ from .utils import (
class SyncClientProtocol(CommandProtocol): class SyncClientProtocol(CommandProtocol):
def __init__(self, manager): def __init__(self, manager):
CommandProtocol.__init__(self) CommandProtocol.__init__(self)
self.manager = manager self.manager = manager
def connectionMade(self): def connectionMade(self):
@ -101,7 +100,6 @@ class SyncClientProtocol(CommandProtocol):
def send_playing(self, filename): def send_playing(self, filename):
self.send_message('playing', filename) self.send_message('playing', filename)
states = dict( states = dict(
init = dict( init = dict(
present = 'handle_init_present', present = 'handle_init_present',
@ -280,22 +278,33 @@ class Manager(object):
if self.protocol and self.player_filename: if self.protocol and self.player_filename:
self.protocol.send_playing(self.player_filename) self.protocol.send_playing(self.player_filename)
def execute_command(self, data): def exectue_seek_cmd(self, seek_type, minutes, seconds):
RE_SEEK = re.compile("^s ?(\d+)?(:(\d{1,2}))?$") self.player_position_before_last_seek = self.player_position
m = RE_SEEK.match(data) if seek_type == 's':
if m : self.counter += 1
minutes, seconds = m.group(1), m.group(3)
if minutes <> None:
minutes = int(minutes) * 60
else:
minutes = 0
if seconds <> None: if seconds <> None:
seconds = int(seconds) seconds = int(seconds)
else: else:
seconds = 0 seconds = 0
self.player_position_before_last_seek = self.player_position if minutes <> None:
self.counter += 1 seconds += int(minutes) * 60
self.protocol.send_seek(self.counter, time.time(), minutes+seconds) self.protocol.send_seek(self.counter, time.time(), seconds)
else: #seek_type s+
if seconds <> None:
seconds = int(seconds)
else:
seconds = 20
if minutes <> None:
seconds += int(minutes) * 60
else:
seconds += 60
self.protocol.send_seek(self.counter, time.time(), self.player_position+seconds)
def execute_command(self, data):
RE_SEEK = re.compile("^(s[+s]?) ?(-?\d+)?([^0-9](\d+))?$")
matched_seek = RE_SEEK.match(data)
if matched_seek :
self.exectue_seek_cmd(matched_seek.group(1), matched_seek.group(2), matched_seek.group(4))
elif data == "r": elif data == "r":
self.counter += 1 self.counter += 1
tmp_pos = self.player_position tmp_pos = self.player_position