Dodanie brakujcego pliku, dodanie pliku konfiguracyjnego, argumenty

parsowane sa teraz przez ArgumentParser
This commit is contained in:
Uriziel 2012-06-21 13:40:57 +02:00
parent 575c30bbe9
commit 77927e3490
4 changed files with 56 additions and 12 deletions

53
common_functions.py Normal file
View File

@ -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

View File

@ -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.',

View File

@ -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()

View File

@ -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()