ЗВОНИТЕ с 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)
Другие вопросы по тегам