requests.post richtig übergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jan1292
User
Beiträge: 3
Registriert: Mittwoch 7. Dezember 2016, 19:19

Hallo zusammen!
Ich bin neu hier in diesem Forum und falls ich jetzt schon in irgendein Fettnäpfchen getreten - 'tschuldigung! Ich suche jetzt schon seit mehreren Tagen nach einer Lösung und werd einfach nicht schlauer und zwar geht es um folgendes: Ich soll für ein Projekt in meinem Studiengang ein Python-Skript schreiben, dass Bilder von meiner Festplatte an die API eines "Emotionserkennungsdienstes" schickt, um die Emotionen eines Gesichts (oh wunder) zu analysieren. Ich versuch mich zur Zeit an dem Anbieter skybiometry.com und bekomm es nicht hin die request.post() richtig aufzustellen. Es gibt ein Beispiel von der Seite, wie man Bilder aus dem Netz analysieren kann (http://api.skybiometry.com/fc/faces/det ... ibutes=all) und ungefähr das möchte ich ja auch über mein Skript mit Bildern von meiner Festplatte. Für einen anderen Anbieter habe ich das, mittlerweile glaube ich durch Zufall, hinbekommen und versucht das auf diesen anzupassen:

Code: Alles auswählen

import requests 

	auth_headers = {
					'api_key': api_key,
    					'api_secret': api_secret,
					'Content-Type': 'image/jpeg'
				}

	url = 'http://api.skybiometry.com/fc/faces/detect'

	files = {	'source': open(path  + ".jpg", 'rb')
		  }
	data = {	'attributes': 'mood'

		}

	response = requests.post(url, files=files, data=data, headers=auth_headers)

	print (response.json())
Es wird auf der Seite auch direkt darauf verwiesen (https://skybiometry.com/documentation/ Punkt 4.13), dass wenn man Bilder hochladen möchte, dass man diesen Request als MIME "formen" soll, womit ich aber leider nichts anfangen kann.
Ich hoffe hier kann mir irgendwie geholfen werden.
Besten Dank schon mal!
Zuletzt geändert von Anonymous am Mittwoch 7. Dezember 2016, 20:01, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Jan1292: warum verwendest Du nicht die in der Dokumentation verlinkte Python-Bibliothek? Was ist der Response, den Du erhältst? api_key und api_secret sind Parameter und keine Header-Zeilen, gehören also ins »data«-Wörterbuch.
Jan1292
User
Beiträge: 3
Registriert: Mittwoch 7. Dezember 2016, 19:19

Ich habe gerade das Skript auf deinen Hinweis hin angepasst, also api_key und api_secret ins »data«-Wörterbuch gepackt, und wollte mal sehen was ich als Response bekomme -et voilà- es funktioniert. :D Besten Dank dafür!
Antworten