ImageSearch.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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 Environment = System.Environment;
  7. namespace molilian.core
  8. {
  9. public partial class AliyunPlus
  10. {
  11. private static string _end_point;
  12. private static int _timeout = 5000;
  13. static AliyunPlus()
  14. {
  15. _end_point = Environment.GetEnvironmentVariable("IMG_EndPoint");
  16. if (string.IsNullOrEmpty(_end_point))
  17. {
  18. #if DEBUG
  19. _end_point = "imagesearch.cn-shanghai.aliyuncs.com";
  20. #else
  21. //_end_point = "imagesearch-vpc.cn-shanghai.aliyuncs.com";
  22. _end_point = "imagesearch.cn-shanghai.aliyuncs.com";
  23. #endif
  24. }
  25. }
  26. public async Task<SearchByPicResponse> SearchByPicAsync(string base64String, string pid)
  27. {
  28. if (string.IsNullOrEmpty(base64String)) return null;
  29. if (string.IsNullOrEmpty(pid)) return null;
  30. try
  31. {
  32. byte[] bytes = Convert.FromBase64String(base64String);
  33. AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new();
  34. Config config = new()
  35. {
  36. AccessKeyId = _app_key,
  37. AccessKeySecret = _app_secret,
  38. Endpoint = _end_point,
  39. ConnectTimeout = _timeout,
  40. RegionId = "cn-shanghai"
  41. };
  42. Client client = new(config);
  43. SearchByPicAdvanceRequest request = new()
  44. {
  45. PicContentObject = new MemoryStream(bytes),
  46. Pid = pid,
  47. Crop = true,
  48. Num = 20,
  49. Fields = "itemId,Url,CouponShareUrl,DeeplinkUrl,DeeplinkCouponShareUrl,UserType,ShopTitle,Title,PicUrl,ReservePrice,PriceAfterCoupon,CouponAmount,CouponStartTime,CouponEndTime,Volume,Provcity"
  50. };
  51. // 选填,需要返回的字段list。不同的字段用逗号分割。默认 PicUrl,ReservePrice,Title,Url,ZkFinalPrice
  52. // request.Fields = "Title,PicUrl,ReservePrice,ZkFinalPrice,UserType,Provcity,Nick,SellerId,Volume,LevelOneCategoryName,CategoryName,CouponTotalCount,CouponRemainCount,CouponStartTime,CouponEndTime,CouponStartFee,CouponAmount,CouponInfo,CommissionRate,CouponShareUrl,Url,ShopTitle";
  53. // 选填,图片类目
  54. //request.CategoryId = 88888888;
  55. // 选填,是否需要进行主体识别。默认true
  56. //request.Crop = false;
  57. // 选填,返回结果的起始位置。取值范围:0-499。默认值:0。
  58. //request.Start = 0;
  59. // 选填,返回结果的数目。取值范围:1-20。默认值:10。
  60. //request.Num = 2;
  61. // 选填,渠道ID。用于淘宝联盟中的渠道区分。
  62. //request.relationId = 1145;
  63. var response = await client.SearchByPicAdvanceAsync(request, runtime);
  64. return response;
  65. }
  66. catch (TeaException error)
  67. {
  68. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  69. // 错误 message
  70. Console.WriteLine(error.Message);
  71. // 诊断地址
  72. Console.WriteLine(error.Data["Recommend"]);
  73. AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  74. int.TryParse($"{error.DataResult["statusCode"]}", out int statusCode);
  75. SearchByPicResponse response = new();
  76. response.Body = new();
  77. response.Body.Success = false;
  78. response.Body.Code = statusCode;
  79. response.Body.Message = $"{error.DataResult["Code"]},{error.DataResult["Message"]}";
  80. LoggerLibrary log = new("SearchByPic", "tea");
  81. log.Info(error.Message);
  82. _ = log.SaveAsync();
  83. return response;
  84. }
  85. catch (Exception _error)
  86. {
  87. TeaException error = new TeaException(new Dictionary<string, object>
  88. {
  89. { "message", _error.Message }
  90. });
  91. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  92. // 错误 message
  93. Console.WriteLine(error.Message);
  94. // 诊断地址
  95. Console.WriteLine(error.Data["Recommend"]);
  96. AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  97. LoggerLibrary log = new("SearchByPic", "error");
  98. log.Info(error.Message);
  99. log.Info(error.Data["Recommend"].Convert2Json());
  100. _ = log.SaveAsync();
  101. }
  102. return null;
  103. }
  104. public async Task<GetProductInfoByIdsResponse> GetProductInfoByIds(string itemIds, string pid)
  105. {
  106. if (string.IsNullOrEmpty(itemIds)) return null;
  107. if (string.IsNullOrEmpty(pid)) return null;
  108. try
  109. {
  110. AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new();
  111. Config config = new()
  112. {
  113. AccessKeyId = _app_key,
  114. AccessKeySecret = _app_secret,
  115. Endpoint = _end_point,
  116. ConnectTimeout = _timeout,
  117. RegionId = "cn-shanghai"
  118. };
  119. Client client = new(config);
  120. GetProductInfoByIdsRequest request = new()
  121. {
  122. ItemIds = itemIds,
  123. Pid = pid,
  124. Fields = "itemId,Title,Nick,SellerId,ShortTitle,SubTitle,PicUrl,ReservePrice,ZkFinalPrice,PriceAfterCoupon,CouponTotalCount,CouponRemainCount,CouponStartTime,CouponEndTime,CouponStartFee,CouponAmount,CouponInfo,CommissionRate,CouponShareUrl,DeeplinkCouponShareUrl,Url,DeeplinkUrl"
  125. };
  126. var response = await client.GetProductInfoByIdsWithOptionsAsync(request, runtime);
  127. return response;
  128. }
  129. catch (TeaException error)
  130. {
  131. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  132. // 错误 message
  133. Console.WriteLine(error.Message);
  134. // 诊断地址
  135. Console.WriteLine(error.Data["Recommend"]);
  136. AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  137. int.TryParse($"{error.DataResult["statusCode"]}", out int statusCode);
  138. GetProductInfoByIdsResponse response = new();
  139. response.Body = new();
  140. response.Body.Success = false;
  141. response.Body.Code = statusCode;
  142. response.Body.Message = $"{error.DataResult["Code"]},{error.DataResult["Message"]}";
  143. LoggerLibrary log = new("GetProductInfoByIds", "tea");
  144. log.Info(error.Message);
  145. _ = log.SaveAsync();
  146. return response;
  147. }
  148. catch (Exception _error)
  149. {
  150. TeaException error = new TeaException(new Dictionary<string, object>
  151. {
  152. { "message", _error.Message }
  153. });
  154. // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
  155. // 错误 message
  156. Console.WriteLine(error.Message);
  157. // 诊断地址
  158. Console.WriteLine(error.Data["Recommend"]);
  159. AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
  160. LoggerLibrary log = new("GetProductInfoByIds", "error");
  161. log.Info(error.Message);
  162. log.Info(error.Data["Recommend"].Convert2Json());
  163. _ = log.SaveAsync();
  164. }
  165. return null;
  166. }
  167. }
  168. }