Skip to content

Instantly share code, notes, and snippets.

@DxDiagDx
Last active June 28, 2022 10:23
Show Gist options
  • Save DxDiagDx/832f967dcc6579d998c2300853444be0 to your computer and use it in GitHub Desktop.
Save DxDiagDx/832f967dcc6579d998c2300853444be0 to your computer and use it in GitHub Desktop.
Woo API — присваиваем категориям изображения
from config import wcapi
def update_category_image(category):
category_id = category['category_id']
data = {
"image": {
"src": category['image']
}
}
wcapi.put(f"products/categories/{category_id}", data)
print(f'Добавлено изображение {category["image"]} для {category["name"]}')
def get_product_images(category_id):
"""
Проверяем первые 10 товаров в категории.
Если ни у одного товара нет фотографий, возвращаем None.
Значит надо искать причину, почему в категориях у товаров нет фото.
"""
image = None
page = 1
for _ in range(0, 10):
params = (
('category', category_id),
('page', page),
('per_page', 1)
)
response = wcapi.get("products", params=params)
result = response.json()
for item in result:
for key, value in item.items():
if 'images' == key:
if len(value) > 0:
image = value[0]['src']
if image:
break
page += 1
return image
def update_image_categories():
offset = 0
per_page = 20
page = 1
while True:
params = (
("per_page", per_page),
("offset", offset),
("order", "asc"),
("orderby", "id")
)
response = wcapi.get("products/categories", params=params)
result = response.json()
if len(result) == 0:
break
print(f'Получили категории {offset}')
for item in result:
category_id = item['id']
image = None
if item.get('image'):
image = item['image']['src']
category = {
'category_id': category_id,
'name': item['name'],
'parent': item['parent'],
'image': image
}
if category['image'] is None:
image = get_product_images(category_id)
if image:
category['image'] = image
update_category_image(category)
else:
print(f'У категории {category["name"]} уже есть изображение')
offset += per_page
def main():
update_image_categories()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment