Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Help with photos module and http post?
-
I decided to clean it up a bit and use some functions. I havent added my comments yet but here is a fully working solution:
import photos import requests import io import base64 import json img = photos.capture_image() def getPhoto(): with io.BytesIO() as output: img.save(output, 'JPEG') contents = output.getvalue() image = base64.b64encode(contents) return image def enrollPhoto(): subject_id = raw_input("Hello, What is your name: ? ") print("Thank you " + subject_id + "." + " Analyzing...") image = getPhoto() url = "https://api.kairos.com/enroll" values = { 'image': image, 'subject_id': subject_id, 'gallery_name': subject_id } headers = { 'Content-Type': 'application/json', 'app_id': '***********', 'app_key': '****************************' } r = requests.post(url, data=json.dumps(values), headers = headers) parsed_json = json.loads(r.content) attr = parsed_json['images'][0]['attributes'] img.show() print(json.dumps(attr, indent=2)) enrollPhoto()
Just need to put in your actual app_id and app_key. Should work right away. My next step will be getting a simple interface built and then comparing the pic of the user to existing pics of the same user to determine whether or not they gain access. Something like that anyways. Turned out to be a fun endeavor!
-
fwiw,
requests
lets you use req.json() rather than json.loads(req.contents). also, you can use json=values instead of json.dumps(values) in the request. -
@inzel this is great. I am learning to use Kairos as well and I will try this out!
Thanks!
-
I just came back to this project and I get an error!
r = requests.post(url, data=json.dumps(values), headers = headers)
Object of type 'bytes' is not JSON serializable
I havent made any changes so I cant imagine why this is suddenly happening.
Any thoughts?
-
@Vincekok Thank you!
-
Have you switched to py3 interpreter from py2, or vice versa?
-
Hey JonB!
Yes I have done that. Its really odd as this was working. Could it be because I went to the iPadOS beta?
-
I tested itg on my phone and am getting the same results. No idea what changed here
-
print(values)
-
The original code would have probably worked in py2. In py3, you’d need to do
image.decode('ascii')
As the argument to json.dumps.
-
I dont quite understand. Can you please explain the change to me?
Edit: It does work making that change but I dont understand why its now needed. Thats what Im interested in learning about