2017-01-11 2 views
0

У меня есть список данных, который выглядит как ценам ниже Python как сделать json из строки и вызвать api?

product-0 
product-1 
product-10 
product-100 
product-1000 
product-10000 
product-100000 

Но данные могут превышать более чем 100.

И я хочу сделать апи вызов facebook графа API. Вызов выглядит

ценам ниже
fb_graph_url = api_endpoint+product_catalog_id+"/products?fields=image_url,retailer_id,id&filter={'or':[{'retailer_id':{'eq':'product-0'}},{'retailer_id':{'eq':'product-1'}}]}&access_token="+access_token 

AS вы можете увидеть в апи вызова product-0 и product-1 являются данные из приведенного выше списка.

Чтобы получить все данные за один раз, я использую фильтр в вызове api.

Я хочу сделать json, который выглядит как [{'retailer_id':{'eq':'product-0'}},{'retailer_id':{'eq':'product-1'}}]. Сейчас он содержит только два продукта. Я хочу назвать этот api всеми приведенными выше данными.

Пожалуйста, помогите.

+0

попытались найти в документации разные операторы вместо 'eq' - как' 'start_with ':' product-1'' или' 'contains': 'product-1'' - https: //developers.facebook. com/docs/marketing-api/reference/product-set – furas

+0

BTW: для создания этой строки со всеми элементами вам понадобится только 'for-loop' – furas

ответ

0

Я решил свою проблему с помощью ниже функции-

def call_fb_api(ids): 
api_endpoint = "https://graph.facebook.com/v2.8/" 
filter_param = "filter={'retailer_id':{'is_any':[" + ','.join("'{0}'".format(w.strip()) for w in ids) + "]}}" 
fields_param = "fields=image_url,retailer_id" 
limit_param = "limit=1000" 
token_param = "access_token=" + access_token 
fb_graph_url = api_endpoint + product_catalog_id + "/products?" + limit_param + "&" + fields_param + "&" + filter_param + "&" + token_param 
response = requests.get(fb_graph_url).json() 
return response['data'] 

Спасибо всем за вашу помощь.