#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