diff --git a/syncplay/network_utils.py b/syncplay/network_utils.py index 286931b..1753c4e 100644 --- a/syncplay/network_utils.py +++ b/syncplay/network_utils.py @@ -2,7 +2,7 @@ from .utils import ArgumentParser from functools import wraps -from twisted.internet.protocol import ProcessProtocol + from twisted.protocols.basic import LineReceiver def argumentCount(minimum, maximum=None): @@ -69,34 +69,4 @@ class CommandProtocol(LineReceiver): self.drop() -def parse_lines(leftovers, data): - data = leftovers+data - lines = data.split('\n') - leftovers = lines.pop(-1) - return leftovers, lines - -class LineProcessProtocol(ProcessProtocol): - _leftover_out = '' - _leftover_err = '' - - def errLineReceived(self, line): - pass - - def outLineReceived(self, line): - pass - - def outReceived(self, data): - self._leftover_out, lines = parse_lines(self._leftover_out, data) - for line in lines: - self.outLineReceived(line) - - def errReceived(self, data): - self._leftover_err, lines = parse_lines(self._leftover_err, data) - for line in lines: - self.errLineReceived(line) - - def writeLines(self, *lines): - for line in lines: - self.transport.write(line+'\n') - diff --git a/syncplay/players/mplayer.py b/syncplay/players/mplayer.py index 1ab00f5..1208bba 100644 --- a/syncplay/players/mplayer.py +++ b/syncplay/players/mplayer.py @@ -1,16 +1,43 @@ #coding:utf8 -import re -import sys -from collections import deque - -from twisted.internet import reactor - -from ..network_utils import LineProcessProtocol from ..utils import find_exec_path +from collections import deque +from twisted.internet import reactor +from twisted.internet.protocol import ProcessProtocol +import re RE_ANSWER = re.compile('^ANS_([a-zA-Z_]+)=(.+)$') +class LineProcessProtocol(ProcessProtocol): + _leftover_out = '' + _leftover_err = '' + + def parse_lines(self, leftovers, data): + data = leftovers+data + lines = data.split('\n') + leftovers = lines.pop(-1) + return leftovers, lines + + def errLineReceived(self, line): + pass + + def outLineReceived(self, line): + pass + + def outReceived(self, data): + self._leftover_out, lines = self.parse_lines(self._leftover_out, data) + for line in lines: + self.outLineReceived(line) + + def errReceived(self, data): + self._leftover_err, lines = self.parse_lines(self._leftover_err, data) + for line in lines: + self.errLineReceived(line) + + def writeLines(self, *lines): + for line in lines: + self.transport.write(line+'\n') + class MplayerProtocol(LineProcessProtocol): speed_supported = True diff --git a/syncplay/utils.py b/syncplay/utils.py index 46184a8..1ec3bc3 100644 --- a/syncplay/utils.py +++ b/syncplay/utils.py @@ -53,7 +53,6 @@ class ArgumentParser(): def joinArguments(args): return ' '.join(ArgumentParser.quoteArgument(arg) for arg in args) - def find_exec_path(name): if os.access(name, os.X_OK): return name @@ -69,15 +68,6 @@ def format_time(value): hours, minutes = divmod(minutes, 60) return '%02d:%02d:%02d.%02d' % (hours, minutes, seconds, mseconds) - - - - - - - - - def stdin_thread(manager): try: fd = sys.stdin.fileno() @@ -89,8 +79,6 @@ def stdin_thread(manager): except: pass - - class ConfigurationGetter(object): def __init__(self): self._config = None