Microsoft Emotion API для Python — загрузка видео из памяти

#python #python-2.7 #microsoft-cognitive

#python #python-2.7 #azure-cognitive-services

Вопрос:

Я пытаюсь загрузить видео в Emotion API Microsoft. Вот мой код на данный момент:

 import httplib
import urllib
import base64
import json
import pandas as pd
import numpy as np
import requests

_url = 'https://api.projectoxford.ai/emotion/v1.0/recognizeInVideo'
_key = '<my key>'
_maxNumRetries = 10

paramsPost = dict()
paramsPost['outputStyle'] = 'perFrame'

headersPost = dict()
headersPost['Ocp-Apim-Subscription-Key'] = _key
headersPost['content-type'] = 'application/octet-stream'
jsonGet = {}
headersGet = dict()
headersGet['Ocp-Apim-Subscription-Key'] = _key
paramsGet = urllib.urlencode({})

responsePost = requests.request('post', _url, 
                                data = {'file':open('my_file.mp4','rb').read()}, 
                                headers = headersPost, params = paramsPost)

print responsePost.status_code
  

Я возвращаю код состояния HTTP 202, поэтому я думаю, что большую часть этого делаю правильно. Однако, когда я жду около 2 минут, а затем набираю

 getResponse = requests.request('get', videoIDLocation, json = jsonGet,
                               data = None, headers = headersGet, params = paramsGet)

print json.loads(getResponse.text)['status']
  

, … Я получаю ответ «Сбой». Что я делаю не так?

РЕДАКТИРОВАТЬ: Я выяснил ответ на свой собственный вопрос. Поскольку документация по Emotion API скудна, я делюсь своими выводами ниже со всеми в наилучших интересах сообщества. Следующий код возвращает HTML-код состояния 202 и успешно загружает видео с моего локального диска:

 import httplib
import urllib
import base64
import json
import pandas as pd
import numpy as np
import requests

_url = 'https://api.projectoxford.ai/emotion/v1.0/recognizeInVideo'
_key = '<my key>'
_maxNumRetries = 10

paramsPost = urllib.urlencode({'outputStyle' : 'perFrame', 
                               'file':'my_file.mp4'})
headersPost = dict()
headersPost['Ocp-Apim-Subscription-Key'] = _key
headersPost['content-type'] = 'application/octet-stream'
jsonGet = {}
headersGet = dict()
headersGet['Ocp-Apim-Subscription-Key'] = _key
paramsGet = urllib.urlencode({})

responsePost = requests.request('post', _url   "?"   paramsPost, 
                                data =open('my_file.mp4','rb').read(), 
                                headers = headersPost)

print responsePost.status_code