imagecensor.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. # -*- coding: utf-8 -*-
  2. import re
  3. import sys
  4. from .base import AipBase
  5. from .base import base64
  6. from .base import json
  7. from .base import urlencode
  8. from .base import quote
  9. class AipImageCensor(AipBase):
  10. """
  11. Aip ImageCensor
  12. """
  13. __antiPornUrl = 'https://aip.baidubce.com/rest/2.0/antiporn/v1/detect'
  14. __antiPornGifUrl = 'https://aip.baidubce.com/rest/2.0/antiporn/v1/detect_gif'
  15. __antiTerrorUrl = 'https://aip.baidubce.com/rest/2.0/antiterror/v1/detect'
  16. __faceAuditUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/face_audit'
  17. __imageCensorCombUrl = 'https://aip.baidubce.com/api/v1/solution/direct/img_censor'
  18. __imageCensorUserDefinedUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined'
  19. __textCensorUserDefinedUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined'
  20. __antiSpamUrl = 'https://aip.baidubce.com/rest/2.0/antispam/v2/spam'
  21. def antiPorn(self, image):
  22. """
  23. antiporn
  24. """
  25. data = {}
  26. data['image'] = base64.b64encode(image).decode()
  27. return self._request(self.__antiPornUrl, data)
  28. def antiPornGif(self, image):
  29. """
  30. antiporn gif
  31. """
  32. data = {}
  33. data['image'] = base64.b64encode(image).decode()
  34. return self._request(self.__antiPornGifUrl, data)
  35. def antiTerror(self, image):
  36. """
  37. antiterror
  38. """
  39. data = {}
  40. data['image'] = base64.b64encode(image).decode()
  41. return self._request(self.__antiTerrorUrl, data)
  42. def faceAudit(self, images, configId=''):
  43. """
  44. faceAudit
  45. """
  46. # 非数组则处理为数组
  47. if not isinstance(images, list):
  48. images = [images]
  49. data = {
  50. 'configId': configId
  51. }
  52. isUrl = images[0][0:4] == 'http'
  53. if not isUrl:
  54. data['images'] = ','.join([
  55. base64.b64encode(image).decode() for image in images
  56. ])
  57. else:
  58. data['imgUrls'] = ','.join([
  59. quote(url) for url in images
  60. ])
  61. return self._request(self.__faceAuditUrl, data)
  62. def imageCensorComb(self, image, scenes='antiporn', options=None):
  63. """
  64. imageCensorComb
  65. """
  66. options = options or {}
  67. if not isinstance(scenes, list):
  68. scenes = scenes.split(',')
  69. data = {
  70. 'scenes': scenes,
  71. }
  72. isUrl = image.strip()[0:4] == 'http'
  73. if not isUrl:
  74. data['image'] = base64.b64encode(image).decode()
  75. else:
  76. data['imgUrl'] = image
  77. data.update(options)
  78. return self._request(self.__imageCensorCombUrl, json.dumps(data), {
  79. 'Content-Type': 'application/json',
  80. })
  81. def imageCensorUserDefined(self, image):
  82. """
  83. imageCensorUserDefined
  84. """
  85. data = {}
  86. isUrl = image[0:4] == 'http'
  87. if not isUrl:
  88. data['image'] = base64.b64encode(image).decode()
  89. else:
  90. data['imgUrl'] = image
  91. return self._request(self.__imageCensorUserDefinedUrl, data)
  92. def textCensorUserDefined(self, text):
  93. """
  94. textCensorUserDefined
  95. """
  96. data = {}
  97. data['text'] = text
  98. return self._request(self.__textCensorUserDefinedUrl, data)
  99. def antiSpam(self, content, options=None):
  100. """
  101. anti spam
  102. """
  103. data = {}
  104. data['content'] = content
  105. return self._request(self.__antiSpamUrl, data)