tooncher 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/usr/bin/env python3
  2. # PYTHON_ARGCOMPLETE_OK
  3. import os
  4. import sys
  5. import tooncher
  6. import yaml
  7. def run(username, config_path, engine_path=None, validate_ssl_certs=True,
  8. cpu_limit_percent=None, enable_extended_keyboard_controls=False):
  9. if os.path.exists(config_path):
  10. with open(config_path) as f:
  11. config = yaml.load(f.read())
  12. else:
  13. config = {}
  14. if engine_path is None:
  15. if 'engine_path' in config:
  16. engine_path = config['engine_path']
  17. else:
  18. raise Exception('missing path to toontown engine')
  19. accounts = config['accounts'] if 'accounts' in config else []
  20. for account in accounts:
  21. if account['username'] == username:
  22. tooncher.launch(
  23. engine_path=engine_path,
  24. username=account['username'],
  25. password=account['password'],
  26. validate_ssl_certs=validate_ssl_certs,
  27. cpu_limit_percent=cpu_limit_percent,
  28. enable_extended_keyboard_controls=enable_extended_keyboard_controls,
  29. )
  30. def _init_argparser():
  31. import argparse
  32. argparser = argparse.ArgumentParser(description=None)
  33. argparser.add_argument('username')
  34. argparser.add_argument(
  35. '--config',
  36. '-c',
  37. metavar='path',
  38. dest='config_path',
  39. help='path to config file (default: %(default)s)',
  40. default=os.path.join(os.path.expanduser('~'), '.tooncher'),
  41. )
  42. argparser.add_argument(
  43. '--engine-path',
  44. '-e',
  45. metavar='path',
  46. dest='engine_path',
  47. default=tooncher.TOONTOWN_ENGINE_DEFAULT_PATH,
  48. help='\n'.join([
  49. 'path to toontown engine.',
  50. 'this overrides the one specified in config file',
  51. '(default: %(default)s)',
  52. ]),
  53. )
  54. argparser.add_argument(
  55. '--no-ssl-cert-validation',
  56. '-k',
  57. dest='validate_ssl_certs',
  58. help='do not validate ssl certificates',
  59. action='store_false',
  60. )
  61. argparser.add_argument(
  62. '--cpu-limit',
  63. dest='cpu_limit_percent',
  64. type=int,
  65. default=None,
  66. help='maximally allowed cpu usage in percent'
  67. + ' (requires cpulimit command, default: %(default)s)',
  68. )
  69. argparser.add_argument(
  70. '--extended-controls',
  71. dest='enable_extended_keyboard_controls',
  72. action='store_true',
  73. help='enable extended keyboard controls'
  74. + ', e.g. walk with WASD'
  75. + ' (requires xlib for python, default: %(default)s)',
  76. )
  77. return argparser
  78. def main(argv):
  79. argparser = _init_argparser()
  80. try:
  81. import argcomplete
  82. argcomplete.autocomplete(argparser)
  83. except ImportError:
  84. pass
  85. args = argparser.parse_args(argv)
  86. run(**vars(args))
  87. return 0
  88. if __name__ == "__main__":
  89. sys.exit(main(sys.argv[1:]))