# coding=utf-8 """手动测试管理系统基地接口同步。 用法: python tools/test_mgmt_bases.py python tools/test_mgmt_bases.py --sync """ import argparse import json import os import sys ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if ROOT not in sys.path: sys.path.insert(0, ROOT) def main(): parser = argparse.ArgumentParser(description='测试管理系统基地接口') parser.add_argument('--sync', action='store_true', help='拉取后写入 MySQL') parser.add_argument('--url', default=None) parser.add_argument('--key', default=None) args = parser.parse_args() from service.mgmt_bases_api import MgmtApiError, fetch_bases, map_remote_base try: items = fetch_bases(url=args.url, api_key=args.key) except MgmtApiError as exc: print(f'[FAIL] fetch: {exc}') print('请检查 DISH_MGMT_API_URL / DISH_MGMT_API_KEY,或用 --url/--key 传入。') return 1 print(f'[OK] fetched {len(items)} bases') mapped = [map_remote_base(x) for x in items] mapped = [m for m in mapped if m] print(f'[OK] mapped {len(mapped)}') if mapped: print(json.dumps(mapped[0], ensure_ascii=False, indent=2)) if args.sync: from dao.database import init_local_engine, init_server_engine from dao.base_sync import sync_bases_from_mgmt init_local_engine() init_server_engine() result = sync_bases_from_mgmt(force=True, url=args.url, api_key=args.key) print('[SYNC]', result) return 0 if result.get('ok') else 2 return 0 if __name__ == '__main__': raise SystemExit(main())