auto_img_insert.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import os
  2. import requests
  3. def auto_import(data, target_url):
  4. # 2. 准备文件数据
  5. files = []
  6. opened_files = [] # 记录已打开的文件柄,便于最后关闭
  7. IMAGE_PATHS = data.get("local_paths")
  8. try:
  9. for field_name, path in IMAGE_PATHS.items():
  10. if path and os.path.exists(path):
  11. # 以二进制方式打开文件
  12. f = open(path, "rb")
  13. opened_files.append(f)
  14. # Request 的 files 格式: ("表单字段名", ("文件名", 文件对象, "MIME类型"))
  15. files.append((
  16. field_name,
  17. (os.path.basename(path), f, "image/jpeg")
  18. ))
  19. else:
  20. print(f"[Warning] 图片不存在或未配置跳过: {path}")
  21. if not files:
  22. print("没有找到任何可上传的图片文件,请检查 IMAGE_PATHS 路径。")
  23. return
  24. print(f"开始请求 API: {target_url} ...")
  25. # 3. 发起 multipart/form-data 请求
  26. response = requests.post(target_url, data=data, files=files)
  27. # 4. 打印结果
  28. print(f"Status Code: {response.status_code}")
  29. try:
  30. print("Response JSON:", response.json())
  31. except Exception:
  32. print("Response Text:", response.text)
  33. finally:
  34. # 确保所有文件句柄都被关闭
  35. for f in opened_files:
  36. f.close()
  37. if __name__ == '__main__':
  38. target_url = f"http://192.168.77.249:7755/api/import/process_and_import"
  39. for i in range(2, 11):
  40. request_data = {
  41. "card_name": f"测试卡-{i}",
  42. "cardNo": f"testNo-{i}",
  43. "card_type": "pokemon",
  44. "is_reflect_card": True,
  45. "strict_mode": True, # 若为 True 则必须凑齐上面定义的4张主图
  46. "local_paths": {
  47. "front_ring": rf"C:\Code\ML\Image\Card\img20_test\{i}_front_ring.jpg",
  48. "front_coaxial": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_coaxial.jpg",
  49. "back_ring": r"C:\Code\ML\Image\Card\b2.jpg",
  50. "back_coaxial": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_coaxial.jpg",
  51. "front_gray": rf"C:\Code\ML\Image\Card\img20_test\{i}_front_gray.jpg",
  52. "back_gray": rf"C:\Code\ML\Image\Card\img20_test\{i}_back_gray.jpg"
  53. }
  54. }
  55. auto_import(request_data, target_url)