Создать переменную строку для полезной нагрузки API запроса - PullRequest
1 голос
/ 10 января 2020

У меня есть список URL, которые все ссылаются на изображения. Я хочу просмотреть список * и вызвать API распознавания лиц , который принимает эти URL-адреса. Чтобы вызвать API, мне нужно предоставить словарь полезной нагрузки. Однако пример кода из API требует следующую форму для словаря полезной нагрузки:

payload = "{\"url\":\"https://inferdo.com/img/face-3.jpg\",\"accuracy_boost\":3}"

URL-адрес в этом примере словаря полезной нагрузки будет выглядеть в моем списке следующим образом:

list_of_urls = ["https://inferdo.com/img/face-3.jpg", ...]

Как я могу вставить записи моего списка в словарь полезной нагрузки с помощью для l oop?

Я пытался использовать «обычный» словарь полезной нагрузки, но он не работал:

for url_path in list_of_urls:
    payload = {'url' : url_path,'accuracy_boost':3}

1 Ответ

2 голосов
/ 10 января 2020

Я перешел к документации API и обнаружил, что вам необходимо отправить полезную нагрузку как JSON. Нечто подобное сделает эту работу:

import requests
import json

endpoints = {
    'face': 'https://face-detection6.p.rapidapi.com/img/face'
    'face_age_gender': 'https://face-detection6.p.rapidapi.com/img/face-age-gender'
}

urls = [
    'https://inferdo.com/img/face-3.jpg'
]

headers = {
    'x-rapidapi-host': 'face-detection6.p.rapidapi.com',
    'x-rapidapi-key': 'YOUR-API-KEY',
    'content-type': 'application/json',
    'accept': 'application/json'
}

for url in urls:
    payload = {
        'url': url,
        'accuracy_boost': 3
    }

    r = requests.post(
        endpoints.get('face'), # or endpoint.get('face_age_gender')
        data=json.dumps(payload),
        headers=headers
    )

    if r.ok:
        # do something with r.content or r.json()

Надеюсь, это поможет.

...