-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsample.py
executable file
·73 lines (55 loc) · 2.2 KB
/
sample.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python3
"""Example of using API4AI image anonymization API."""
import asyncio
import base64
import json
import os
import sys
import aiohttp
# Use 'demo' mode just to try api4ai for free. Free demo is rate limited.
# For more details visit:
# https://api4.ai
#
# Use 'rapidapi' if you want to try api4ai via RapidAPI marketplace.
# For more details visit:
# https://rapidapi.com/api4ai-api4ai-default/api/image-anonymization/details
MODE = 'demo'
# Your RapidAPI key. Fill this variable with the proper value if you want
# to try api4ai via RapidAPI marketplace.
RAPIDAPI_KEY = ''
OPTIONS = {
'demo': {
'url': 'https://demo.api4ai.cloud/img-anonymization/v1/results',
'headers': {'A4A-CLIENT-APP-ID': 'sample'}
},
'rapidapi': {
'url': 'https://image-anonymization.p.rapidapi.com/v1/results',
'headers': {'X-RapidAPI-Key': RAPIDAPI_KEY}
}
}
async def main():
"""Entry point."""
image = sys.argv[1] if len(sys.argv) > 1 else 'https://storage.googleapis.com/api4ai-static/samples/img-anonymization-0.jpg'
async with aiohttp.ClientSession() as session:
if '://' in image:
# Data from image URL.
data = {'url': image}
else:
# Data from local image file.
data = {'image': open(image, 'rb')}
# Make request.
async with session.post(OPTIONS[MODE]['url'],
data=data,
headers=OPTIONS[MODE]['headers']) as response:
resp_json = await response.json()
image_format = resp_json['results'][0]['entities'][0]['format'].lower()
img_b64 = resp_json['results'][0]['entities'][0]['image'].encode('utf8')
path_to_image = os.path.join(f'result.{image_format}')
with open(path_to_image, 'wb') as img:
img.write(base64.decodebytes(img_b64))
objects_pretty = json.dumps(resp_json['results'][0]['entities'][1]['objects'], indent=2)
print(f'💬 Hidden objects:\n{objects_pretty}\n')
print(f'💬 The "result.{image_format}" image is saved to the current directory.')
if __name__ == '__main__':
# Run async function in asyncio loop.
asyncio.run(main())