first commit
This commit is contained in:
62
app/providers/ozon.py
Normal file
62
app/providers/ozon.py
Normal file
@ -0,0 +1,62 @@
|
||||
import requests
|
||||
|
||||
|
||||
def load_all_products(client_id: str, api_key: str):
|
||||
headers = {
|
||||
"Client-Id": client_id,
|
||||
"Api-Key": api_key
|
||||
}
|
||||
|
||||
list_url = "https://api-seller.ozon.ru/v3/product/list"
|
||||
details_url = "https://api-seller.ozon.ru/v4/product/info/attributes"
|
||||
result, last_id = [], ""
|
||||
|
||||
while True:
|
||||
response = requests.post(list_url, headers=headers, json={
|
||||
"filter": {"visibility": "ALL"},
|
||||
"last_id": last_id,
|
||||
"limit": 100
|
||||
})
|
||||
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
|
||||
product_ids = [item["product_id"] for item in data["result"]["items"]]
|
||||
if not product_ids:
|
||||
break
|
||||
|
||||
details_response = requests.post(details_url, headers=headers, json={
|
||||
"filter": {"product_id": product_ids, "visibility": "ALL"},
|
||||
"limit": 100,
|
||||
"sort_dir": "ASC"
|
||||
})
|
||||
|
||||
details_response.raise_for_status()
|
||||
details_data = details_response.json()
|
||||
|
||||
for product in details_data["result"]:
|
||||
attributes_by_id = {
|
||||
attribute["id"]: attribute
|
||||
for attribute in product["attributes"]
|
||||
}
|
||||
|
||||
brands = attributes_by_id.get(5076)
|
||||
colors = attributes_by_id.get(10096)
|
||||
compositions = attributes_by_id.get(6733)
|
||||
|
||||
result.append({
|
||||
"name": product.get("name"),
|
||||
"article": str(product["sku"]),
|
||||
"barcodes": product["barcodes"],
|
||||
"brand": ", ".join(brand["value"] for brand in brands['values']) if brands else None,
|
||||
"color": ", ".join(color["value"] for color in colors['values']) if colors else None,
|
||||
"composition": ", ".join(color["value"] for color in compositions['values']) if compositions else None,
|
||||
"imageUrl": product.get("primary_image")
|
||||
})
|
||||
|
||||
if not data["result"].get("last_id"):
|
||||
break
|
||||
|
||||
last_id = data["result"]["last_id"]
|
||||
|
||||
return result
|
||||
Reference in New Issue
Block a user