| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import requests
- import os
- from datetime import datetime
- # --- 配置区域 ---
- # 替换为你的存储服务端实际地址和端口
- SERVER_URL = "http://127.0.0.1:7755"
- API_ENDPOINT = f"{SERVER_URL}/api/import/process_and_import"
- def import_card(
- card_name: str,
- cardNo: str,
- card_type: str,
- is_reflect_card: bool,
- strict_mode: bool,
- paths: dict
- ):
- """
- 请求后端的自动导入接口
- """
- # 构造请求的 JSON Payload
- payload = {
- "card_name": card_name,
- "cardNo": cardNo,
- "card_type": card_type,
- "is_reflect_card": is_reflect_card,
- "strict_mode": strict_mode,
- "path_front_ring": paths.get("front_ring"),
- "path_front_coaxial": paths.get("front_coaxial"),
- "path_back_ring": paths.get("back_ring"),
- "path_back_coaxial": paths.get("back_coaxial"),
- "path_front_gray": paths.get("front_gray"),
- "path_back_gray": paths.get("back_gray")
- }
- # 可选:在客户端进行一次基础的文件存在性校验,避免浪费网络请求
- for key, path in payload.items():
- if key.startswith("path_") and path is not None:
- if not os.path.exists(path):
- print(f"[警告] 本地文件不存在: {path}")
- # 如果文件不存在,将其置为 None,交由服务端的 strict_mode 决定是否报错
- payload[key] = None
- print(f"\n🚀 开始请求导入接口: {card_name} (编号: {cardNo})")
- try:
- # 注意:由于后端要并发调用推理服务、转正并保存数据库,这里把 timeout 设置得稍微长一点 (120秒)
- response = requests.post(API_ENDPOINT, json=payload, timeout=120)
- if response.status_code == 200:
- data = response.json()
- print(f"✅ 导入成功! 返回数据: {data}")
- else:
- print(f"❌ 导入失败! 状态码: {response.status_code}")
- try:
- print(f"❌ 错误详情: {response.json()}")
- except:
- print(f"❌ 错误详情: {response.text}")
- except requests.exceptions.Timeout:
- print("❌ 请求超时!后端可能还在处理,请检查服务端日志。")
- except requests.exceptions.RequestException as e:
- print(f"❌ 请求发生异常: {e}")
- if __name__ == "__main__":
- # --- 测试配置 ---
- BASE_PATH = r"C:\Code\ML\Image\Card\img20_test"
- IS_REFLECT = True
- CARD_TYPE = "pokemon"
- # 模拟循环处理 (类似你原来的逻辑)
- for img_num in range(2, 3): # 测试 1 到 3
- print(f"\n>>>>> 准备处理图片组: {img_num}")
- # 构造卡牌信息
- timestamp = datetime.now().strftime('%m%d_%H%M%S')
- card_name = f"API测试卡_{img_num}_{timestamp}"
- cardNo = f"SN-TEST-{img_num:03d}"
- # 构造路径字典 (根据你的实际命名规则修改)
- # 注意:我在 back_ring 的地方复用了你之前脚本里硬编码的路径作为示例
- image_paths = {
- "front_coaxial": os.path.join(BASE_PATH, f"{img_num}_front_coaxial.jpg"),
- "front_ring": os.path.join(BASE_PATH, f"{img_num}_front_ring.jpg"),
- "back_coaxial": os.path.join(BASE_PATH, f"{img_num}_back_coaxial.jpg"),
- "back_ring": r"C:\Code\ML\Image\Card\b2.jpg", # 你原脚本中的硬编码测试路径
- "front_gray": os.path.join(BASE_PATH, f"{img_num}_front_gray.jpg"),
- "back_gray": os.path.join(BASE_PATH, f"{img_num}_back_gray.jpg")
- }
- # 调用封装的函数发送 HTTP 请求
- import_card(
- card_name=card_name,
- cardNo=cardNo,
- card_type=CARD_TYPE,
- is_reflect_card=IS_REFLECT,
- strict_mode=True, # 严格模式:如果缺主图,服务端会直接拦截报错
- paths=image_paths
- )
|