ImageSearch.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using AlibabaCloud.OpenApiClient.Models;
  2. using AlibabaCloud.SDK.ImageSearch20210501.Models;
  3. using AlibabaCloud.SDK.ImageSearch20210501;
  4. using Tea;
  5. using dodohold.core;
  6. using COSXML.Network;
  7. using TencentCloud.Scf.V20180416.Models;
  8. namespace molilian.core
  9. {
  10. public partial class AliyunPlus
  11. {
  12. public SearchByPicResponse SearchByPic(string base64String, string pid)
  13. {
  14. if (string.IsNullOrEmpty(base64String)) return null;
  15. if (string.IsNullOrEmpty(pid)) return null;
  16. try
  17. {
  18. byte[] bytes = Convert.FromBase64String(base64String);
  19. AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new();
  20. Config config = new()
  21. {
  22. AccessKeyId = _app_key,
  23. AccessKeySecret = _app_secret,
  24. //Endpoint = "imagesearch.cn-shanghai.aliyuncs.com",
  25. Endpoint = "imagesearch.cn-shanghai.aliyuncs.com",
  26. RegionId = "cn-shanghai"
  27. };
  28. Client client = new(config);
  29. SearchByPicAdvanceRequest request = new()
  30. {
  31. PicContentObject = new MemoryStream(bytes),
  32. Pid = pid,
  33. Crop = true,
  34. Num = 20,
  35. Fields = "itemId,Url,CouponShareUrl,DeeplinkUrl,DeeplinkCouponShareUrl,UserType,ShopTitle,Title,PicUrl,ReservePrice,PriceAfterCoupon,CouponAmount,CouponStartTime,CouponEndTime,Volume,Provcity"
  36. };
  37. // 选填,需要返回的字段list。不同的字段用逗号分割。默认 PicUrl,ReservePrice,Title,Url,ZkFinalPrice
  38. // request.Fields = "Title,PicUrl,ReservePrice,ZkFinalPrice,UserType,Provcity,Nick,SellerId,Volume,LevelOneCategoryName,CategoryName,CouponTotalCount,CouponRemainCount,CouponStartTime,CouponEndTime,CouponStartFee,CouponAmount,CouponInfo,CommissionRate,CouponShareUrl,Url,ShopTitle";
  39. // 选填,图片类目
  40. //request.CategoryId = 88888888;
  41. // 选填,是否需要进行主体识别。默认true
  42. //request.Crop = false;
  43. // 选填,返回结果的起始位置。取值范围:0-499。默认值:0。
  44. //request.Start = 0;
  45. // 选填,返回结果的数目。取值范围:1-20。默认值:10。
  46. //request.Num = 2;
  47. // 选填,渠道ID。用于淘宝联盟中的渠道区分。
  48. //request.relationId = 1145;
  49. var response = client.SearchByPicAdvance(request, runtime);
  50. return response;
  51. }
  52. catch (TeaException error)
  53. {
  54. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  55. // 错误 message
  56. Console.WriteLine(error.Message);
  57. // 诊断地址
  58. Console.WriteLine(error.Data["Recommend"]);
  59. AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  60. int.TryParse($"{error.DataResult["statusCode"]}", out int statusCode);
  61. SearchByPicResponse response = new();
  62. response.Body = new();
  63. response.Body.Success = false;
  64. response.Body.Code = statusCode;
  65. response.Body.Message = $"{error.DataResult["Code"]},{error.DataResult["Message"]}";
  66. LoggerLibrary log = new("SearchByPic", "tea");
  67. log.Info(error.Message);
  68. _ = log.SaveAsync();
  69. return response;
  70. }
  71. catch (Exception _error)
  72. {
  73. TeaException error = new TeaException(new Dictionary<string, object>
  74. {
  75. { "message", _error.Message }
  76. });
  77. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  78. // 错误 message
  79. Console.WriteLine(error.Message);
  80. // 诊断地址
  81. Console.WriteLine(error.Data["Recommend"]);
  82. AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  83. LoggerLibrary log = new("SearchByPic", "error");
  84. log.Info(error.Message);
  85. log.Info(error.Data["Recommend"].Convert2Json());
  86. _ = log.SaveAsync();
  87. }
  88. return null;
  89. }
  90. }
  91. }