Преобразование команды Curl в python

1
$ curl -X POST "https://api- 
us.faceplusplus.com/facepp/v3/detect" -F 
"api_key=<api key>" \
-F "api_secret<api secret>" \
-F "image_url=<顔の入った写真のURL>" \
-F "return_landmark=1"

Привет, я пытаюсь написать эквивалентный код запросов python для выше, но я продолжаю получать ошибки.

import requests
import json

API_KEY = "--------------"
API_SECRET = "-----------"
image_path="/Users/dukeglacia/Downloads/test_images2/eo.jpg"
vision_base_url="https://api-us.faceplusplus.com/facepp/v3/detect"

response = requests.post(
    vision_base_url,
    {
        'api_key': API_KEY,
        'api_secret': API_SECRET,
        # 'image_url': img_url,
        'image_file': image_path,
        'return_landmark': 1,
        'return_attributes': 'headpose,eyestatus,emotion,ethnicity,beauty,facequality,mouthstatus,eyegaze,gender,age,smiling'

    }
)

analysis = response.json()
print (analysis)

Моя ошибка говорит, что аргументы image_file не найдены. Но, как показано в приведенном ниже кодексе, я включил аргументы.

  • 0
    Откуда вы получаете фактическую ошибку? из кода Python или из конечной точки API? Я попробовал ваш код на Python и, похоже, отправил почти тот же запрос, что и curl за исключением того, что Content-Type является multipart/form-data в curl но application/x-www-form-urlencoded в python
  • 0
    Так что, если эта разница является проблемой, вы можете попробовать stackoverflow.com/questions/12385179/…
Показать ещё 3 комментария
Теги:
python-requests
curl
python-3.x

1 ответ

1
Лучший ответ

Согласно документации FacePlusPlus, image_file должен быть файлом вместо пути, поэтому вы должны отправить двоичный файл файла:

response = requests.post(
    vision_base_url,
    {
        'api_key': API_KEY,
        'api_secret': API_SECRET,
        'return_landmark': 1,
        'return_attributes': 'headpose,eyestatus,emotion,ethnicity,beauty,facequality,mouthstatus,eyegaze,gender,age,smiling'

    },
    files={'image_file': open(image_path, 'rb')}
)

Более подробную информацию о том, как вы можете загрузить файл, см. В документации по requests.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню