woocommerce rest api python получить продукты - PullRequest
0 голосов
/ 01 марта 2020

Мне нужно получить все продукты IDs, которые 'instock', используя python. Это выглядит так:

wcapi.get('products', params={"per_page": 100, 'stock_status': 'instock', 'tag': '1111'}).json()

Этот код работает, но имеет max limit 100 per_page, я не понимаю, как я могу приобрести остальные из них (около 2 000 наименований на складе), и более того, этот запрос возвращает всю информацию о продуктах, но мне нужно только IDs.

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Для решения этой проблемы может быть несколько подходов. Вы можете выбрать все продукты за один вызов или за несколько вызовов в соответствии с вашим сценарием использования, например,

, вы хотите получить 2 тыс. Записей за один вызов.

products = wcapi.get('products', params={'per_page': 2000, 'stock_status': 'instock', 'tag': '1111', 'page': page}).json()

Но вышеприведенный подход недостаточно хорош, поскольку количество продуктов может время от времени меняться, поэтому ограничение продуктов, подлежащих извлечению, не является хорошим решением в долгосрочной перспективе.

Следовательно, лучшим решением является получение сведений о продукте несколькими вызовами

page = 0
products = []
while True:
    prods = wcapi.get('products', params={'per_page': 100, 'stock_status': 'instock', 'tag': '1111', 'page': page}).json()
    page += 1
    if not prods:
        break
    products.append(prods)

После получения всего списка продуктов вы можете получить product_ids, например

product_ids = [product['id'] for product in products]
0 голосов
/ 01 марта 2020

Следуя документам , я вижу, что вы также можете передать параметр page .

Это упрощает итерацию всех страниц:

page = 0
While True:
  products = wcapi.get('products', params={'per_page': 100, 'stock_status': 'instock', 'tag': '1111', 'page': page}).json()
  # retrieve ids from **products**
  if len(products) == 0: # no more products
    break
  page = page + 1

Редактировать: Имейте в виду, что будет обрабатываться на страницу (в данном случае 100) продуктов на л oop.

...