123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #!/usr/bin/env python3
- # PYTHON_ARGCOMPLETE_OK
- import os
- import sys
- import tooncher
- import yaml
- def run(username, config_path, engine_path=None, validate_ssl_certs=True,
- cpu_limit_percent=None, enable_extended_keyboard_controls=False,
- extended_keyboard_control_toggle_keysym_name=None):
- if os.path.exists(config_path):
- with open(config_path) as f:
- config = yaml.load(f.read())
- else:
- config = {}
- if engine_path is None:
- if 'engine_path' in config:
- engine_path = config['engine_path']
- else:
- raise Exception('missing path to toontown engine')
- accounts = config['accounts'] if 'accounts' in config else []
- for account in accounts:
- if account['username'] == username:
- tooncher.launch(
- engine_path=engine_path,
- username=account['username'],
- password=account['password'],
- validate_ssl_certs=validate_ssl_certs,
- cpu_limit_percent=cpu_limit_percent,
- enable_extended_keyboard_controls=enable_extended_keyboard_controls,
- extended_keyboard_control_toggle_keysym_name=extended_keyboard_control_toggle_keysym_name,
- )
- def _init_argparser():
- import argparse
- argparser = argparse.ArgumentParser(description=None)
- argparser.add_argument('username')
- argparser.add_argument(
- '--config',
- '-c',
- metavar='path',
- dest='config_path',
- help='path to config file (default: %(default)s)',
- default=os.path.join(os.path.expanduser('~'), '.tooncher'),
- )
- argparser.add_argument(
- '--engine-path',
- '-e',
- metavar='path',
- dest='engine_path',
- default=tooncher.TOONTOWN_ENGINE_DEFAULT_PATH,
- help='\n'.join([
- 'path to toontown engine.',
- 'this overrides the one specified in config file',
- '(default: %(default)s)',
- ]),
- )
- argparser.add_argument(
- '--no-ssl-cert-validation',
- '-k',
- dest='validate_ssl_certs',
- help='do not validate ssl certificates',
- action='store_false',
- )
- argparser.add_argument(
- '--cpu-limit',
- dest='cpu_limit_percent',
- type=int,
- default=None,
- help='maximally allowed cpu usage in percent'
- + ' (requires cpulimit command, default: %(default)s)',
- )
- argparser.add_argument(
- '--extended-controls',
- dest='enable_extended_keyboard_controls',
- action='store_true',
- help='enable extended keyboard controls'
- + ', e.g. walk with WASD'
- + ' (requires xlib for python, default: %(default)s)',
- )
- argparser.add_argument(
- '--extended-controls-toggle',
- metavar='KEYSYM_NAME',
- dest='extended_keyboard_control_toggle_keysym_name',
- default='grave',
- help='key to turn extended keyboard controls on / off.'
- + ' any keysym name may be used'
- + ' (see XStringToKeysym & X11/keysymdef.h, '
- + ' default: %(default)s)',
- )
- return argparser
- def main(argv):
- argparser = _init_argparser()
- try:
- import argcomplete
- argcomplete.autocomplete(argparser)
- except ImportError:
- pass
- args = argparser.parse_args(argv)
- run(**vars(args))
- return 0
- if __name__ == "__main__":
- sys.exit(main(sys.argv[1:]))
|