tooncher 2.3 KB

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