diff --git a/common_functions.py b/common_functions.py new file mode 100644 index 0000000..1f9056a --- /dev/null +++ b/common_functions.py @@ -0,0 +1,53 @@ +import sys, os +import ConfigParser +import argparse + +def stdin_thread(manag): + try: + fd = sys.stdin.fileno() + while True: + data = os.read(fd, 1024) + if not data: + break + manag.execute_command(data.rstrip('\n\r')) + except: + pass + +def get_configuration(): + parser = argparse.ArgumentParser(description='Synchronize multiple players over the web.', + epilog='If no options supplied config values will be used') + parser.add_argument('host', metavar='host', type=str, nargs='?', help='server\'s address') + parser.add_argument('name', metavar='name', type=str, nargs='?', help='desired username') + parser.add_argument('args', metavar='opts', type=str, nargs='*', help='player options, if you need to pass options starting with - prepend them with single \'--\' argument') + args = parser.parse_args() + + config = ConfigParser.RawConfigParser(allow_no_value=True) + config.read('syncplay.ini') + try: + if(args.host == None): + host = config.get('sync', 'host') + else: + host = args.host + if(args.name == None): + name = config.get('sync', 'name') + else: + name = args.name + except ConfigParser.NoSectionError: + exit("Host or username not specified") + + with open('syncplay.ini', 'wb') as configfile: + try: + config.set('sync', 'host' ,host) + config.set('sync', 'name' ,name) + except ConfigParser.NoSectionError: + config.add_section('sync') + config.set('sync', 'host' ,host) + config.set('sync', 'name' ,name) + config.write(configfile) + + if ':' in host: + host, port = host.split(':', 1) + port = int(port) + else: + port = 8999 + return host,port,name,args.args \ No newline at end of file diff --git a/setup_common.py b/setup_common.py index 084700c..c21e5bd 100644 --- a/setup_common.py +++ b/setup_common.py @@ -4,7 +4,7 @@ from setuptools import find_packages common_info = dict( name = 'SyncPlay', - version = '0.1', + version = '0.2', author = 'Tomasz Kowalczyk, Uriziel', author_email = 'code@fluxid.pl', description = 'Solution to synchronize playback of multiple MPlayer and MPC-HC instances over the network.', diff --git a/sync_mpc.py b/sync_mpc.py index 57fc22e..cc54234 100755 --- a/sync_mpc.py +++ b/sync_mpc.py @@ -10,7 +10,7 @@ from syncplay.players import mpc import common_functions if __name__ == '__main__': - host,port, name = common_functions.get_configuration() + host, port, name, args = common_functions.get_configuration() manager = client.Manager(host, port, name, lambda m: mpc.run_mpc(m)) thread.start_new_thread(common_functions.stdin_thread, (manager,)) manager.start() diff --git a/sync_mplayer.py b/sync_mplayer.py index c9e6cbe..f4ca0d4 100755 --- a/sync_mplayer.py +++ b/sync_mplayer.py @@ -10,17 +10,8 @@ from syncplay.players import mplayer import common_functions if __name__ == '__main__': - args = sys.argv[1:] - host = args.pop(0) - name = args.pop(0) - if ':' in host: - host, port = host.split(':', 1) - port = int(port) - else: - port = 8999 - + host, port, name, args = common_functions.get_configuration() args.extend(('-slave', '-msglevel', 'all=1:global=4')) - 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()