imagesearch.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. # -*- coding: utf-8 -*-
  2. """
  3. 图像搜索
  4. """
  5. import re
  6. import sys
  7. import math
  8. import time
  9. from .base import AipBase
  10. from .base import base64
  11. from .base import json
  12. from .base import urlencode
  13. from .base import quote
  14. class AipImageSearch(AipBase):
  15. """
  16. 图像搜索
  17. """
  18. __sameHqAddUrl = 'https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/add'
  19. __sameHqSearchUrl = 'https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/search'
  20. __sameHqUpdateUrl = 'https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/update'
  21. __sameHqDeleteUrl = 'https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/delete'
  22. __similarAddUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/add'
  23. __similarSearchUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/search'
  24. __similarUpdateUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/update'
  25. __similarDeleteUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/delete'
  26. __productAddUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/add'
  27. __productSearchUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/search'
  28. __productUpdateUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/update'
  29. __productDeleteUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/delete'
  30. def sameHqAdd(self, image, options=None):
  31. """
  32. 相同图检索—入库
  33. """
  34. options = options or {}
  35. data = {}
  36. data['image'] = base64.b64encode(image).decode()
  37. data.update(options)
  38. return self._request(self.__sameHqAddUrl, data)
  39. def sameHqAddUrl(self, url, options=None):
  40. """
  41. 相同图检索—入库
  42. """
  43. options = options or {}
  44. data = {}
  45. data['url'] = url
  46. data.update(options)
  47. return self._request(self.__sameHqAddUrl, data)
  48. def sameHqSearch(self, image, options=None):
  49. """
  50. 相同图检索—检索
  51. """
  52. options = options or {}
  53. data = {}
  54. data['image'] = base64.b64encode(image).decode()
  55. data.update(options)
  56. return self._request(self.__sameHqSearchUrl, data)
  57. def sameHqSearchUrl(self, url, options=None):
  58. """
  59. 相同图检索—检索
  60. """
  61. options = options or {}
  62. data = {}
  63. data['url'] = url
  64. data.update(options)
  65. return self._request(self.__sameHqSearchUrl, data)
  66. def sameHqUpdate(self, image, options=None):
  67. """
  68. 相同图检索—更新
  69. """
  70. options = options or {}
  71. data = {}
  72. data['image'] = base64.b64encode(image).decode()
  73. data.update(options)
  74. return self._request(self.__sameHqUpdateUrl, data)
  75. def sameHqUpdateUrl(self, url, options=None):
  76. """
  77. 相同图检索—更新
  78. """
  79. options = options or {}
  80. data = {}
  81. data['url'] = url
  82. data.update(options)
  83. return self._request(self.__sameHqUpdateUrl, data)
  84. def sameHqUpdateContSign(self, cont_sign, options=None):
  85. """
  86. 相同图检索—更新
  87. """
  88. options = options or {}
  89. data = {}
  90. data['cont_sign'] = cont_sign
  91. data.update(options)
  92. return self._request(self.__sameHqUpdateUrl, data)
  93. def sameHqDeleteByImage(self, image, options=None):
  94. """
  95. 相同图检索—删除
  96. """
  97. options = options or {}
  98. data = {}
  99. data['image'] = base64.b64encode(image).decode()
  100. data.update(options)
  101. return self._request(self.__sameHqDeleteUrl, data)
  102. def sameHqDeleteByUrl(self, url, options=None):
  103. """
  104. 相同图检索—删除
  105. """
  106. options = options or {}
  107. data = {}
  108. data['url'] = url
  109. data.update(options)
  110. return self._request(self.__sameHqDeleteUrl, data)
  111. def sameHqDeleteBySign(self, cont_sign, options=None):
  112. """
  113. 相同图检索—删除
  114. """
  115. options = options or {}
  116. data = {}
  117. data['cont_sign'] = cont_sign
  118. data.update(options)
  119. return self._request(self.__sameHqDeleteUrl, data)
  120. def similarAdd(self, image, options=None):
  121. """
  122. 相似图检索—入库
  123. """
  124. options = options or {}
  125. data = {}
  126. data['image'] = base64.b64encode(image).decode()
  127. data.update(options)
  128. return self._request(self.__similarAddUrl, data)
  129. def similarAddUrl(self, url, options=None):
  130. """
  131. 相似图检索—入库
  132. """
  133. options = options or {}
  134. data = {}
  135. data['url'] = url
  136. data.update(options)
  137. return self._request(self.__similarAddUrl, data)
  138. def similarSearch(self, image, options=None):
  139. """
  140. 相似图检索—检索
  141. """
  142. options = options or {}
  143. data = {}
  144. data['image'] = base64.b64encode(image).decode()
  145. data.update(options)
  146. return self._request(self.__similarSearchUrl, data)
  147. def similarSearchUrl(self, url, options=None):
  148. """
  149. 相似图检索—检索
  150. """
  151. options = options or {}
  152. data = {}
  153. data['url'] = url
  154. data.update(options)
  155. return self._request(self.__similarSearchUrl, data)
  156. def similarUpdate(self, image, options=None):
  157. """
  158. 相似图检索—更新
  159. """
  160. options = options or {}
  161. data = {}
  162. data['image'] = base64.b64encode(image).decode()
  163. data.update(options)
  164. return self._request(self.__similarUpdateUrl, data)
  165. def similarUpdateUrl(self, url, options=None):
  166. """
  167. 相似图检索—更新
  168. """
  169. options = options or {}
  170. data = {}
  171. data['url'] = url
  172. data.update(options)
  173. return self._request(self.__similarUpdateUrl, data)
  174. def similarUpdateContSign(self, cont_sign, options=None):
  175. """
  176. 相似图检索—更新
  177. """
  178. options = options or {}
  179. data = {}
  180. data['cont_sign'] = cont_sign
  181. data.update(options)
  182. return self._request(self.__similarUpdateUrl, data)
  183. def similarDeleteByImage(self, image, options=None):
  184. """
  185. 相似图检索—删除
  186. """
  187. options = options or {}
  188. data = {}
  189. data['image'] = base64.b64encode(image).decode()
  190. data.update(options)
  191. return self._request(self.__similarDeleteUrl, data)
  192. def similarDeleteByUrl(self, url, options=None):
  193. """
  194. 相似图检索—删除
  195. """
  196. options = options or {}
  197. data = {}
  198. data['url'] = url
  199. data.update(options)
  200. return self._request(self.__similarDeleteUrl, data)
  201. def similarDeleteBySign(self, cont_sign, options=None):
  202. """
  203. 相似图检索—删除
  204. """
  205. options = options or {}
  206. data = {}
  207. data['cont_sign'] = cont_sign
  208. data.update(options)
  209. return self._request(self.__similarDeleteUrl, data)
  210. def productAdd(self, image, options=None):
  211. """
  212. 商品检索—入库
  213. """
  214. options = options or {}
  215. data = {}
  216. data['image'] = base64.b64encode(image).decode()
  217. data.update(options)
  218. return self._request(self.__productAddUrl, data)
  219. def productAddUrl(self, url, options=None):
  220. """
  221. 商品检索—入库
  222. """
  223. options = options or {}
  224. data = {}
  225. data['url'] = url
  226. data.update(options)
  227. return self._request(self.__productAddUrl, data)
  228. def productSearch(self, image, options=None):
  229. """
  230. 商品检索—检索
  231. """
  232. options = options or {}
  233. data = {}
  234. data['image'] = base64.b64encode(image).decode()
  235. data.update(options)
  236. return self._request(self.__productSearchUrl, data)
  237. def productSearchUrl(self, url, options=None):
  238. """
  239. 商品检索—检索
  240. """
  241. options = options or {}
  242. data = {}
  243. data['url'] = url
  244. data.update(options)
  245. return self._request(self.__productSearchUrl, data)
  246. def productUpdate(self, image, options=None):
  247. """
  248. 商品检索—更新
  249. """
  250. options = options or {}
  251. data = {}
  252. data['image'] = base64.b64encode(image).decode()
  253. data.update(options)
  254. return self._request(self.__productUpdateUrl, data)
  255. def productUpdateUrl(self, url, options=None):
  256. """
  257. 商品检索—更新
  258. """
  259. options = options or {}
  260. data = {}
  261. data['url'] = url
  262. data.update(options)
  263. return self._request(self.__productUpdateUrl, data)
  264. def productUpdateContSign(self, cont_sign, options=None):
  265. """
  266. 商品检索—更新
  267. """
  268. options = options or {}
  269. data = {}
  270. data['cont_sign'] = cont_sign
  271. data.update(options)
  272. return self._request(self.__productUpdateUrl, data)
  273. def productDeleteByImage(self, image, options=None):
  274. """
  275. 商品检索—删除
  276. """
  277. options = options or {}
  278. data = {}
  279. data['image'] = base64.b64encode(image).decode()
  280. data.update(options)
  281. return self._request(self.__productDeleteUrl, data)
  282. def productDeleteByUrl(self, url, options=None):
  283. """
  284. 商品检索—删除
  285. """
  286. options = options or {}
  287. data = {}
  288. data['url'] = url
  289. data.update(options)
  290. return self._request(self.__productDeleteUrl, data)
  291. def productDeleteBySign(self, cont_sign, options=None):
  292. """
  293. 商品检索—删除
  294. """
  295. options = options or {}
  296. data = {}
  297. data['cont_sign'] = cont_sign
  298. data.update(options)
  299. return self._request(self.__productDeleteUrl, data)