Задать вопрос
Zhe1ka
@Zhe1ka
JavaScript developer

Как сформировать batch запрос в facebook (marketing) api на python?

Всем привет!
Работаю с facebook (marketing) api и нужно сформировать batch запрос использую python-sdk. Вот так выглядит запрос (в документации)

curl -F 'access_token=____'
-F 'batch=[
{
"method": "GET",
"relative_url": "/act_600335/reachestimate?currency=USD&targeting_spec={'countries':['US']}"
},
{
"method": "GET",
"relative_url": "/act_600335/reachestimate?currency=USD&targeting_spec={'countries':['FR']}"
},
{
"method": "GET",
"relative_url": "/act_600335/reachestimate?currency=USD&targeting_spec={'countries':['US'],'zips':['94402']}"
}
]' https://graph.facebook.com

(взято от сюда https://developers.facebook.com/docs/marketing-api...
так работает, но это вариант с curl. Как сделать так же, только на python?
Вот так выглядит вариант с обычным запросом

params = {
'currency': 'USD',
'optimize_for': AdSet.OptimizationGoal.offsite_conversions,
'targeting_spec': targeting_spec,
}
reach_estimate = account.get_reach_estimate(params=params)

facebook-python-sdk плохо задокументирован в использовании batch запросов.
Пытаюсь уже несколько дней разобраться, но все никак. Подскажите, пожалуста, кто знает.
Спасибо.
  • Вопрос задан
  • 589 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
zoonman
@zoonman
⋆⋆⋆⋆⋆
Я не очень силен в Python, но вы можете посмотреть исходники SDK.
https://github.com/facebook/facebook-python-ads-sd...
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
юзай PyCURL
Ответ написан
Комментировать
Zhe1ka
@Zhe1ka Автор вопроса
JavaScript developer
как оказалась, проблема была весьма простая, но столь неочевидная
рабочий пример batch запроса

batch_data = [
        {
            'method': "GET",
            'relative_url': "v2.8/act_668439229891890/reachestimate?currency=USD&optimize_for=OFFSITE_CONVERSIONS&targeting_spec={'geo_locations': {'location_types': ['recent', 'home'], 'countries': ['US']}}",
        }
    ]
    batch_result = []

    def callback(data):
        batch_result.append(data.json()['data']['users'])

    api_batch = api.new_batch()

    for item in batch_data:
        api_batch.add(
            method=item['method'],
            success=callback,
            relative_path=item['relative_url']
        )

    api_batch.execute()


я указывал версию api без буковки "v"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы