Skip to content

Commit 630c25d

Browse files
author
agrandiere
committed
Merge branch 'dev'
2 parents 259110a + 6e6f6c5 commit 630c25d

File tree

5 files changed

+51
-45
lines changed

5 files changed

+51
-45
lines changed

README.MD

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,28 @@ Several moderation engines are available for you to choose from (nudity detectio
3030

3131
```python
3232
# Detect nudity in an image
33-
output = client.check('nudity').image('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
33+
output = client.check('nudity').set_url('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
3434

3535
# Detect nudity, weapons, alcohol, drugs and faces in an image, along with image properties and type
36-
output = client.check('nudity', 'type', 'properties', 'wad', 'face').image('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
36+
output = client.check('nudity', 'type', 'properties', 'wad', 'face').set_url('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
3737
```
3838

3939
## Moderate a local image:
4040
```python
4141
# Detect nudity in an image
42-
output = client.check('nudity').image('/full/path/to/image.jpg')
42+
output = client.check('nudity').set_file('/full/path/to/image.jpg')
4343

4444
# Detect nudity, weapons, alcohol, drugs and faces in an image, along with image properties and type
45-
output = client.check('nudity', 'type', 'properties', 'wad', 'face').image('/full/path/to/image.jpg')
45+
output = client.check('nudity', 'type', 'properties', 'wad', 'face').set_file('/full/path/to/image.jpg')
46+
```
47+
48+
## Moderate a binary image:
49+
```python
50+
# Detect nudity in an image
51+
output = client.check('nudity').set_bytes(binary_image)
52+
53+
# Detect nudity, weapons, alcohol, drugs and faces in an image, along with image properties and type
54+
output = client.check('nudity', 'type', 'properties', 'wad', 'face').set_bytes(binary_image)
4655
```
4756

4857
# Video and Stream Moderation
@@ -93,4 +102,3 @@ Example of feedback through a public URL::
93102
client.feedback("nudity","safe", "http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg")
94103
client.feedback("type","illustration", "http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg")
95104
client.feedback("nudity","raw", "http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg")
96-
```

examples/all.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66

77
checkAll = client.check('nudity', 'wad', 'properties', 'face', 'type')
88

9-
output = checkAll.image('/path/to/local/file.jpg')
10-
output2 = checkAll.image('https://d3m9459r9kwism.cloudfront.net/img/examples/example7.jpg')
9+
output = checkAll.set_file('/path/to/local/file.jpg')
10+
output2 = checkAll.set_url('https://d3m9459r9kwism.cloudfront.net/img/examples/example7.jpg')
11+
12+
# assign binary_image
13+
output3 = checkAll.set_bytes(binary_image)
1114

1215
print(output)
1316
print(output2)
17+
print(output3)

examples/nudity.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@
1414

1515
checkNudity = client.check('nudity')
1616

17-
output = checkNudity.image('/path/to/local/file.jpg')
18-
output2 = checkNudity.image('https://d3m9459r9kwism.cloudfront.net/img/examples/example5.jpg')
17+
output = checkNudity.set_file('/path/to/local/file.jpg')
18+
output2 = checkNudity.set_url('https://d3m9459r9kwism.cloudfront.net/img/examples/example5.jpg')
19+
20+
# assign binary_image
21+
output3 = checkNudity.set_bytes(binary_image)
1922

2023
print(output)
2124
print(output2)
25+
print(output3)
2226

2327
####### check video
2428

sightengine/check.py

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class Check(object):
3737
def __init__(self, api_user, api_secret, *args):
3838
self.api_user = api_user
3939
self.api_secret = api_secret
40-
self.endpoint = 'https://api.sightengine.com/'
40+
self.endpoint = 'https://api.sightengine.com/1.0/'
4141
self.modelsType = ''
4242

4343
if len(args) > 1:
@@ -47,36 +47,26 @@ def __init__(self, api_user, api_secret, *args):
4747
else:
4848
self.modelsType = args[0]
4949

50-
def image(self, image):
51-
numberOfModels = self.modelsType.count(",")
50+
def set_url(self, imageUrl):
51+
r = requests.get(self.endpoint + 'check.json', params={'models': self.modelsType, 'url': imageUrl, 'api_user': self.api_user, 'api_secret': self.api_secret}, headers=headers)
5252

53-
if numberOfModels > 0:
54-
url = self.endpoint + '1.0/check.json'
53+
output = json.loads(r.text)
54+
return output
5555

56-
if isinstance(image, bytes):
57-
r = requests.post(url, files={'media': BytesIO(image)}, data={'models': self.modelsType,'api_user': self.api_user, 'api_secret': self.api_secret}, headers=headers)
58-
elif image.lower().startswith(('http://', 'https://')):
59-
r = requests.get(url, params={'models': self.modelsType, 'url': image, 'api_user': self.api_user, 'api_secret': self.api_secret}, headers=headers)
60-
else:
61-
r = requests.post(url, files={'media': open(image, 'rb')}, data={'models': self.modelsType,'api_user': self.api_user, 'api_secret': self.api_secret}, headers=headers)
56+
def set_file(self, file):
57+
r = requests.post(self.endpoint + 'check.json', files={'media': open(file, 'rb')}, data={'models': self.modelsType, 'api_user': self.api_user,'api_secret': self.api_secret}, headers=headers)
6258

63-
output = json.loads(r.text)
64-
return output
65-
else:
66-
url = self.endpoint + '1.0' + '/' + self.modelsType + '.json'
59+
output = json.loads(r.text)
60+
return output
6761

68-
if isinstance(image, bytes):
69-
r = requests.post(url, files={'media': BytesIO(image)}, data={'api_user': self.api_user,'api_secret': self.api_secret}, headers=headers)
70-
elif image.lower().startswith(('http://', 'https://')):
71-
r = requests.get(url, params={'url': image, 'api_user': self.api_user, 'api_secret': self.api_secret}, headers=headers)
72-
else:
73-
r = requests.post(url, files={'media': open(image, 'rb')}, data={'api_user': self.api_user,'api_secret': self.api_secret}, headers=headers)
62+
def set_bytes(self, binaryImage):
63+
r = requests.post(self.endpoint + 'check.json', files={'media': BytesIO(binaryImage)}, data={'models': self.modelsType, 'api_user': self.api_user, 'api_secret': self.api_secret}, headers=headers)
7464

75-
output = json.loads(r.text)
76-
return output
65+
output = json.loads(r.text)
66+
return output
7767

7868
def video(self, videoUrl, callbackUrl):
79-
url = self.endpoint + '1.0/video/moderation.json?stream_url=' + videoUrl + '&callback_url=' + callbackUrl + '&api_user=' + self.api_user + '&api_secret=' + self.api_secret
69+
url = self.endpoint + 'video/moderation.json?stream_url=' + videoUrl + '&callback_url=' + callbackUrl + '&api_user=' + self.api_user + '&api_secret=' + self.api_secret
8070
r = requests.get(url, headers=headers)
8171

8272
output = json.loads(r.text)

tests.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,36 @@ def test_nudityModel(self):
66
client = SightengineClient('1234', 'test')
77
checkNudity = client.check('nudity')
88

9-
output = checkNudity.image('https://sightengine.com/assets/img/examples/example5.jpg')
10-
self.assertEqual('success', output['status'])
11-
129
image = os.path.join(os.path.dirname(__file__), 'assets', 'image.jpg')
1310

14-
output2 = checkNudity.image(image)
11+
output = checkNudity.set_url('https://sightengine.com/assets/img/examples/example5.jpg')
12+
self.assertEqual('success', output['status'])
13+
14+
output2 = checkNudity.set_file(image)
1515
self.assertEqual('success', output2['status'])
1616

1717
with open(image, mode='rb') as img:
18-
imageContent = img.read()
18+
binary_image = img.read()
1919

20-
output3 = checkNudity.image(imageContent)
20+
output3 = checkNudity.set_bytes(binary_image)
2121
self.assertEqual('success', output3['status'])
2222

2323
def test_allModel(self):
2424
client = SightengineClient('1234', 'test')
2525
checkAll = client.check('nudity','wad','properties','type','face','celebrities')
2626

27-
output = checkAll.image('https://sightengine.com/assets/img/examples/example5.jpg')
28-
self.assertEqual('success', output['status'])
29-
3027
image = os.path.join(os.path.dirname(__file__), 'assets', 'image.jpg')
3128

32-
output2 = checkAll.image(image)
29+
output = checkAll.set_url('https://sightengine.com/assets/img/examples/example5.jpg')
30+
self.assertEqual('success', output['status'])
31+
32+
output2 = checkAll.set_file(image)
3333
self.assertEqual('success', output2['status'])
3434

3535
with open(image, mode='rb') as img:
36-
imageContent = img.read()
36+
binary_image = img.read()
3737

38-
output3 = checkAll.image(imageContent)
38+
output3 = checkAll.set_bytes(binary_image)
3939
self.assertEqual('success', output3['status'])
4040

4141
def test_feedback(self):

0 commit comments

Comments
 (0)