ЗВОНИТЕ с CURL API через Python
Я работаю с API для распознавания номерных знаков; и я получаю эту команду curl:
Как реализовать такой вызов с curl в PYTHON?
curl "https://api.havenondemand.com/1/api/async/recognizelicenseplates/v1?url=https%3A%2F%2Fwww.havenondemand.com%2Fsample-content%2Fvideos%2Fgb-plates.mp4&source_location=GB&apikey=695e513c-xxxx-xxxx-xxxx-xxxxxxxxxx"
curl -X POST --form "url=https://www.havenondemand.com/sample-content/videos/gb-plates.mp4" --form "source_location=GB" --form "apikey=695e513c-xxxx-xxxx-a666-xxxxxxxxxx" https://api.havenondemand.com/1/api/async/recognizelicenseplates/v1
3 ответа
В Python, используя requests
Модуль является гораздо лучшим вариантом. Сначала установите его:
pip install requests
Затем сделайте это:
import requests
API_URL = "https://api.havenondemand.com/1/api/async/recognizelicenseplates/v1"
data = {
"url": "https://www.havenondemand.com/sample-content/videos/gb-plates.mp4",
"source_location": "GB",
"apikey": "695e513c-xxxx-xxxx-a666-xxxxxxxxxx"
}
response = requests.post(API_URL, data)
print(response.json())
По сути, любые поля формы должны быть внутри data
словарь как пары ключ-значение. Мы используем requests.post()
функционировать здесь. Функция принимает целевой URL в качестве первого параметра. И форма значения в качестве второго параметра.
Мы получаем ответный объект обратно. Вы можете увидеть необработанный ответ, распечатав значение response.content
, Однако, если вы знаете, что ответом является JSON, вы можете использовать json()
метод для анализа ответа и получения обратно типа данных Python (словарь).
Есть несколько вариантов. Вы можете начать с urllib2 (или любой другой HTTP-библиотеки, такой как запросы). Лучшим вариантом может быть прямое использование клиентской библиотеки python для havenondemand
Самый быстрый способ вызова API Haven OnDemand - это использование официальных библиотек HPE. Вы можете установить библиотеку HOD Python и использовать ее следующим образом:
установить библиотеку
pip install havenondemand
# put these in your file
from havenondemand.hodclient import *
from havenondemand.hodresponseparser import *
client = HODClient("API_KEY", version="v1")
parser = HODResponseParser()
# callback function
def asyncRequestCompleted(response):
jobID = parser.parse_jobid(response)
if jobID is None:
errorObj = hodParser.get_last_error()
for err in errorObj.errors:
print ("Error code: %d \nReason: %s \nDetails: %s\n" % (err.error,err.reason, err.detail))
else:
client.get_job_status(jobID, requestCompleted)
def requestCompleted(response):
payloadObj = parser.parse_payload(response)
resp = ""
if payloadObj is None:
errorObj = parser.get_last_error()
for err in errorObj.errors:
if err.error == ErrorCode.QUEUED:
time.sleep(2)
client.get_job_status(err.jobID, requestCompleted)
return
elif err.error == ErrorCode.IN_PROGRESS:
time.sleep(10)
client.get_job_status(err.jobID, requestCompleted)
return
else:
resp += "Error code: %d \nReason: %s \nDetails: %s\n" % (err.error,err.reason)
else:
print(payloadObj)
params = {}
params['url'] = 'https://www.havenondemand.com/sample-content/videos/gb-plates.mp4'
params['source_location'] = 'GB'
hodApp = HODApps.RECOGNIZE_LICENSE_PLATE
client.post_request(params, hodApp, True, callback=asyncRequestCompleted)